CodeGym /Kurse /Python SELF DE /Code auf den Server deployen

Code auf den Server deployen

Python SELF DE
Level 64 , Lektion 2
Verfügbar

3.1 Änderungen am Code vornehmen

Wie ich oben schon gesagt habe, läuft die Softwareentwicklung darauf hinaus, kleine Änderungen am Code vorzunehmen. Diesen Prozess führen Millionen von Programmierern seit Jahrzehnten durch, was zu einer gründlichen Optimierung, Standardisierung und Formalisierung in allen möglichen Aspekten geführt hat.

Zum Speichern von Code gibt es ein spezielles Programm – Git. Git ist ein verteiltes Versionskontrollsystem. Es speichert nicht nur den Code ab, sondern verfolgt alle Änderungen darin und hilft Programmierern, gemeinsam an Projekten zu arbeiten, ohne sich gegenseitig zu stören.

Mit Git können Entwickler verschiedene Versionen eines Projekts (Branches) erstellen, die vollständige Änderungsverlauf speichern und sogar zu einem beliebigen Zeitpunkt in der Vergangenheit zurückkehren. Es ist wie eine Zeitmaschine für den Code! Git hilft, Änderungen zu integrieren und Konflikte zu lösen, daher ist es das Hauptwerkzeug für Teamarbeit in der modernen Entwicklung.

3.2 Projekt zusammenstellen

Bevor ein Projekt getestet oder auf den Server geladen wird, muss es zusammengebaut werden.

Projektbau – ist der Prozess der Kompilierung des Quellcodes des Projekts in ausführbare Programme oder andere ausführbare Formate, oft mit Tests und Bereitstellung. Es ist ein wesentlicher Aspekt der Softwareentwicklung, der sicherstellt, dass das Programm einsatzbereit ist.

Das Zusammenstellen ist nicht nur Kompilierung, auch wenn die Kompilierung oft ein Teil des Prozesses ist. Nach Abschluss des Baus können Sie Dutzende oder sogar Hunderte von Dateien haben, die auf verschiedene Server hochgeladen werden müssen.

Es gibt Low-Level-Build-Tools wie:

Maven und Gradle – werden häufig in Java-Projekten zur Verwaltung von Abhängigkeiten und zum Bauen von Projekten verwendet.

Apache Ant – ein weiteres Werkzeug für den Bau von Java-Projekten, es bietet große Flexibilität beim Schreiben von Build-Skripten.

MSBuild – wird verwendet, um Projekte zu bauen, die mit Microsoft Visual Studio erstellt wurden.

Make – ein klassisches Build-Werkzeug, das Makefile verwendet, um Build-Regeln zu definieren, besonders beliebt in C und C++ Projekten.

Webpack – wird häufig zum Aufbau von JavaScript-Anwendungen verwendet, indem es Abhängigkeiten und Module verwaltet.

Gulp und Grunt – Werkzeuge, die helfen, häufig ausgeführte Aufgaben in der Web-Anwendungsentwicklung zu automatisieren, wie z.B. Datei-Minifizierung und SCSS zu CSS-Kompilierung.

Es gibt auch High-Level-Build-Tools. Mehr dazu weiter unten.

3.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) – ist eine Methodik, die kontinuierliche Integration von Änderungen aus allen Entwicklungszweigen in den Hauptzweig und die automatische Test- und Bereitstellung dieser Änderungen beinhaltet. Dies ermöglicht es, Fehler schnell zu identifizieren und zu beheben, was die Effizienz und Geschwindigkeit der Entwicklung erhöht.

Eines der am häufigsten verwendeten, wenn auch etwas veralteten CI/CD-Systeme ist Jenkins. Wenn du in einem kleinen Unternehmen arbeitest, besteht eine 80%ige Wahrscheinlichkeit, dass es verwendet wird.

Jenkins – ein beliebtes automatisiertes System, das für kontinuierliche Integration und Lieferung (CI/CD) verwendet wird. Jenkins ermöglicht die Automatisierung verschiedener Entwicklungsstufen der Software, einschließlich Bau, Test und Bereitstellung, was die Codequalität verbessert und den Entwicklungsprozess beschleunigt.

