werkstatt,

Michael

DevOps automation

DevOps automation

verwandte Artikel

Cloud

tags

devops

Teilen

Verfasst von Michael
Infrastructure & Automation master

Da unsere Teamautomatisierung ein Ausgangspunkt ist, entwerfen wir immer einen automatisierten Entwicklungsprozess. Lassen Sie uns herausfinden, wie wir das machen.

Wenn wir uns in den ersten Phasen des Projekts um die Automatisierung kümmern, können wir einfach viel Zeit und Geld in den Nestphasen des Projekts sparen. Unser Ziel ist es, alles zu automatisieren und keine Humanressourcen für wiederholbare und teure Aktivitäten wie Bereitstellung, Erstellung von Infrastrukturen, Testen und Überprüfen unserer Software zu verwenden. Heutzutage verfügen wir über viele großartige Tools und Techniken, um dieses Ziel zu erreichen und Software mit möglicherweise bester Qualität bereitzustellen und zu warten.

Source Code Projekte

Wir verwenden GitLab GitLab als Quellcode-Repository, das auf der Git-Technologie basiert. Mit dem Start eines neuen Projekts bereiten wir die richtige Projekt- und Gruppenstruktur in Abhängigkeit von den Projektanforderungen vor.

Projects structure

projects structure
Figure 1. Projekte

Unser Beispielprojekt hat folgende Struktur:

  • device - Untergruppe für IoT-Projekte, die auf elektronischen Karten bereitgestellt werden

  • intern - Untergruppe für UX, Projektinformationen, Dokumentationen

  • dashboard - Untergruppe für Dashboard-Anwendung, UI-Teil, Erstellung von Microservices und Infrastrukturen

  • public - Untergruppe für öffentliche Ressourcen wie Webseiten- und Infrastrukturerstellung für diesen Bereich

Natürlich ist die Namenskonvention sehr wichtig und wir müssen uns daran erinnern, dass schlechte Namen am Anfang später große Auswirkungen auf das Verständnis anderer Teammitglieder und Kunden haben können. Es wird empfohlen, Beispielprojekte vorzubereiten und zu pflegen, um die Erstellung neuer Projekte durch das Verzweigen von Basisprojekten zu beschleunigen.

projects
Figure 2. Basis Projektstruktur

Project Sourcen

Die Projektstruktur muss dem Standard entsprechen, damit sie problemlos von einem anderen Team oder Entwickler erweitert werden kann.

project structure
Figure 3. Project Sourcen

Jedes Projekt muss über eine eigene README-Dokumentation und eine CHANGELOG-Datei verfügen, damit auf einfache Weise ermittelt werden kann, wie der Quellcode ausgeführt und verwaltet wird. Wenn wir unsere Projekte immer stabil und gut dokumentiert halten, können wir Missverständnisse und Unordnung leicht vermeiden.

project readme
Figure 4. Project ReadMe

Pipelines

Dies ist definitiv ein Herzstück unseres Projektökosystems. Gut entworfen und verwendet kann eine Lösung sein, um alle Projekte und Systeme stabil, sicher und wartungsfrei zu halten. Auf dem Markt gibt es verschiedene CI / CD-Systeme, die wir in unseren Projekten als GitLab CI / CD verwendet haben.

Development Flow

edes Framework ist anders. Wir müssen für jedes Projekt und jede Anwendung einen anderen beziehenlichen Integrationsprozess bearbeiten.

Java Microservice Pipeline

Zum Beispiel kann unsere Java Microservice Pipeline wie folgt aussehen:

service pipeline
Figure 5. Service Pipeline
  • Erstellen - Kompilieren Sie Java-Quellcode, führen Sie JUnit-Tests durch und bereiten Sie die JAR-Datei vor

  • Test - Modultests mit TestContainers Framework

  • Bereitstellen - Bereiten Sie das Docker-Image vor, stellen Sie das Docker für die AWS EKS-Registrierung bereit und stellen Sie die neue ECS TaskDefinition für den ECS-Container bereit

Wir können unsere Pipeline leicht erweitern und weitere Stufen wie hinzufügen

  • Überprüfung des Ankersicherheitsscanners

  • Überprüfung des Sonar Quality Gate

Infrastruktur Pipeline

Ein weiteres Pipeline-Beispiel ist die Terraform-Projektautomatisierung basierend auf CI / CD-Skripten.

infrastructure pipeline
Figure 6. Infrastruktur Pipeline
  • Plan - Erstellen Sie einen Plan für Terraform-Skripte. Vergleichen Sie mit der aktuellen Infrastruktur und bereiten Sie den sofort einsatzbereiten Terraform-Plan vor

  • Übernehmen - Änderungen für die AWS-Infrastruktur vornehmen

  • Starten und Stoppen - optionaler Schritt zum Starten und Stoppen unserer Testumgebung in der Cloud

Test Resultate

Jede Pipeline kann Testergebnisse exportieren und diese für Benutzer bereitstellen und einfach in unseren Zusammenführungsanforderungen anzeigen.

service tests
Figure 7. Test Resultate

Gruppenvariablen

Um Variablen zwischen Projekten nicht zu wiederholen, ist es eine gute Idee, alle Variablen unter Gruppe zu sammeln.

group variables
Figure 8. Gruppenvariablen

Cloud Automation

Die Cloud-Automatisierung ist eng mit der Infrastruktur als Codemuster verbunden, in dem wir unsere gesamte Architektur im Quellcode widerspiegeln können. Gut verwendet, um das Terraform Framework zu verwenden, um komplette Umgebungen in die Cloud zu integrieren. Terraform-Skripte können in CI / CD-Skripte integriert werden, und die Erstellung der Infrastruktur kann auch ohne menschliche Aktivitäten automatisiert werden.

GitFlow

GitFlow ist ein aktueller Standard für die Entwicklung und Pflege von Projekten durch Entwicklungsteams. Jeder nutzt es, um Software ohne Konflikte und Probleme aufgrund von Parallelität zu planen und freizugeben.

gitflow
Figure 9. Git Flow

Diese Methode kann verwendet werden, um unseren Pipeline-Fluss zu steuern. Die häufigsten Anwendungsfälle:

  • Entwicklung eines Zweigflusses zum Kompilieren und Bereitstellen unserer Änderungen, die aus Feature-Zweigen zusammengeführt wurden

  • Feature Branch - Flow zum ad hoc Kompilieren von Entwickleränderungen

  • Release Branch - Flow für die Bereitstellung unserer Build-to-Stage-Umgebung

  • Hauptzweig - Ablauf für die Produktionsumgebung

  • Anforderungen zusammenführen - Ablauf zum Kompilieren, Überprüfen und Testen von Entwickleränderungen aus Feature-Zweigen

Wir können leicht unser eigenes Verhalten für die oben genannten Fälle entwerfen.

Zusammenfassung

CI / CD ist ein sehr großes Thema, da es immer eine gute Idee ist, die Standards einzuhalten, Technologie-Radare zu verfolgen und Ideen für reale Projekte zu üben. Aufgrund aktueller Architekturtrends wie Microservices und Cloud ist DevOps eine Schlüsselkompetenz für ein gut funktionierendes Entwicklungsteam.