t2informatik » Wissen kompakt » Continuous Delivery

Continuous Delivery

Die Perfektionierung der Softwareauslieferung

Der Begriff Continuous Delivery 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. Continuous Delivery beschreibt die Abkehr einer klassischen Softwareentwicklung mit den Phasen Entwicklung, Qualitätssicherung und Auslieferung, die üblicherweise lediglich einmal in jedem Release vorkommen. Die kontinuierliche Auslieferung wird ermöglicht durch eine weitgehend automatisierte Pipeline – auch als Continuous Delivery Pipeline bzw. Continuous Deployment Pipeline bezeichnet. Initiiert durch die Versionierung einer Quellcode-Datei laufen meist folgende Schritte 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.

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 Continous 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.

“Das Fachwissen zu Softwarearchitekturen, die Expertise in der Softwareentwicklung und die sehr flexible Arbeitsweise waren ideal für uns.“
„Ich brauche Freiheit und Vertrauen. Und ich möchte Verantwortung übernehmen und dabei Spaß haben!“
Share This