Was ist eigentlich… Continuous Delivery?

Was ist eigentlich… Continuous Delivery?

Neu entwickelte Software möglichst zügig ausliefern oder lieber erst ausgiebig testen? Der Spagat zwischen immer kürzeren Releasezyklen einerseits und Qualitätssicherung andererseits gießt kontinuierlich Öl auf den schwelenden Konflikt zwischen Software-Entwicklung und IT-Betrieb. Ein Konflikt, in dem beide „Parteien“ das übergeordnete – und gemeinsame – Ziel aus den Augen verlieren: die richtigen Features schnell und hochwertig zum Endkunden zu bringen und so einen Mehrwert für das Unternehmen zu generieren. In diesem Zusammenhang verspricht Continuous Delivery eine deutliche Beschleunigung, ohne Abstriche bei der Qualität und Stabilität zu machen. Aber was verbirgt sich hinter dem Begriff genau?

„done“ = „live“

Auf jeden Fall ist Continuous Delivery weit mehr als ein Buzzword. Unternehmen aller Größen arbeiten bereits erfolgreich nach den Prinzipien von Continuous Delivery, von Global Playern wie Netflix, Mozilla und Amazon bis hin zu kleinen Startups, Tendenz steigend. Kein Wunder, denn praktisch alle Firmen stehen vor demselben Dilemma: 3 bis 4 Releases jährlich reichen bei den veränderten Kundenerwartungen längst nicht mehr aus.
Die Umstellung auf iterativ-inkrementelle, agile Methoden wie Scrum erhöhen zwar die Entwicklungsgeschwindigkeit, doch verpufft dieser Vorteil, wenn die Releases nicht im gleichen Takt produziert und ausgeliefert werden. Auch stressige „Go-Live-Tage“ vor und nach jedem Deployment sind ein deutliches Anzeichen für Optimierungsbedarf, schließlich soll die höhere Innovationsfrequenz nicht zu riskanten, fehlerbehafteten und damit kostenintensiven Releases führen. Immer mehr Unternehmen übernehmen deshalb die Prinzipien von DevOps, um Reibungsverluste zwischen Entwicklung und Betrieb abzubauen. Während DevOps einen grundsätzlichen Wandel der Zusammenarbeit zum Ziel hat, stellt Continuous Delivery als Teil der DevOps-Initiative eine technische Methodik für die Beschleunigung der „letzten Meile“ der Wertschöpfung dar. 

Engpass Qualitätssicherung

Manuelles Testing, Datenbank-Aktualisierungen, Server-Konfigurierungen … Selbst wenn die Iterationen „nur“ in zweiwöchigen Abständen erfolgen, gerät das Betriebsteam ohne Continuous Delivery unweigerlich in zeitliche Bedrängnis und der IT-Betrieb wird zum Flaschenhals. Die Lösung: kompromisslose Automatisierung durch schlanke, wiederholbare und zuverlässige Prozesse. Das Testing inklusive Installation in die Produktionsumgebung findet nicht mehr am Ende (und damit außerhalb) der Iterationen statt, sondern wird Teil des Entwicklungsprozesses.

Die Schritte „Bauen“, „Testen“ und „Ausliefern“ der Software werden in viel kleineren Paketen abgearbeitet, und der neue Softwarestand wird sofort nach jeder (!) Änderung oder Erweiterung automatisiert getestet und versioniert. Damit bleibt das Release-Risiko jedes neuen Features minimal, Bugs lassen sich früh und schnell identifizieren und Rollbacks sind – sofern überhaupt nötig – einfach zu handhaben. Große Unternehmen wie Facebook und Amazon liefern mit Hilfe von Continuous Delivery so bis zu mehrere Tausend Code-Änderungen täglich aus.

Die Deployment Pipeline

Das technische Herzstück von Continuous Delivery ist die sogenannte „Deployment Pipeline“ nach Jez Humble und David Farley – eine Prozesskette, die durch jede Quellcode-Änderung automatisch getriggert wird und festgelegte Stages durchläuft.

Zunächst wird die Anwendung entwickelt (1) und dann aus verschiedenen Blickwinkeln in der Testumgebung auf Herz und Nieren getestet (2-4). Bei einem Fehler bricht der Prozess ab. Nach dem erfolgreichen Abschluss der Tests wird das Artefakt für den produktiven Einsatz zur Verfügung gestellt (5).
Das Ziel: Die Software befindet sich zu jedem Zeitpunkt in einem Zustand, in dem neue Features risikolos auf Knopfdruck deployed werden können. Beispielsweise ist es möglich, eine kleine Nutzergruppe eine neue Funktionalität testen zu lassen, um so frühes Feedback zu erhalten. Noch einen Schritt weiter geht Continuous Deployment – hier wird jedes getestete Feature automatisch live geschaltet.

Continuous Delivery: Turbo für den Unternehmenserfolg

Ob Continuous Delivery oder noch radikaler Continuous Deployment: Die Implementierung erfordert nicht nur eine etablierte DevOps-Kultur, sondern auch eine Adaption der technischen Infrastruktur. Doch im Gegenzug bringt die deutlich reduzierte Time to Market in dynamischen Märkten wesentliche Wettbewerbsvorteile:

  • Investitionssicherheit: das richtige Produkt entwickeln
  • Qualität: das Produkt richtig bauen
  • Kosten: durch Automatisierung sparen
  • Risiko: fehlerhafte Releases vermeiden
  • ROI: schnell von neuen Produkten profitieren

Sie möchten ebenfalls „in Echtzeit“ auf die wachsenden Erwartungen Ihrer Kunden reagieren? Wir beraten Sie gerne bei der Einführung von Continuous Delivery und dem Aufbau einer individuellen Deployment Pipeline!

Design Thinking #1: Innovation mit Methode
Wie Teams agil werden