
Erstellen Ihrer ersten DevOps-Kette in fünf Schritten für Anfänger.
DevOps hat sich als Lösung für langsame, isolierte und andere problematische Entwicklungsprozesse etabliert. Es sind jedoch grundlegende Kenntnisse in DevOps erforderlich. In diesem Artikel werden Konzepte wie die DevOps-Kette und deren Erstellung in fünf Schritten behandelt. Dies ist kein umfassendes Handbuch, sondern lediglich ein 'Prototyp', den man erweitern kann. Lassen Sie uns mit der Geschichte beginnen.
Meine Begegnung mit DevOps
Früher arbeitete ich bei Citi Group mit Cloud-Technologien und entwickelte eine IaaS-Webanwendung, um die Cloud-Infrastruktur von Citi zu verwalten. Ich war jedoch immer daran interessiert, wie man den Entwicklungsprozess optimieren und die Kultur unter Entwicklern verbessern kann. Greg Lavender, unser Tech Director für Cloud-Architektur und Infrastruktur, empfahl mir das Buch . Es erklärt die Prinzipien von DevOps hervorragend und liest sich wie ein Roman.
Die Tabelle auf der Rückseite zeigt, wie oft Unternehmen neue Versionen veröffentlichen:
Wie schaffen es Amazon, Google und Netflix, so viele Releases durchzuführen? Ganz einfach: Sie haben verstanden, wie man eine nahezu perfekte DevOps-Kette erstellt.
Bei Citi war alles ganz anders, bis wir auf DevOps umgestiegen sind. Zu diesem Zeitpunkt hatte mein Team verschiedene Umgebungen, aber die Bereitstellung auf den Entwicklungserver erfolgte manuell. Alle Entwickler hatten Zugriff auf nur einen einzigen Entwicklungserver, der auf IBM WebSphere Application Server Community Edition basierte. Bei gleichzeitigem Bereitstellungsversuch ist der Server „abgestürzt“, und wir mussten uns jedes Mal „schmerzlich“ einigen. Zudem hatten wir unzureichende Testabdeckung, einen zeitaufwändigen manuellen Bereitstellungsprozess und keine Möglichkeit, die Bereitstellung von Code anhand einer spezifischen Aufgabe oder Kundenanforderung nachzuverfolgen.
Es war klar, dass wir dringend etwas unternehmen mussten, und ich fand einen gleichgesinnten Kollegen. Wir beschlossen, gemeinsam die erste DevOps-Pipeline zu erstellen – er richtete die virtuelle Maschine und den Tomcat-Anwendungsserver ein, während ich mich um Jenkins, die Integration mit Atlassian Jira und BitBucket sowie um die Testabdeckung kümmerte. Das Projekt war erfolgreich: Wir automatisierten die gesamte Entwicklungskette, erreichten nahezu 100% Betriebszeit des Entwicklungsservers, konnten die Testabdeckung überwachen und verbessern, und der Git-Zweig konnte mit dem Deployment und der Jira-Aufgabe verknüpft werden. Fast alle Tools, die wir für die DevOps-Pipeline verwendeten, waren Open Source.
Tatsächlich war die Pipeline vereinfacht, da wir nicht einmal erweiterte Konfigurationen mit Jenkins oder Ansible angewendet hatten. Aber es hat funktioniert. Vielleicht ist das das Ergebnis des Prinzips (auch bekannt als 80/20-Regel).
Kurze Beschreibung der DevOps-Pipeline und CI/CD
DevOps hat verschiedene Definitionen. Wie auch Agile umfasst DevOps verschiedene Disziplinen. Dennoch sind sich die meisten einig über folgende Definition: DevOps ist eine Methode oder ein Lebenszyklus der Softwareentwicklung, dessen Hauptprinzip darin besteht, eine Kultur zu schaffen, in der Entwickler und andere Mitarbeiter „auf der gleichen Wellenlänge“ sind, manuelle Arbeit automatisiert wird, jeder das Beste aus seinen Fähigkeiten einbringen kann, die Lieferfrequenz steigt, die Produktivität zunimmt und die Flexibilität erhöht wird.
Obwohl Werkzeuge allein nicht ausreichen, um eine DevOps-Umgebung zu schaffen, sind sie unerlässlich. Das Wichtigste darunter ist die kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD). In der Kette gibt es verschiedene Phasen für jede Umgebung (zum Beispiel DEV (Entwicklung), INT (Integration), TST (Test), QA (Qualitätssicherung), UAT (Benutzerakzeptanztest), STG (Staging), PROD (Produktion)), manuelle Aufgaben werden automatisiert, Entwickler können qualitativ hochwertigen Code erstellen, liefern und sich leicht anpassen.
Diese Notiz beschreibt, wie man in fünf Schritten eine DevOps-Pipeline erstellt, wie auf dem Bild unten dargestellt, unter Verwendung von Open-Source-Tools.
Kommen wir zur Sache.
Schritt 1: CI/CD-Plattform
Zunächst benötigen Sie ein CI/CD-Tool. Jenkins ist ein Open-Source-CI/CD-Tool, das in Java geschrieben ist und unter der MIT-Lizenz steht. Es gilt als Pionier der DevOps-Bewegung und ist de facto der Standard für CI/CD.
Was ist Jenkins? Stellen Sie sich vor, Sie haben eine magische Fernbedienung für verschiedene Dienste und Tools. An sich ist ein CI/CD-Tool wie Jenkins nutzlos, aber in Kombination mit verschiedenen Werkzeugen und Diensten wird es allmächtig.
Neben Jenkins gibt es viele andere Open-Source-Tools; wählen Sie beliebig aus.
So sieht der DevOps-Prozess mit einem CI/CD-Tool aus.
Sie haben ein CI/CD-Tool auf localhost, aber es gibt derzeit nicht viel zu tun. Kommen wir zum nächsten Schritt.
Schritt 2: Versionskontrolle
Der einfachste Weg, die Magie eines CI/CD-Werkzeugs zu überprüfen, besteht darin, es mit einem Versionskontrollsystem (source control management, SCM) zu integrieren. Warum ist Versionskontrolle wichtig? Angenommen, Sie entwickeln eine Anwendung. Sie schreiben sie in Java, Python, C++, Go, Ruby, JavaScript oder in einer beliebigen anderen Sprache – und davon gibt es viele. Das, was Sie erstellen, wird als Quellcode bezeichnet. Anfangs, besonders wenn Sie alleine arbeiten, können Sie alles in einem lokalen Verzeichnis speichern. Doch wenn das Projekt wächst und mehr Personen hinzukommen, benötigen Sie eine Methode, um Änderungen im Code zu teilen, ohne Konflikte beim Zusammenführen zu riskieren. Zudem müssen Sie in der Lage sein, frühere Versionen wiederherzustellen, ohne auf Backups und das Kopieren und Einfügen von Dateiinhalten zurückgreifen zu müssen.
Hier kommt SCM ins Spiel. SCM speichert den Code in Repositories, verwaltet die Versionen und koordiniert ihn unter den Entwicklern.
Es gibt viele SCM-Tools, aber de facto hat sich Git als Standard etabliert. Ich empfehle diesen, es gibt jedoch auch andere Optionen.

