CodeGym /Kurse /Frontend SELF DE /Code auf den Server bereitstellen

Code auf den Server bereitstellen

Frontend SELF DE
Level 48 , Lektion 2
Verfügbar

12.1 Änderungen am Code vornehmen

Wie ich schon oben sagte, besteht die gesamte moderne Entwicklung darin, kleine Änderungen am Code vorzunehmen. Dies tun Millionen von Programmierern seit Jahrzehnten, daher ist dieser Prozess bereits auf jede erdenkliche Weise optimiert, standardisiert und formalisiert.

Erstens gibt es für die Speicherung von Code ein spezielles Programm – Git. Git – ist ein verteiltes Versionskontrollsystem, das verwendet wird, um Änderungen im Code nachzuverfolgen und die Arbeit von Programmierern an gemeinschaftlichen Projekten zu koordinieren.

Git ermöglicht es Entwicklern, Zweige im Projekt zu erstellen und dabei die vollständige Änderungshistorie und die Möglichkeit zur Rückkehr zu jedem Datei-Zustand zu bewahren. Dies gewährleistet eine effektive Zusammenführung von Änderungen und Konfliktlösung, wodurch Git zum Hauptwerkzeug für die Zusammenarbeit an Code in der modernen Softwareentwicklung wird.

Zweitens ist auch der Prozess der Änderung von Code standardisiert. Normalerweise erstellen Sie für jedes neue Feature einen neuen Zweig in Git, nehmen Ihre Änderungen in Form einer Serie von Commits vor und senden dann eine Pull Request an Ihren Teamleiter oder einen Teamkollegen, damit er ein Code Review durchführt und Ihre Änderungen bestätigt.

Wenn alles gut geht, werden Ihre Änderungen in den dev-Zweig übernommen, ein automatischer Build des Projekts und Tests werden gestartet. Viele Tests.

12.2 Projekt bauen

Bevor das Projekt getestet oder auf den Server hochgeladen wird, muss es gebaut werden.

Projekt-Building – ist der Prozess der Kompilierung des Quellcodes des Projekts in ausführbare Programme oder andere ausführbare Formate, oft unter Einbeziehung von Tests und Bereitstellung. Dies ist ein wesentlicher Aspekt der Softwareentwicklung, der sicherstellt, dass das Programm einsatzbereit ist.

Ein Build ist nicht einfach eine Kompilierung, aber die Kompilierung ist oft ein Teil des Build-Prozesses. Nach Abschluss des Builds haben Sie oft Dutzende oder sogar Hunderte von Dateien, die auf verschiedene Server hochgeladen werden müssen.

Build-Tools können niedrigstufig sein:

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

Apache Ant – ein weiteres Tool zum Bauen von Java-Projekten, bietet große Flexibilität beim Schreiben von Build-Skripten.

MSBuild – wird zum Bauen von Projekten verwendet, die mit Microsoft Visual Studio erstellt wurden.

Make – ein klassisches Build-Tool, das Makefile zur Definition von Build-Regeln verwendet und besonders beliebt in C und C++ Projekten ist.

Webpack – wird oft zum Bauen von JavaScript-Anwendungen verwendet, indem es Abhängigkeiten und Module verwaltet.

Gulp und Grunt – sind Werkzeuge, die helfen, häufige Aufgaben in der Webentwicklungsumgebung zu automatisieren, wie die Minimierung von Dateien und die Kompilierung von SCSS zu CSS.

Es gibt auch höherstufige Build-Tools. Mehr dazu weiter unten.

12.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) – ist eine Methodik, die kontinuierliches Merging (Zusammenführen) von Änderungen aus allen Entwicklungszweigen in den Hauptzweig sowie automatisiertes Testen und Bereitstellen dieser Änderungen vorsieht. Dies ermöglicht das schnelle Identifizieren und Beheben von Fehlern, wodurch die Effizienz und Geschwindigkeit der Entwicklung erhöht werden.

Eines der am weitesten verbreiteten, wenn auch etwas veralteten CI/CD-Systeme ist Jenkins. Wenn du in einem kleinen Unternehmen arbeitest, wird es mit einer Wahrscheinlichkeit von 80% verwendet.

