Continuous Delivery


Continuous Delivery (CD) bezeichnet Änderungen im Anwendungscode von Software zum Zeitpunkt der Verteilung und Implementierung der Software. Continuous Delivery geht eine Continuous Integration (CI) voraus, die ihrerseits für die kontinuierliche Integration innerhalb des Build-, bzw. Test-Prozesses verantwortlich ist. Testprozesse, die bereits erfolgreich verlaufen sind, fließen durch Continuous Delivery in das Software-Release ein.

Allgemeine Informationen zum Thema[Bearbeiten]

Der wesentliche Vorteil von Continuous Delivery besteht in der Überprüfung des Codes auf Benutzerakzeptanz, hinzu kommen Überprüfungen der Entwicklungs- und Produktionsumgebung. In der Entwicklungsumgebung wird der Softwarecode auf seine Funktionen getestet, was die Geschäftslogiken mit einbezieht.

Continuous Delivery ist ein Prozess, der nicht abgeschlossen wird, sondern den Entwicklern regelmäßig Rückmeldungen bezüglich der fortlaufenden Prozesse gibt, sodass diese auch kurzfristige Korrekturen vornehmen können, bevor andere Aspekte in die Entwicklung der Prozesse einfließen. Als Folge wird bestenfalls die Produktivität erhöht und die Entwickler können sich auf die Aufgaben konzentrieren, die dem Entwicklungsprozess dienen. Continuous Delivery hilft auch, wenn der iterative Entwicklungsprozess wegen steigender Projektkomplexität schwerfällig wird. Entwickler können in diesem Fall dank Continuous Delivery das Projekt verschlanken und häufiger Releases ausliefern. So wird das Projekt überschaubarer, berechenbarer, zuverlässiger und flexibler[1].

Vorteile von Continuous Delivery[Bearbeiten]

Bei Releases setzt die Software-Industrie nicht mehr auf manuell durchgeführte Tests, sondern auf Mittel wie analytische Feedback-Methoden, ständiges Monitoring, integrierte Tests und Continuous Delivery. Ihnen gemein ist der Ansatz, die Reaktionszeiten zu verbessern, und Continuous Delivery spielt hier eine besondere Rolle. Zum Einsatz kommt Continuous Delivery sowohl bei kleinen Start-ups als auch bei großen Konzernen, die auf diese Methode setzen. Die hauptsächlichen Vorteile von Continuous Delivery lassen sich wie folgt zusammenfassen:


  • Kürzere Reaktionszeiten: Diese betreffen sowohl interne als auch externe Reize, die schnelle Reaktionen erfordern. Dabei kann es sich um ein Marktsegment handeln, das plötzlich die Richtung ändert oder eine kurzfristig entdeckte Sicherheitslücke, die behoben werden muss. Diese und zahlreiche andere Ereignisse erfordern ein schnelles Reaktionsvermögen, das durch Continuous Delivery ermöglicht wird.


  • Minimierung von Risiken: Die Auslieferung von Releases ist in den meisten Unternehmen mit viel Aufwand verbunden. Neue Funktionen, gefixte Bugs und viele andere Faktoren führen zu einem erheblichen Aufwand in der Qualitätssicherung und zu vermehrter Arbeit für die Build- und Release-Teams. Durch Continuous Delivery wird die Software ständig ausgeliefert, wenn auch nicht beim Kunden, sondern meist testweise innerhalb des Teams. So lassen sich Risiken minimieren, ohne dass der Kunde in Mitleidenschaft gezogen wird. Unternehmen, die mit Continuous Delivery arbeiten, erkennen Unzulänglichkeiten und Fehler oder Schwächen schneller und können entsprechend darauf reagieren.


  • Mehr Effizienz, weniger Kosten: Gerade rund um die Auslieferung von Releases sind die sich daraus ergebenden Kosten oft nicht transparent. Continuous Delivery sorgt hier für Transparenz bis hin zu den Entscheidungsträgern. Die durch das System erzeugte Pipeline erzeugt ihrerseits einen Zyklus, der zu einer übersichtlichen und transparenten Software-Delivery-Dynamik führt, die konkrete Auskünfte darüber gibt, wie lange es dauern und wie viel es kosten wird, zu releasen.


  • Flexibilität bei Release-Optionen: Um Continuous Delivery zu integrieren, muss zunächst die Infrastruktur ausgebaut und dem software-architektonischen und operativen Kontext angepasst werden. Danach werden die Vorteile schnell sichtbar hinsichtlich der Auslieferung von Fixes und Features. An den Anforderungen angepasste spezielle Feature-Sets können an Nutzergruppen oder Kunden ausgerollt werden, um auf diese Weise sicherzustellen, dass sie so funktionieren, wie sie zuvor skaliert wurden. Zudem können Features entwickelt und getestet werden, das Produkt selbst bleibt aber zunächst inaktiv, um später als große Releases ausgeliefert zu werden[2].

Nachteile von Continuous Delivery[Bearbeiten]

Die höhere Geschwindigkeit bei Continuous Delivery kann sich auch nachteilig auswirken. So kann es Teams passieren, dass sie auf ein falsches Ziel hin optimieren und dadurch nicht, wie geplant, die möglichst beste Qualität erzielt wird, sondern lediglich die Deployment-Frequenz im Fokus der Teams liegt. Die für Continuous Deployment nötige Infrastruktur kann zu Fehlern führen, die von automatisierten Tests nicht erfasst werden, was zur Folge haben kann, dass es zu Abstürzen oder inkompatiblen Elementen kommen kann.

Letztlich kann Continuous Delivery dazu führen, dass die beteiligten Teams den Blick dafür verlieren, ob auch wirklich alles so funktioniert, wie es gewollt ist. Wird zum Beispiel Test-Metriken wenig oder keine Beachtung geschenkt, während ein Projekt sich durch die Deployment-Pipeline bewegt, wird dadurch eine Messung und Bewertung des Fortschritts des Projektes und seines allgemeinen Wertes behindert bzw. erschwert.

Bedeutung für das Development[Bearbeiten]

Richtig angewendet, ist Continuous Delivery alles in allem in erster Linie von Vorteilen geprägt. Durch das frühe Feedback können Entwickler wichtige Erkenntnisse sammeln, und das zu einem sehr frühen Zeitpunkt des Projektes. Dadurch lassen sich rechtzeitig Optimierungen an Entwicklungsprozessen vornehmen, die zu einer allgemeinen Verbesserung führen. Nicht zuletzt eignet sich Continuous Delivery dazu, veralteten Codes zu begegnen.

Häufig werden neue Versionen einer Software auf die immer gleiche Version aufgebaut. Das kann zu Konflikten zwischen bestehenden und neuen Features führen. Mit Hilfe von Continuous Delivery werden Teams dazu gebracht, ihren Code stetig neu in die Richtung Produktion zu bewegen, sodass der Qualitätsabteilung frühe Tests ermöglicht werden, Rückmeldungen zu geben und letztlich dafür zu sorgen, dass am Ende die Version, die dem Kunden ausgeliefert wird, auch funktioniert[3].

Einzelnachweise[Bearbeiten]

  1. Continuous Delivery CD searchenterprisesoftware.de. Abgerufen am 08.03.2017
  2. Die Business Vorteile von Continuous Delivery blog.seibert-media.net. Abgerufen am 08.03.2017
  3. Continuous Deployment: Fluch oder Segen? jaxenter.de. Abgerufen am 08.03.2017

Weblinks[Bearbeiten]