So sieht die DevOps-Pipeline nach der Integration von SCM aus.
Das CI/CD-Tool kann das Hochladen und Herunterladen von Quellcode sowie die Zusammenarbeit im Team automatisieren. Nicht schlecht, oder? Aber wie verwandeln wir das jetzt in eine funktionierende Anwendung, die von Milliarden von Nutzern geliebt wird?
Schritt 3: Automatisierung des Build-Tools
Alles läuft wie geplant. Sie können den Code hochladen und Änderungen im Versionskontrollsystem festhalten sowie Freunde einladen, mit Ihnen zusammenzuarbeiten. Doch bisher haben Sie noch keine Anwendung. Damit es eine Webanwendung wird, muss sie kompiliert und in ein Paket für die Bereitstellung aufgenommen oder als ausführbare Datei gestartet werden. (Eine interpretierte Programmiersprache wie JavaScript oder PHP muss nicht kompiliert werden.)
Verwenden Sie das Build-Automatisierungstool. Egal welches Tool Sie auswählen, es wird den Code im richtigen Format zusammenstellen und die Reinigung, Kompilierung, Tests und Bereitstellung automatisieren. Es gibt verschiedene Build-Tools, abhängig von der Programmiersprache, aber normalerweise werden folgende Open-Source-Optionen verwendet.

