Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools
Aufbau Ihrer ersten DevOps-Kette in fünf Schritten für Anfänger.

DevOps ist zu einem Allheilmittel für zu langsame, unzusammenhängende und ansonsten problematische Entwicklungsprozesse geworden. Sie benötigen jedoch nur minimale Kenntnisse in DevOps. Es behandelt Konzepte wie die DevOps-Kette und wie man eine solche in fünf Schritten erstellt. Dies ist kein vollständiger Leitfaden, sondern nur ein „Fisch“, der erweitert werden kann. Beginnen wir mit der Geschichte.

Meine Einführung in DevOps

Früher habe ich bei der Citi Group mit Clouds gearbeitet und eine IaaS-Webanwendung entwickelt, um die Cloud-Infrastruktur von Citi zu verwalten, aber ich war schon immer daran interessiert, wie man die Entwicklungskette optimiert und die Kultur unter Entwicklern verbessert. Greg Lavender, unser CTO für Cloud-Architektur und -Infrastruktur, hat mir dieses Buch empfohlen. Projekt „Phoenix“. Es erklärt die DevOps-Prinzipien wunderbar und liest sich wie ein Roman.

Die Tabelle auf der Rückseite zeigt, wie oft Unternehmen neue Versionen ausrollen:

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Wie schaffen es Amazon, Google und Netflix, so viel auszurollen? Und es ist ganz einfach: Sie haben herausgefunden, wie man eine nahezu perfekte DevOps-Kette erstellt.

Für uns bei Citi war alles ganz anders, bis wir zu DevOps wechselten. Damals hatte mein Team unterschiedliche Umgebungen, aber wir haben die Lieferung an den Entwicklungsserver manuell durchgeführt. Alle Entwickler hatten Zugriff auf nur einen Entwicklungsserver basierend auf IBM WebSphere Application Server Community Edition. Bei einem gleichzeitigen Zustellversuch „stürzte“ der Server und wir mussten jedes Mal „schmerzhaft“ untereinander verhandeln. Außerdem hatten wir eine unzureichende Codeabdeckung durch Tests, einen zeitaufwändigen manuellen Bereitstellungsprozess und keine Möglichkeit, die Bereitstellung des Codes mithilfe einer Aufgabe oder einer Kundenanforderung zu verfolgen.

Es war klar, dass dringend etwas getan werden musste, und ich fand einen gleichgesinnten Kollegen. Wir beschlossen, gemeinsam die erste DevOps-Kette zu erstellen – er richtete eine virtuelle Maschine und einen Tomcat-Anwendungsserver ein, und ich kümmerte mich um Jenkins, die Integration mit Atlassian Jira und BitBucket sowie die Codeabdeckung mit Tests. Das Projekt war erfolgreich: Wir haben die Entwicklungskette vollständig automatisiert, fast 100 % Betriebszeit auf dem Entwicklungsserver erreicht, konnten die Codeabdeckung mit Tests überwachen und verbessern und ein Git-Zweig konnte mit einer Jira-Lieferung und einem Jira-Problem verknüpft werden. Und fast alle Tools, die wir zum Aufbau der DevOps-Kette verwendet haben, waren Open Source.

Tatsächlich wurde die Kette vereinfacht, da wir nicht einmal erweiterte Konfigurationen mit Jenkins oder Ansible angewendet haben. Aber es ist uns gelungen. Vielleicht ist das eine Folge des Prinzips Pareto (auch bekannt als die 80/20-Regel).

Eine kurze Beschreibung der DevOps- und CI/CD-Kette

DevOps hat unterschiedliche Definitionen. DevOps umfasst wie Agile verschiedene Disziplinen. Die meisten werden jedoch der folgenden Definition zustimmen: DevOps ist eine Methode oder ein Lebenszyklus der Softwareentwicklung, deren Hauptprinzip darin besteht, eine Kultur zu schaffen, in der Entwickler und andere Mitarbeiter „auf einer Wellenlänge“ sind, manuelle Arbeit automatisiert ist, Jeder macht das, was er am besten kann, die Häufigkeit der Lieferungen steigt, die Arbeitsproduktivität steigt, die Flexibilität steigt.

