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
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.
Project Sourcen
Die Projektstruktur muss dem Standard entsprechen, damit sie problemlos von einem anderen Team oder Entwickler erweitert werden kann.
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.
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:
-
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.
-
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.
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.
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.
Nützliche Informationen
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.