Ausgezeichnet! Jetzt fügen wir die Konfigurationsdateien des Automatisierungstools in das Versionskontrollsystem ein, damit das CI/CD-Tool sie zusammenstellt.
Es scheint alles in Ordnung zu sein. Aber wo sollen wir das jetzt bereitstellen?
Schritt 4: Webanwendungsserver
Also, Sie haben eine verpackte Datei, die ausführbar ist oder bereitgestellt werden kann. Damit die Anwendung wirklich sinnvoll ist, muss sie einen Dienst oder eine Schnittstelle haben, aber Sie müssen alles irgendwo unterbringen.
Eine Webanwendung kann auf einem Webanwendungsserver bereitgestellt werden. Der Anwendungsserver bietet eine Umgebung, in der die Programmlogik aus dem Paket ausgeführt, die Benutzeroberfläche gerendert und Webdienste über Sockets geöffnet werden können. Sie benötigen einen HTTP-Server und einige andere Umgebungen (zum Beispiel eine virtuelle Maschine), um den Anwendungsserver einzurichten. Lassen Sie uns vorerst annehmen, dass Sie sich in diesem Prozess schon zurechtfinden (obwohl ich später mehr über Container erzählen werde).
Es gibt mehrere Open-Source-Webanwendungsserver.
Wir haben bereits eine fast funktionierende DevOps-Pipeline. Tolle Arbeit!
Im Prinzip können Sie hier anhalten, Sie schaffen das weitere selbst, aber es lohnt sich, auch über die Codequalität zu sprechen.
Schritt 5: Testabdeckung
Das Testen erfordert viel Zeit und Mühe, aber es ist besser, Fehler frühzeitig zu finden und den Code zu verbessern, um die Endbenutzer zufriedenzustellen. Dafür gibt es viele Open-Source-Tools, die nicht nur den Code testen, sondern auch Ratschläge zur Verbesserung bieten. Die meisten CI/CD-Tools können mit diesen Tools verbunden werden, um den Prozess zu automatisieren.
Das Testen gliedert sich in zwei Bereiche: Test-Frameworks, um Tests zu schreiben und auszuführen, und Tools mit Hinweisen zur Verbesserung der Codequalität.
Test-Frameworks
Tools mit Hinweisen zur Qualität
Die meisten dieser Tools und Frameworks sind für Java, Python und JavaScript geschrieben, da C++ und C# proprietär sind (obwohl GCC Open Source ist).
Wir haben Werkzeuge zur Testabdeckung angewendet, und jetzt sollte die DevOps-Pipeline wie im Bild zu Beginn des Leitfadens aussehen.
Zusätzliche Schritte
Container
Wie bereits erwähnt, kann der Anwendungsserver auf einer virtuellen Maschine oder einem Server gehostet werden, aber Container sind beliebter.
? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.
Für Container werden normalerweise Docker und Kubernetes verwendet, obwohl es auch andere Optionen gibt.
Lesen Sie die Artikel über Docker und Kubernetes auf :
Middleware-Automatisierungswerkzeuge
Unsere DevOps-Pipeline ist auf die kollaborative Erstellung und Bereitstellung von Anwendungen ausgerichtet, aber mit DevOps-Tools können Sie auch viele andere interessante Dinge tun. Zum Beispiel können Sie "Infrastructure as Code" (IaC) nutzen, auch bekannt als Middleware-Automatisierungswerkzeuge. Diese Werkzeuge helfen dabei, die Installation, Verwaltung und weitere Aufgaben für Middleware zu automatisieren. Ein Automatisierungswerkzeug kann beispielsweise Anwendungen (Webanwendungsserver, Datenbanken, Überwachungswerkzeuge) mit den richtigen Konfigurationen aufnehmen und sie auf dem Anwendungsserver bereitstellen.
Hier sind einige Optionen für offene Middleware-Automatisierungswerkzeuge:

Details in den Artikeln auf :
Und was jetzt?
Das ist nur die Spitze des Eisbergs. Die DevOps-Kette kann noch viel mehr. Fangen Sie mit einem CI/CD-Tool an und entdecken Sie, was Sie sonst noch automatisieren können, um Ihre Arbeit zu erleichtern. Vergessen Sie nicht die für effektive Zusammenarbeit.
Hier sind einige weitere gute Artikel über DevOps für Einsteiger:
Außerdem können Sie DevOps mit offenen Werkzeugen für Agile integrieren:
Quelle: habr.com
