In diesem Artikel erkläre ich, was Continuous Deployment innerhalb des SAFe® DevOps Health Radars ist und warum es für die schnelle und sichere Wertlieferung unverzichtbar ist. Bitte beachten Sie, dass alles hier Besprochene unter der Lizenz von Scaled Agile steht und dass das Scaled Agile Framework als Toolbox zu verstehen ist. Nehmen Sie daraus, was zu Ihren Bedürfnissen passt und Ihre Probleme löst.
Wo Continuous Deployment einzuordnen ist#
Continuous Deployment ist die dritte Dimension in der SAFe DevOps Pipeline. Davor kommt Continuous Exploration, wo wir mit Kunden und dem Business zusammenarbeiten, um Hypothesen aufzustellen, Marktbedürfnisse zu verstehen, eine minimale Architektur zu definieren und Epics in Features herunterzubrechen. Danach folgt Continuous Integration, wo diese Features in User Stories zerlegt, implementiert, in die Versionsverwaltung eingecheckt und als verifizierte, deploybare Artefakte in einer Staging-Umgebung bereitgestellt werden.
Mit Continuous Deployment bringen wir diese verifizierten Artefakte kontinuierlich in die Produktion und machen alles bereit für das Release.
Warum Continuous Deployment wichtig ist#
In traditionellen Deployment-Praktiken sind Deployment und Release dasselbe. Teams sammeln alle Features aus ein, zwei oder drei Monaten und deployen und releasen dann alles zusammen. Das birgt ein enormes Risiko, weil die Menge an Änderungen massiv ist.
Continuous Deployment löst dieses Problem durch kleine Batch-Grössen. Wir deployen kontinuierlich kleine Änderungen in die Produktion, was den Wertfluss massiv erhöht. Das Schlüsselprinzip dabei ist die Trennung von Deployment und Release.
Trennung von Deployment und Release#
Dies ist eines der wichtigsten Konzepte:
- Deployment bedeutet, den kompilierten Code mit ausgeschaltetem Feature Flag in die Produktion zu bringen.
- Release bedeutet, das Feature Flag einzuschalten, damit die Benutzer auf die neue Funktionalität zugreifen können.
Diese Trennung ermöglicht es uns, on Demand zu releasen. Alle Änderungen sind bereits in der Produktion, und das Business entscheidet, wann der richtige Zeitpunkt für das Release einer Funktion ist. Dies hat einen massiven Einfluss auf die Time-to-Market.
Die vier Aktivitäten von Continuous Deployment#
Continuous Deployment besteht aus vier Aktivitäten: Deploy, Verify, Monitor und Respond.
Deploy#
Die erste Aktivität ist das Deployment in die Produktion. Wir bringen den kompilierten Code mit ausgeschaltetem Feature Toggle in die Produktion. Ein Feature Toggle ist im Wesentlichen eine If-Anweisung im Code, mit der wir konfigurieren können, ob ein Feature ein- oder ausgeschaltet ist. Das ermöglicht Dark Launches, bei denen Funktionalität bereits in der Produktion vorhanden ist, ohne für die Benutzer sichtbar zu sein.
Verify#
Sobald unser deploybares Artefakt in die Produktion gebracht wurde, müssen wir überprüfen, ob alles korrekt funktioniert. Dazu führen wir eine Teilmenge der Tests aus, die bereits während der Integrationsphase durchgeführt wurden. Wenn einer dieser Tests fehlschlägt, führen wir sofort ein Rollback auf die letzte stabile Version durch.
Monitor#
Während der Architekturphase haben wir für Betreibbarkeit designt. Alle Log-Einträge und Telemetriedaten, die wir während des Entwicklungszyklus eingebaut haben, fliessen nun in unser Monitoring-System ein. Damit können wir die Anwendungsgesundheit, Systemleistung, das Endbenutzerverhalten, Incidents und den Geschäftswert überwachen.
Respond#
In der Produktion können und werden Dinge schiefgehen. Wenn das passiert, müssen wir schnell reagieren. Wir setzen Alerts und Schwellenwerte auf unser Monitoring-System, damit wir benachrichtigt werden, bevor die Benutzer betroffen sind. Wenn etwas passiert, nutzen wir teamübergreifende Zusammenarbeit, um das Problem zu lösen und die Geschäftskontinuität sicherzustellen.
Wie schnell ist dieser Prozess?#
Lassen Sie mich das ganz konkret machen. Ein Feature wird in eine User Story heruntergebrochen. Die User Story wird entwickelt, der Build-Server erstellt ein deploybares Artefakt, und dieses Artefakt wird verifiziert und in eine Staging-Umgebung deployt. Von dort können wir sofort in die Produktion deployen, mit einer Teilmenge der Tests verifizieren, das Monitoring starten und bei Problemen alarmiert werden.
Dieser gesamte Prozess kann innerhalb von Minuten oder Stunden durchgeführt werden. Es gibt absolut keinen Grund, alle Änderungen über Monate hinweg zu sammeln und sie in einem grossen Paket zu deployen.
Das Ergebnis#
Wenn Continuous Deployment gut umgesetzt wird, haben Sie:
- Ein stabiles Produktionssystem mit den neuesten Änderungen
- Ein Monitoring-System, das Features, Performance, Benutzerverhalten, Incidents und Geschäftswert verfolgt
- Ein Alerting- und Benachrichtigungssystem für schnelle Reaktionen
- Die Fähigkeit, on Demand zu releasen, wobei das Business die Kontrolle darüber hat, wann Features live gehen
Continuous Deployment ermöglicht kleine Batch-Grössen mit hoher Frequenz und geringem Risiko. Durch die Trennung von Deployment und Release entscheidet das Business, wann der richtige Zeitpunkt ist. Das hat einen massiven positiven Einfluss auf die Time-to-Market.