Jenkins – ein beliebtes automatisiertes System, das für kontinuierliche Integration und Lieferung (CI/CD) verwendet wird. Jenkins ermöglicht die Automatisierung verschiedener Stadien der Softwareentwicklung, einschließlich Build, 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 fünf weitere Auswahlmöglichkeiten:

TeamCity – ein leistungsstarkes kommerzielles System von JetBrains, bietet tiefe Integration mit verschiedenen Entwicklungs- und Testumgebungen.

GitLab CI – ein integrierter Bestandteil von GitLab, bietet kontinuierliche Integration und Lieferung mit der Möglichkeit der Konfiguration über YAML-Dateien.

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

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

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

Diese zu kennen und mit ihnen arbeiten zu können, ist nicht notwendig: Meistens gibt es in der Firma einen DevOps-Spezialisten, der all diese Build-Prozesse einrichtet. Du musst nur wissen, dass sie existieren und verstehen, wovon die Rede ist, wenn Jenkins, CI/CD oder „Continuous Integration“ erwähnt werden.

12.4 Projekt auf den Server bereitstellen

Es reicht nicht aus, ein Projekt zu schreiben, es muss auch auf deinem Server landen. Generell ist der Deploy (Bereitstellen) eines Projekts auf einem Server der Prozess, ein Webanwendungsprojekt auf einem Server zu platzieren und zu aktivieren, sodass es Benutzern über das Internet zugänglich ist.

Dies umfasst das Übertragen von Projektdateien auf den Server, das Konfigurieren der Serverumgebung, Datenbanken, Abhängigkeiten sowie das Einrichten von Netzwerkeinstellungen und Sicherheit.

Und wie denkst du, wird dein Code auf den Server gelangen? Wird ihn jemand dort hochladen? Oder vielleicht wirst du über SSH auf den entfernten Server zugreifen, ein paar Dateien hochladen und alles einrichten? Entspann dich: Das macht heute niemand mehr. Jetzt gibt es Docker.

Docker – ist eine Plattform zur Entwicklung, Lieferung und Ausführung von Anwendungen durch Containerisierung. Docker erleichtert das Erstellen, Bereitstellen und Ausführen von Anwendungen mit Containern, die es ermöglichen, eine Anwendung mit ihrer gesamten Umgebung und ihren Abhängigkeiten in einem kompakten Objekt zu paketieren, das für Konsistenz in allen Stadien der Entwicklung, des Testens und der Produktion sorgt.

Docker ermöglicht es, dein Projekt oder Projekte in einem Docker-Container zu verpacken. Das ist so etwas wie eine virtuelle Maschine, nur sehr leichtgewichtig.

Und obwohl du auf jedem Docker-Forum, wenn du es als virtuelle Maschine bezeichnest, mit Pantoffeln beworfen wirst, kannst du, wenn du weißt, was eine virtuelle Maschine ist, über einen Docker-Container als eine Art virtuelle Maschine nachdenken. Nur eben sehr leichtgewichtig.

Im Wesentlichen ist ein Docker-Container eine virtuelle „virtuelle Maschine“. Virtuelle Maschinen enthalten eine vollständige Kopie des Betriebssystems, des Kernels des Betriebssystems und der virtuellen Hardware, während Docker-Container den Host-Kernel teilen können und leichter und schneller sein können.

Und der Deploy eines Projekts mit Docker vereinfacht den Bereitstellungsprozess von Anwendungen erheblich und sorgt für Geschwindigkeit und Zuverlässigkeit. Das Projekt wird in Docker-Container verpackt, die leicht auf jedem System, das Docker unterstützt, verschoben und ausgeführt werden können.

Dies beseitigt Probleme, die sich aus Unterschieden in Serverumgebungen ergeben, und erlaubt es, die Anwendung einfach zu skalieren, indem Container entsprechend der Last hinzugefügt oder entfernt werden. Alle sind zu Docker gewechselt – das ist sehr bequem und sehr einfach.

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