Obwohl Tools allein nicht ausreichen, um eine DevOps-Umgebung zu erstellen, sind sie unverzichtbar. Die wichtigsten davon sind Continuous Integration und Continuous Delivery (CI/CD). Für jede Umgebung gibt es unterschiedliche Phasen in der Kette (z. B. DEV (Entwicklung), INT (Integration), TST (Testen), QA (Qualitätssicherung), UAT (Benutzerakzeptanztests), STG (Vorbereitung), PROD (Nutzung)). , manuelle Aufgaben werden automatisiert, Entwickler können hochwertigen Code erstellen, bereitstellen und problemlos neu erstellen.

In diesem Hinweis wird beschrieben, wie Sie mithilfe von Open-Source-Tools in fünf Schritten eine DevOps-Kette erstellen, wie im Bild unten dargestellt.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Kommen wir zur Sache.

Schritt 1: CI/CD-Plattform

Zunächst benötigen Sie ein CI/CD-Tool. Jenkins ist ein vom MIT lizenziertes, in Java geschriebenes Open-Source-CI/CD-Tool, das die DevOps-Bewegung populär gemacht hat und zum De-facto-Standard für CICD geworden ist.

Was ist Jenkins? Stellen Sie sich vor, Sie hätten ein magisches Bedienfeld für eine Vielzahl von Diensten und Tools. Für sich genommen ist ein CI/CD-Tool wie Jenkins nutzlos, aber mit anderen Tools und Diensten wird es allmächtig.

Neben Jenkins gibt es viele andere Open-Source-Tools, wählen Sie eines aus.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

So sieht ein DevOps-Prozess mit einem CI/CD-Tool aus

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Sie haben ein CI/CD-Tool in localhost, aber es gibt noch nicht viel zu tun. Fahren wir mit dem nächsten Schritt fort.

Schritt 2: Versionskontrolle

Der beste (und wohl einfachste) Weg, die Magie eines CI/CD-Tools zu testen, besteht darin, es in ein SCM-Tool (Source Control Management) zu integrieren. Warum benötigen Sie eine Versionskontrolle? Nehmen wir an, Sie stellen einen Antrag. Sie schreiben es in Java, Python, C++, Go, Ruby, JavaScript oder einer anderen Sprache, die ein Wagen und ein kleiner Karren ist. Was Sie schreiben, wird Quellcode genannt. Insbesondere wenn Sie alleine arbeiten, können Sie zunächst alles in einem lokalen Verzeichnis speichern. Aber wenn das Projekt wächst und mehr Leute beitreten, brauchen Sie eine Möglichkeit, Codeänderungen zu teilen, aber Konflikte beim Zusammenführen von Änderungen zu vermeiden. Und Sie müssen auch frühere Versionen irgendwie wiederherstellen, ohne Backups zu verwenden und die Methode zum Kopieren und Einfügen für Codedateien zu verwenden.

Und hier ohne SCM irgendwo. Der SCM speichert Code in Repositories, verwaltet Versionen davon und koordiniert ihn unter den Entwicklern.

Es gibt viele SCM-Tools, aber Git ist zu Recht zum De-facto-Standard geworden. Ich empfehle Ihnen, es zu verwenden, aber es gibt auch andere Möglichkeiten.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

So sieht die DevOps-Pipeline nach dem Hinzufügen des SCM aus.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Das CI/CD-Tool kann das Hoch- und Herunterladen von Quellcode sowie die Teamzusammenarbeit automatisieren. Nicht schlecht? Aber wie kann man daraus nun eine funktionierende Anwendung machen, die von Milliarden von Benutzern geliebt wird?

Schritt 3: Automatisierungstool erstellen

Alles läuft wie es soll. Sie können Code hochladen, Änderungen an der Quellcodeverwaltung festschreiben und Freunde einladen, mit Ihnen zusammenzuarbeiten. Aber Sie haben noch keine App. Damit es sich hierbei um eine Webanwendung handelt, muss sie für die Verteilung kompiliert und gepackt oder als ausführbare Datei ausgeführt werden. (Eine interpretierte Programmiersprache wie JavaScript oder PHP muss nicht kompiliert werden.)

Verwenden Sie ein Build-Automatisierungstool. Für welches Tool Sie sich auch entscheiden, es stellt den Code im richtigen Format zusammen und automatisiert die Bereinigung, Kompilierung, Prüfung und Bereitstellung. Build-Tools variieren je nach Sprache, die folgenden Open-Source-Optionen werden jedoch häufig verwendet.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Perfekt! Fügen wir nun die Konfigurationsdateien des Build-Automatisierungstools in die Quellcodeverwaltung ein, damit das CI/CD-Tool sie erstellt.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Es fühlt sich gut an. Aber wo soll das alles jetzt umgesetzt werden?

Schritt 4: Webanwendungsserver

Sie verfügen also über eine gepackte Datei, die ausgeführt oder ausgerollt werden kann. Damit eine Anwendung wirklich nützlich ist, muss sie über einen Dienst oder eine Schnittstelle verfügen, aber Sie müssen alles irgendwo unterbringen.

Eine Webanwendung kann auf einem Webanwendungsserver gehostet werden. Der Anwendungsserver bietet eine Umgebung, in der Sie gepackte Logik ausführen, Schnittstellen rendern und Webdienste über einen Socket verfügbar machen können. Für die Installation des Anwendungsservers benötigen Sie einen HTTP-Server und einige weitere Umgebungen (z. B. eine virtuelle Maschine). Nehmen wir zunächst einmal an, dass Sie sich mit all dem befassen (obwohl ich weiter unten auf Container eingehen werde).

Es gibt mehrere offene Webanwendungsserver.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Wir haben bereits eine fast funktionierende DevOps-Kette. Ausgezeichnete Arbeit!

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Im Prinzip können Sie hier aufhören und dann selbst damit umgehen, aber es lohnt sich, über die Qualität des Codes zu sprechen.

Schritt 5: Testen Sie die Abdeckung

Das Testen erfordert viel Zeit und Mühe, aber es ist besser, Fehler sofort zu finden und den Code zu verbessern, um die Endbenutzer zufrieden zu stellen. Zu diesem Zweck gibt es viele offene Tools, die den Code nicht nur testen, sondern auch Hinweise zur Verbesserung geben. Die meisten CI/CD-Tools können in diese Tools integriert werden und den Prozess automatisieren.

Das Testen gliedert sich in zwei Teile: Test-Frameworks zum Schreiben und Ausführen von Tests und Tools mit Hinweisen zur Verbesserung der Codequalität.

Testen von Frameworks

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Werkzeuge mit Qualitätsspitzen

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

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 die Testabdeckungstools angewendet und jetzt sollte die DevOps-Pipeline wie auf dem Bild am Anfang des Tutorials aussehen.

Zusätzliche Schritte

Container

Wie ich bereits sagte, kann ein Anwendungsserver in einer virtuellen Maschine oder einem Server gehostet werden, Container sind jedoch beliebter.

Was sind Container?? Kurz gesagt: In einer virtuellen Maschine nimmt das Betriebssystem oft mehr Platz ein als die Anwendung, und ein Container mit ein paar Bibliotheken und Konfigurationen reicht normalerweise aus. In manchen Fällen sind virtuelle Maschinen unverzichtbar, der Container kann jedoch ohne zusätzliche Kosten die Anwendung zusammen mit dem Server aufnehmen.

Für Container werden in der Regel Docker und Kubernetes verwendet, es gibt jedoch auch andere Möglichkeiten.

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Lesen Sie Artikel über Docker und Kubernetes unter Opensource.com:

Middleware-Automatisierungstools

Unsere DevOps-Kette konzentriert sich auf die gemeinsame Erstellung und Bereitstellung einer Anwendung, aber es gibt noch andere interessante Dinge, die Sie mit DevOps-Tools tun können. Verwenden Sie beispielsweise IaC-Tools (Infrastructure as Code), auch Middleware-Automatisierungstools genannt. Diese Tools helfen bei der Automatisierung der Installation, Verwaltung und anderer Aufgaben für Middleware. Ein Automatisierungstool kann beispielsweise Anwendungen (Webanwendungsserver, Datenbank, Überwachungstools) mit den richtigen Konfigurationen an den Anwendungsserver übertragen.

Hier sind einige Optionen für offene Middleware-Automatisierungstools:

Dummies-Leitfaden: Aufbau von DevOps-Ketten mit Open-Source-Tools

Details in den Artikeln Opensource.com:

Und was jetzt?

Dies ist nur die Spitze des Eisbergs. Die DevOps-Kette kann noch viel mehr. Beginnen Sie mit einem CI/CD-Tool und sehen Sie, was Sie sonst noch automatisieren können, um Ihre Arbeit zu erleichtern. Vergiss es nicht offene Kommunikationsmittel für eine effektive Zusammenarbeit.

Hier sind einige weitere gute DevOps-Artikel für Anfänger:

Sie können DevOps auch mit offenen agilen Tools integrieren:

Source: habr.com

Kommentar hinzufügen