Continuous Delivery
Inhaltsverzeichnis: Definition – Prozess – Vorteile – Continuous Integration – Hinweise
Wissen kompakt: Der Begriff Continuous Delivery steht für eine Sammlung von Techniken, Prozessen und Werkzeugen, die eine kontinuierliche Auslieferung von Software ermöglicht.
Continuous Delivery – die Perfektionierung der Softwareauslieferung
Continuous Delivery beschreibt die Abkehr einer klassischen Softwareentwicklung mit den Phasen Entwicklung, Qualitätssicherung und Auslieferung, die üblicherweise lediglich einmal in jedem Release vorkommen. Der Begriff steht für eine Sammlung von Techniken, Prozessen und Werkzeugen, die eine kontinuierliche und in kurzen zeitlichen Abständen stattfindende Auslieferung von Software ermöglicht. Die kontinuierliche Auslieferung wird ermöglicht durch eine weitgehend automatisierte Pipeline – auch als Continuous Delivery Pipeline bzw. Continuous Deployment Pipeline bezeichnet.
Im Agilen Manifest lautet das 1. Prinzip: “Die höchste Priorität ist es, Kunden durch eine frühe und kontinuierliche Auslieferung von wertvoller Software zufrieden zu stellen.” Dieses Prinzip bildet ein Fundament für Continuous Delivery.
Der Prozess beim Continuous Delivery
Das Ziel von Continuous Delivery ist es, die Freigabe von Produktversionen zu verkürzen. In vielen Organisationen dauert es oftmals Monate bis aktuelle Softwareversionen ausgeliefert werden können. Es gibt Verzögerungen, Liege- und Wartezeiten, sowie Schwierigkeiten beim Build, im Testing und anschließend im Deployment. Damit der Build-Test-Release-Zyklus verkürzt werden kann, muss die Qualität jedes einzelnen Schritts verbessert werden:
- Planung der nächsten Iteration bzw. des nächsten Sprints (Planning)
- Implementierung neuer Funktionen (Coding)
- Erzeugung einer neuen Version (Building)
- Automatisiertes Testen der neuen Version (Testing)
- Freigabe der neuen Version (Release bzw. Releasing)
- Automatisiertes Verteilen der neuen Version (Deploying)
- Betrieb der neuen Version (Operating)
- Automatisierte Kontrolle der neuen Version (Monitoring)
Im Detail laufen meist folgende Schritte – initiiert durch die Versionierung einer Quellcode-Datei – ab:
- Ein Continuous Integration Server führt Modultests durch, erzeugt einen Build und liefert diesen in eine Testumgebung aus.
- In der Testumgebung werden verschiedene Tests durchgeführt:
Unit-Tests prüfen einzelne Komponenten und ihre Funktionen.
War diese erste Teststufe – auch als Commit Stage bezeichnet – erfolgreich, folgt die Acceptance Test Stage mit Integrations-, Akzeptanz- und Systemtest (also bspw. auch Last- und Performance-Tests).
Sobald Fehler innerhalb der Testumgebung entdeckt werden, wird die Pipeline unterbrochen und der Entwickler erhält eine Notifikation. - Oftmals werden die Tests durch manuelle, explorative Tests abgeschlossen.
- Werden alle Tests bestanden, erfolgt eine Freigabe und die Software wird in die Produktion und/oder an Kunden ausgeliefert.
Vorteile beim Continuous Delivery
Im Zuge von Continuous Delivery wird manchmal argumentiert, dass durch die schnelle Taktung der Softwareauslieferung die Qualität leidet, da Stabilität und Zuverlässigkeit abnehmen. Sofern sich Organisationen die Mühe machen und zielgerichtet Continuous Delivery Pipelines aufbauen, ist in der Praxis häufig das Gegenteil der Fall. Continuous Delivery kann eine Reihe von Vorteilen bieten:
- Die Time-to-Market wird verbessert, denn durch die Automatisierung der Tests und den automatischen Build lässt sich viel Zeit sparen.
- Die Qualität steigt, denn die Entwickler können sich auf explorative oder Usability-Tests konzentrieren.
- Die Produkte werden besser, denn die kontinuierliche Lieferung von kleinen Neuerungen fördert das Feedback von Anwendern. Benutzer können ggf. Ideen testen, bevor ganze Funktionen entwickelt werden. Dies führt zu mehr Akzeptanz bei den Kunden und in der Folge zu besseren Produkten. Gleichzeitig sinkt auch das Risiko von Fehlentwicklungen.
In der Kombination mit agilen Methoden bietet Continuous Delivery also grundsätzlich die schnelle, zuverlässige und wiederholbare Auslieferung von Software. Demgegenüber steht aber ein initialer Aufwand für die Einrichtung der Continuous Delivery Pipeline als auch der Aufwand für die Instandhaltung und Weiterentwicklung der Systeme.
Continuous Integration
Häufig wird im Zuge von Continuous Delivery auch von Continuous Integration gesprochen. Zusammen wird beides gerne als CI/CD abgekürzt, wobei diese Kurzform nicht mit der gleichnamigen Abkürzung aus dem Marketing verwechselt werden sollte, die für Corporate Identity – Corporate Design steht. Zwischen Continuous Integration (CI) und Continuous Delivery (CD) gibt es einen wesentlichen Unterschied: Continuous Integration adressiert die Automatisierung des Testprozesses und ist damit ein Teil der Continuous Delivery Pipeline. CD erweitert dieses Konzept, indem es auch den Release-Prozess als automatisierten Ablauf umfasst. Durch CD rückt also der Endbenutzer in den Fokus. Und so schließt sich auch der Kreis zum 1. Prinzip des Agilen Manifests.
Hinweise:
Haben Sie Lust auf einen neuen Lieblings-Newsletter?
Die Inhalte auf dieser Seite dürfen Sie gerne teilen oder verlinken.
Hier finden Sie ergänzende Informationen aus unserem t2informatik Blog: