1. Startseite
  2. Wissen kompakt
  3. Continuous Delivery

Continuous Delivery

Inhaltsverzeichnis: DefinitionProzessVorteileHerausforderungenTippsToolsHinweise

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.

Continuous Delivery - die Perfektionierung der Softwareauslieferung

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.

Herausforderungen beim Continuous Delivery

Continuous Delivery bietet Vorteile, aber es gibt auch einige Herausforderungen, die bei der Implementierung und Aufrechterhaltung auftreten können:

  • Moderne Anwendungen können sehr komplexe Infrastrukturen haben, die schwer zu automatisieren, zu testen und zu verwalten sind.
  • Die Automatisierung und die kontinuierliche Bereitstellung von Änderungen können Sicherheitsbedenken aufwerfen. Daher ist es sinnvoll, die Implementierung regelmäßig auf Sicherheitslücken zu überprüfen.
  • Mit der Einführung von Continuous Delivery verändert sich oftmals die Zusammenarbeit zwischen Entwicklung und Betrieb, was ggf. Widerstände auslöst.
  • Ziemlich sicher werden zusätzliche Ressourcen für die Automatisierung und Schulung bzw. Weiterbildung der Teams benötigt.
  • Die Auswahl der richtigen Tools und Technologien für die Automatisierung und die Bereitstellung kann schwierig sein. Es gibt viele Optionen, und nicht alle passen zu jeder Organisation. Darüber hinaus ist es wichtig, effektive Strategien für das Fehlermanagement zu haben, um Probleme schnell zu identifizieren, zu beheben und aus Fehlern zu lernen.
  • Wächst eine Organisation, müssen Prozesse und Pipelines möglicherweise angepasst und skaliert werden. Dies erfordert eine sorgfältige Planung und Koordination.

Und zu guter Letzt gelten in einigen Branchen strenge regulatorische Vorschriften. Continuous Delivery muss in Einklang mit entsprechenden Anforderungen stehen, was zusätzliche Herausforderungen mit sich bringen kann.

Tipps für Continuous Delivery

Welche Tipps gibt es für die Einführung und Nutzung von Continuous Delivery?

  • Bei der Einführung ist es wichtig, die psychologischen Auswirkungen auf Ihr Entwicklungsteam zu berücksichtigen. Die ständige Veränderung und die Notwendigkeit, schnell auf Probleme zu reagieren, können zu Stress führen. Stellen Sie sicher, dass Sie Ressourcen für die Unterstützung und das Wohlbefinden Ihrer Teammitglieder bereitstellen. Eine positive Einstellung zur Veränderung und zur kontinuierlichen Verbesserung ist entscheidend.
  • Eine kontinuierliche Bereitstellung kann mit einer Vielzahl von Tools und Technologien umgesetzt werden. Anstatt sich ausschließlich auf die Auswahl der Tools zu konzentrieren, sollten Sie den Gesamtwert für Ihr Unternehmen im Auge behalten. Fragen Sie sich, wie Continuous Delivery dazu beitragen kann, die Geschäftsziele Ihrer Organisation zu erreichen. Dies kann dazu führen, dass Sie spezifische Tools und Ansätze auswählen, die am besten zu Ihren individuellen Anforderungen passen, anstatt einfach Trends zu folgen.
  • Investieren Sie Zeit und Ressourcen in die Automatisierung von Tests, Builds, Bereitstellungen und anderen wiederholbaren Aufgaben. Dadurch können menschliche Fehler minimiert und die Geschwindigkeit erhöht werden.
  • Kontinuierliche Bereitstellung erfordert eine robuste Teststrategie. Automatisieren Sie diese Tests, um sicherzustellen, dass Änderungen ohne Probleme in die Produktion gelangen. Verwenden Sie zudem Feature-Flags; sie ermöglichen es, neue Funktionen in der Produktionsumgebung zu aktivieren oder zu deaktivieren, ohne Code erneut zu deployen. Dies erleichtert die schrittweise Einführung neuer Funktionen und das Rollback von Änderungen bei Problemen.
  • Fördern Sie eine DevOps-Kultur in Ihrer Organisation, in der Teams eng zusammenarbeiten, um die Effizienz und Qualität der Bereitstellung zu verbessern. Dies erfordert möglicherweise Schulungen und kulturelle Veränderungen.

Denken Sie daran, dass Continuous Delivery eine kontinuierliche Verbesserung erfordert. Sammeln Sie Feedback, analysieren Sie Metriken und passen Sie Ihre Prozesse entsprechend an, um kontinuierlich besser zu werden. Es ist wichtig, dass das gesamte Team die Vorteile von Continuous Delivery versteht und unterstützt, um erfolgreich zu sein.

Tools für Continuous Delivery

Continuous-Delivery-Tools zielen darauf ab, den Softwareentwicklungsprozess von der Codeübergabe bis zur Bereitstellung zu automatisieren. Sie bieten in der Regel eine Reihe von Tools und Prozessen zum Erstellen und Testen von Software, einschließlich kontinuierlicher Integration, kontinuierlicher Tests und kontinuierlicher Bereitstellung:

  • Tools für die kontinuierliche Integration (Continuous Integration) erstellen und testen die Software automatisch bei jeder Übergabe von Codeänderungen an das Repository, um sicherzustellen, dass alle Codeänderungen vor der Bereitstellung ordnungsgemäß getestet werden.
  • Tools für kontinuierliches Testen (Continuous Testing) helfen bei der Automatisierung des Testprozesses und ermöglichen es den Teams, Fehler und Probleme im Code schnell zu erkennen.
  • Tools für die kontinuierliche Bereitstellung (Continuous Deployment) automatisieren den Prozess der Bereitstellung von Software für die Produktion, so dass Teams neue Softwarefunktionen schnell und zuverlässig freigeben können.

Hier finden Sie eine kleine Auswahl mit Tools für Continuous Delivery (CD):

Leicht finden Sie im Internet viele weitere Lösungen.

Hinweise:

Haben Sie Lust auf einen neuen Lieblings-Newsletter?

Die Inhalte auf dieser Seite dürfen Sie gerne teilen oder verlinken.

[1] 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: CI 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: “Die höchste Priorität ist es, Kunden durch eine frühe und kontinuierliche Auslieferung von wertvoller Software zufrieden zu stellen.”

Hier finden Sie ergänzende Informationen aus unserem t2informatik Blog:

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

CI/CD Pipeline auf einem Raspberry Pi – Teil 1

t2informatik Blog: Dokumentation im Code - Pro und Contra

Dokumentation im Code – Pro und Contra

t2informatik Blog: Performance Optimierung bei WPF Anwendungen

Performance Optimierung bei WPF Anwendungen