1. BusinessOperations ManagementKontinuierliche Integration und kontinuierliche Bereitstellung: Implementierung und Nutzung von CI / CD

Von Emily Freeman

Das Wachstum der DevOps-Kultur hat die Art und Weise verändert, wie Entwickler Software entwickeln und ausliefern. Bevor die agile Denkweise aufkam, wurde den Entwicklungsteams eine Funktion zugewiesen, sie wurde erstellt und dann vergessen. Sie warfen den Code dem QA-Team zu, das ihn dann aufgrund von Fehlern zurückwarf oder an das Betriebsteam weiterleitete. Operations war für die Bereitstellung und Wartung des Codes in der Produktion verantwortlich.

Dieser Prozess war, gelinde gesagt, umständlich und verursachte einige Konflikte. Da Teams in Silos existierten, hatten sie nur wenig oder gar keinen Einblick in die Funktionsweise anderer Teams, einschließlich ihrer Prozesse und Motivationen.

CI / CD, das für kontinuierliche Integration und kontinuierliche Bereitstellung (oder Bereitstellung) steht, zielt darauf ab, die Mauern aufzubrechen, die in der Vergangenheit zwischen Teams bestanden haben, und stattdessen einen reibungsloseren Entwicklungsprozess einzuleiten.

Vorteile einer kontinuierlichen Integration und Lieferung

CI / CD bietet viele Vorteile. Das Erstellen einer CI / CD-Pipeline kann jedoch zeitaufwändig sein. Außerdem ist ein Buy-in durch das Team und die Geschäftsführung erforderlich.

Einige Vorteile von CI / CD sind:

  • Umfassendes automatisiertes Testen: Selbst die einfachste Implementierung von CI / CD erfordert eine robuste Testsuite, die jedes Mal, wenn ein Entwickler Änderungen an der Hauptniederlassung vornimmt, gegen den Code ausgeführt werden kann. Beschleunigte Feedbackschleife: Entwickler erhalten mit CI / CD sofortiges Feedback. Automatisierte Tests und Ereignisintegrationen schlagen fehl, bevor neuer Code zusammengeführt wird. Dies bedeutet, dass Entwickler den Entwicklungszyklus verkürzen und Funktionen schneller bereitstellen können. Verringerter zwischenmenschlicher Konflikt: Die Automatisierung von Prozessen und die Verringerung der Reibung zwischen Teams fördern eine kollaborativere Arbeitsumgebung, in der Entwickler das tun, was sie am besten können: Lösungen entwickeln. Zuverlässiger Bereitstellungsprozess: Jeder, der eine Bereitstellung an einem Freitagnachmittag zurückgesetzt hat, kann Ihnen mitteilen, wie wichtig es ist, dass die Bereitstellung reibungslos verläuft. Die kontinuierliche Integration stellt sicher, dass Code gut getestet wird und in einer produktionsähnlichen Umgebung zuverlässig funktioniert, bevor er jemals einen Endbenutzer erreicht.

Implementierung einer kontinuierlichen Integration und Lieferung

CI / CD basiert auf agilen Methoden. Sie sollten sich vorstellen, CI / CD als iterativen Prozess zu implementieren. Jedes Team kann von einer Version von CI / CD profitieren. Die Anpassung der Gesamtphilosophie hängt jedoch stark von Ihrem aktuellen Tech-Stack (den von Ihnen verwendeten Sprachen, Frameworks, Tools und Technologien) und Ihrer Kultur ab.

Kontinuierliche Integration

Teams, die Continuous Integration (CI) praktizieren, führen Codeänderungen so oft wie möglich in den Master- oder Entwicklungszweig zurück. CI verwendet normalerweise ein Integrationstool, um den Build zu validieren und automatisierte Tests für den neuen Code auszuführen.

Der CI-Prozess ermöglicht Entwicklern in einem Team, im selben Bereich der Codebasis zu arbeiten, während Änderungen minimal gehalten werden und massive Zusammenführungskonflikte vermieden werden.

So implementieren Sie die kontinuierliche Integration:

  • Schreiben Sie automatisierte Tests für jede Funktion. Dadurch wird verhindert, dass Fehler in der Produktionsumgebung bereitgestellt werden. Richten Sie einen CI-Server ein. Der Server überwacht das Haupt-Repository auf Änderungen und löst die automatisierten Tests aus, wenn neue Commits übertragen werden. Ihr CI-Server sollte in der Lage sein, Tests schnell auszuführen. Aktualisieren Sie die Entwicklergewohnheiten. Entwickler müssen Änderungen häufig in die Hauptcodebasis zurückführen. Diese Zusammenführung sollte mindestens einmal am Tag erfolgen.

Kontinuierliche Lieferung

Continuous Delivery ist ein Fortschritt von CI, da Entwickler jede Änderung am Code als lieferbar behandeln. Im Gegensatz zur kontinuierlichen Bereitstellung muss eine Freigabe jedoch von einer Person ausgelöst werden, und die Änderung kann möglicherweise nicht sofort an einen Endbenutzer übermittelt werden.

Stattdessen werden Bereitstellungen automatisiert, und Entwickler können ihren Code mit einer einzigen Schaltfläche zusammenführen und bereitstellen. Durch kleine, häufig durchgeführte Iterationen stellt das Team sicher, dass Änderungen problemlos behoben werden können.

Nachdem der Code die automatisierten Tests bestanden und erstellt wurde, kann das Team den Code in einer beliebigen von ihm angegebenen Umgebung bereitstellen, z. B. für die Qualitätssicherung oder das Staging. Oft überprüft ein Peer den Code manuell, bevor ein Ingenieur ihn in eine Produktionsfreigabezweigstelle einbindet.

So implementieren Sie die kontinuierliche Zustellung:

  • Haben Sie ein starkes Fundament in CI. Die automatisierte Testsuite sollte mit der Funktionsentwicklung wachsen und Sie sollten jedes Mal Tests hinzufügen, wenn ein Fehler gemeldet wird. Releases automatisieren. Ein Mensch initiiert weiterhin Bereitstellungen, aber die Freigabe sollte ein einstufiger Prozess sein - ein einfacher Klick auf eine Schaltfläche. Berücksichtigen Sie Feature-Flags. Feature-Flags verbergen unvollständige Features für bestimmte Benutzer und stellen so sicher, dass Ihre Kollegen und Kunden nur die Funktionen sehen, die Sie wünschen.

Kontinuierliche Bereitstellung

Die kontinuierliche Bereitstellung geht sogar einen Schritt weiter als die kontinuierliche Bereitstellung. Jede Änderung, die die gesamte Produktions-Release-Pipeline durchläuft, wird implementiert. Richtig: Der Code wird direkt in die Produktion übernommen.

Die fortlaufende Bereitstellung verhindert das Eingreifen von Personen während des Bereitstellungsprozesses und erfordert eine vollständig automatisierte Testsuite.

So implementieren Sie die kontinuierliche Bereitstellung:

  • Pflegen Sie eine starke Testkultur. Sie sollten das Testen als zentralen Bestandteil des Entwicklungsprozesses betrachten. Dokumentieren Sie neue Funktionen. Automatisierte Releases sollten die API-Dokumentation nicht übertreffen. Koordinieren Sie mit anderen Abteilungen. Beziehen Sie Abteilungen wie Marketing und Kundenerfolg mit ein, um einen reibungslosen Rollout-Prozess zu gewährleisten.