Continuous Delivery

Was ist Continuous Delivery, wie funktioniert der zugrunde liegende Prozess und welche Vorteile gibt es?

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.

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.

Continuous Delivery - automatisierte, kontiniuierliche Softwareauslieferung

Dienstleister gesucht?

Was macht t2informatik?

Softwareentwicklung aus Berlin
t2informatik - Wir entwickeln Software für großartige Unternehmen

Hinweise:

Hier finden Sie ergänzende Informationen aus unserem Blog:

t2informatik Blog: CI/CD Pipeline auf einem Raspberry Pi – Teil 1

CI/CD Pipeline auf einem Raspberry Pi – Teil 1

t2informatik Blog: CI/CD Pipeline auf einem Raspberry Pi – Teil 2

CI/CD Pipeline auf einem Raspberry Pi – Teil 2