Continuous Delivery & DevOps

rocket_deliveryDie Motivation zur Entwicklung neuer Software liegt normalerweise darin, dass ein bestimmtes Problem der Nutzer adressiert werden soll und damit Wert generiert wird.

Bis es jedoch soweit ist, muss die Software zuerst einmal geplant und entwickelt werden. Dieser Prozess stellt immer eine Investition mit unklarem Ausgang dar: Erst wenn Funktionen für den Nutzer verfügbar sind, wird ersichtlich, ob das Problem der Nutzer tatsächlich gelöst wird und sich die Investition gelohnt hat.

Agile Softwareentwicklungsmethoden reduzieren dieses Risiko, indem der Auftraggeber in kurzen Abständen eine lauffähige Software erhält, die ihm erlaubt einzuschätzen, ob die entwickelte Lösung sich mit seinen Erwartungen deckt.

Damit bleibt allerdings noch die Frage nach der Nutzerakzeptanz ungeklärt. Erst wenn die neuen Funktionen auf dem Produktivsystem installiert sind, wird klar, ob für die Benutzer Mehrwert generiert wird.
Continuous Delivery erweitert die agile Softwareentwicklung, um genau dieses Problem zu adressieren:

Fast Feedback
Software wird während der Entwicklung kontinuierlich automatisiert getestet. Dies erzeugt frühes Feedback über mögliche Regressionen und schafft die Basis für hohe Qualität.
Deliver Small Batches
Neue Funktionen werden in kleinen Einheiten direkt bis zum Kunden geliefert. Dies senkt einerseits das Risiko beim Deployment und andererseits das Risiko in die "falschen" Dinge zu investieren.
Automate Everything
Nach Möglichkeit werden alle Schritte im Lieferprozess automatisiert. Dies ermöglicht Wiederholbarkeit und Zuverlässigkeit in der Lieferung der Software.
You Build It, You Own It, You Run It
Damit die Software kontinuierlich geliefert werden kann, muss die Grenze zwischen Entwicklung und Betrieb der Software aufgelöst werden. Nur mit einer DevOps Kultur kann die automatisierte kontinuierliche Lieferung gelingen.
Improve Everything
Für Continuous Delivery gilt das gleiche Prinzip wie für den agilen Entwicklungsprozess: Nur durch regelmäßiges Reflektieren und Adaptieren wird ein Lernprozess und eine Anpassung an neue Anforderungen möglich.

Die Änderungen an der Arbeitsweise passieren mit Continuous Delivery zu großen Teilen auf der technischen Seite mit dem Aufbau von Build- und Testpipelines, der Bereitstellung von ausreichend Testumgebungen, der Parallelisierung von Tests, der Automatisierung des Deployments sowie der Bereitstellung von Infrastruktur.

Auf der anderen Seite ist für den erfolgreichen Einsatz von Continuous Delivery auch ein Kulturwandel erforderlich. Es reicht nicht mehr aus, neue Funktionen zu implementieren und der Operationsabteilung ein Artefakt über den Zaun zu werfen. Nur durch gemeinschaftliches Engagement von Development und Operations können die anstehenden Aufgaben erfolgreich gemeistert werden.

Unser Angebot

Zum Erlernen und Vertiefen der technischen Aspekte des Themas Continuous Delivery und Infrastructure as Code bieten wir Trainings, Mentoring und Coaching an, um die zugrunde liegenden Prinzipien und Inhalte vermitteln.

Den hierzu nötigen Kulturwandel unterstützen wir mit Assessments und der Erarbeitung von möglichen Maßnahmen oder alternativ mit einer längerfristigen Begleitung.

Artikelserie Heise Developer (Print & Online)

Eine ausführlichere Betrachtung zu Continuous Delivery haben wir in einer vierteiligen Artikelserie auf Heise Developer publiziert:

oder in gedruckter Form im Heise Developer Sonderheft 02/2016 "Effektiver entwickeln" hier.

Konferenzbeiträge

Zu diesem Thema halten wir auch immer wieder Workshops und Vorträge auf Konferenzen:

Wir freuen uns über Fragen oder Anregungen zu dem Thema.