Die 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:
- Teil 1: Grundlagen
- Teil 2: Commit Stage
- Teil 3: Acceptance Test Stage
- Teil 4: Bereitstellen der Infrastruktur
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:
- Agile Testing Days 2016: Container based Continuous Delivery
- Container Conf 2016: Konzepte und Tools für den Aufbau von Docker-basierten Continuous Delivery Pipelines
- Continuous Lifecycle 2016: Agile Engineering Practices in der Infrastrukturentwicklung
- W-JAX: Continuous Delivery Pipelines mit Docker
- Agile Testing Day NL 2016, Vortrag: Collaborative Infrastructure Delivery
- Agile Testing Day NL 2016, Workshop: Continuous Delivery and Automation at Scale – the tools
- Continous Lifecycle 2015, Workshop: Continuous Delivery - Konzepte und Werkzeuge für den Lebenszyklus einer Pipeline
- Agile Bodensee 2015, Workshop: Continuous Delivery – Konzepte und Werkzeuge für den Lebenszyklus einer Pipeline
- Continuous Lifecycle 2014, Vortrag: Forget about the Tools – DevOps als Kultur
- Agile Bodensee 2014, Vortrag: Software Development is dead – long live Collaborative Delivery
Wir freuen uns über Fragen oder Anregungen zu dem Thema.