Wenn du in ein großes Unternehmen kommst, gibt es dort vielleicht noch 5 andere Optionen zur Auswahl:

TeamCity – ein leistungsfähiges kommerzielles System von JetBrains. Es bietet eine tiefe Integration mit verschiedenen Entwicklungs- und Testumgebungen.

GitLab CI – ein integraler Bestandteil von GitLab, es bietet kontinuierliche Integration und Lieferung mit Anpassungsmöglichkeiten durch YAML-Dateien.

CircleCI – ein Cloud-Service für CI/CD, unterstützt die Automatisierung von Tests und Bereitstellung für viele Projekte.

Travis CI – einer der ersten Cloud-CI-Dienste, der in vielen Open-Source-Projekten verwendet wird. Es integriert sich gut mit GitHub.

Bamboo – ein Produkt von Atlassian, eng integriert mit anderen Tools dieser Firma, wie Jira und Bitbucket.

Diese zu kennen und mit ihnen umgehen zu können, ist für dich nicht nötig – normalerweise gibt es in Unternehmen DevOps-Spezialisten, die alle diese Prozesse einrichten. Du musst nur wissen, dass sie existieren, und verstehen, worüber gesprochen wird, wenn Jenkins, CI/CD oder „Continuous Integration“ erwähnt werden.

3.4 Projekt auf den Server liefern

Ein Projekt zu schreiben, ist nicht genug – es muss auch auf deinem Server verfügbar sein. Generell ist die Bereitstellung (deployen) eines Projekts auf einem Server der Prozess, bei dem eine Webanwendung auf einem Server so platziert und aktiviert wird, dass sie Benutzern über das Internet zugänglich ist.

Dieser Prozess beinhaltet den Transfer von Projektdateien auf den Server, die Einrichtung der Serverumgebung, von Datenbanken, Abhängigkeiten sowie die Konfiguration der Netzwerkeinstellungen und der Sicherheit.

Und was denkst du, wie wird dein Code auf den Server gelangen? Wird ihn jemand dorthin hochladen? Oder wirst du dich vielleicht per SSH mit dem Remote-Server verbinden, ein paar Dateien hochladen und alles einstellen? Entspann dich: das macht niemand mehr. Jetzt gibt es Docker.

Docker – ist eine Plattform für die Entwicklung, Lieferung und den Betrieb von Anwendungen mithilfe von Containern. Docker vereinfacht das Erstellen, Bereitstellen und Ausführen von Anwendungen, indem es sie zusammen mit allen Abhängigkeiten und Umgebungen in einen einzigen kompakten Objekt verpackt. Dies gewährleistet Konsistenz der Umgebung in allen Phasen: von der Entwicklung bis zum Testen und in die Produktion.

Docker ermöglicht es, dein Projekt oder Projekte in einem Docker-Container zu verpacken. Es ist eine Art von virtueller Maschine.

Und obwohl dich in jedem Docker-Forum jemand mit Schuhen bewerfen würde, wenn du es als "virtuelle Maschine" bezeichnest, kann man über einen Docker-Container genau wie über eine virtuelle Maschine denken. Nur viel leichter.

Im Grunde, ein Docker-Container ist eine „virtuelle virtuelle Maschine“. Virtuelle Maschinen beinhalten eine vollständige Kopie des Betriebssystems, des OS-Kernels, und virtuelle Hardware, während Docker-Container den Kernel des Hosts teilen und leichter und schneller sein können.

Das Deployen eines Projekts mit Docker vereinfacht den Prozess erheblich, indem es Geschwindigkeit und Zuverlässigkeit gewährleistet. Das Projekt wird in Docker-Container verpackt, die sich einfach verschieben und auf jedem System ausführen lassen, das Docker unterstützt.

Dies beseitigt Probleme, die mit Unterschieden in den Serverumgebungen verbunden sind, und ermöglicht es, die Anwendung einfach zu skalieren, indem man Container gemäß der Last hinzufügt oder entfernt. Jeder ist auf Docker umgestiegen – es ist sehr bequem und sehr einfach.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION