Was ist eigentlich Continuous Delivery?

Der Begriff beschreibt eine Sammlung von Techniken, Prozessen und Werkzeugen, mit deren Hilfe kurze Entwicklungszyklen und die schnelle Auslieferung von Software-Updates oder produktiven Endsystemen ermöglicht werden.

Die Idee hinter dem Begriff Continuous Delivery lässt sich am besten mit einer auf Knopfdruck abrufbaren Software vergleichen. Wenn der Kunde eine aktuelle Version seiner Software wünscht, muss er diese nur anfordern.

Bei klassischen Entwicklungssystemen bzw. -ansätzen war und ist das nicht möglich. Die Software wurde zunächst programmiert, dann getestet und evaluiert und weiteren Überarbeitungen und Prüfungen unterzogen, ehe sie beim Kunden ankam.

Continuous Delivery verändert dieses System und sorgt durch die kontinuierliche Überprüfung aller Änderungen und durch die automatisierten Tests für eine jederzeit lauffähige Software. Der Kunde kann somit tatsächlich in beinahe jedem Entwicklungsstand der Software die aktuelle lauffähige Version anfordern und erhält ein überprüftes und getestetes System ohne Fehler. Somit lassen sich die Prozesse deutlich beschleunigen und verschlanken, was vor allem wirtschaftliche Vorteile mit sich bringt.

Von der Idee bis zum Kunden mittels Continuous Delivery

Der Prozess der Continuous Delivery wurde erstmals im Jahr 2006 in einem Vortrag von Jez Humble, Chris Read und Dan North erwähnt. Humble und David Farley haben das Thema deutlich vertieft in ihrem Buch „Continuous Delivery“ aus dem Jahr 2010. Ziel war und ist es, von der anfänglichen Idee bis zum Endprodukt eine möglichst kurze und variable Kette zu schaffen, die dank andauernder Überprüfungen enorm belastbar ist.

Die in der ursprünglichen Wahrnehmung aufeinanderfolgenden Prozesse von Entwicklung, Qualitätskontrolle und Auslieferung werden nicht mehr als große Einheiten verstanden, sondern als miteinander verzahnte Kleinsteinheiten mit entsprechend geringem Lastaufwand. Somit ist es möglich, Entwicklungsschritte zu beschleunigen und neue Funktionen schneller zu implementieren.

 

Radikale Automatisierung für umfassende Software-Standards

Das große Problem bei der Software-Entwicklung liegt vor allem in den umfassenden Tests, welche jede Software vor der Freigabe durchlaufen muss. Diese führen, vor allem bei umfangreichen Tests, häufig zu Stopp-Phasen in der Entwicklung und sind somit mit dem Begriff der Continuous Delivery nicht zu vereinbaren.

Auf der anderen Seite können die Tests aber auch nicht ausgelassen werden, da eine Kompatibilität und Lauffähigkeit der entwickelten Software gewährleistet werden muss. Dieses Problem umgeht die Continuous Delivery durch die Implementierung von automatisierten Testsystemen in kleinsten Schritten.

Bei Änderungen oder Erweiterungen an der Software werden diese Anpassungen sofort und automatisiert getestet und überprüft. Somit entsteht eine Kette der Qualitätssicherung, welche bei Fehlern und Schwierigkeiten sofort die Ursache der Fehler aufzeigen kann. Aufgrund der kleinen Entwicklungsschritte zwischen jedem Testverfahren sind die Änderungen einfach zu identifizieren, was die Fehlersuche minimiert.

Automatische und manuelle Tests und Freigabeschritte

Im Rahmen der Continuous Delivery wird versucht sowohl funktionale als auch nicht funktionale Anforderungen an die entwickelte Software mittels unterschiedlicher Testtypen mit einem sehr hohen Grad an Automatisierung zu validieren. Die Tests werden hierbei in mehreren Stufen organisiert und nacheinander für jeden aktuellen Stand der Software durchgeführt.