Mit dem Begriff Continuous Deployment wird ein Entwicklungs- und Veröffentlichungs-Ansatz für Software-Produkte beschrieben, der sich mit der wachsenden Bedeutung von Webanwendungen in den letzten Jahren durchgesetzt hat. Im Rahmen des Continuous Deployment-Ansatzes werden Änderungen an dem Software-Produkt kontinuierlich veröffentlicht und Nutzern zugänglich gemacht.

Continuous Deployment, Continuous Integration und Continuous Delivery

Bei Continuous Deployment (CD) und Continuous Delivery (CI) handelt es sich um Teilbereiche, die dem Dachbegriff Continuous Integration entsprungen sind. Prinzipiell geht es bei diesen Prozessen darum, dass Software-Produkte kontinuierlich weiterentwickelt werden. Dabei liegt die Perfektionierung der entwickelten Software im Fokus aller Bemühungen, wobei jedoch auch in erster Linie auf eine kontinuierliche Auslieferung des Produkts geachtet wird. Durch den Einsatz flächendeckender automatisierter Tests während des gesamten Entwicklungsprozesses kann somit gewährleistet werden, dass sich neu zugefügte Komponenten nicht negativ auf die Lauffähigkeit und Performance des Software-Produkts auswirken und dass sich keine Fehler unbemerkt in das System einschleichen. Nichtsdestotrotz bleibt Continuous Integration ein kontroverses Thema, das sowohl zahlreiche Vorteile als auch einige Nachteile mit sich bringt.

Die Grundlagen im Überblick

Continuous Delivery verspricht prinzipiell eine bessere Qualität des entwickelten Software-Produkts. Somit rückt das altbekannte Phasenmodell, das in der Softwareentwicklung bereits seit Jahrzehnten erfolgreich eingesetzt wird, in den Hintergrund. Alle neu entwickelten Komponenten und Änderungen am System werden im Rahmen des CI/CD-Ansatzes in Kombination mit modernen DevOps-Methoden umfassend getestet, ehe sie in die laufende Software integriert werden. Für Anbieter und Kunden bietet Continuous Deployment eine Vielzahl unterschiedlicher Vorteile. So kann beispielsweise das laufende Software-Produkt jederzeit durch eine bessere Version ausgetauscht und mit neuen Funktionen und Features angereichert werden, ohne dass Nutzer lange auf die Implementierung einer neuen Version warten müssen. Dies ist insbesondere für Webanwendungen von Vorteil, da der Betrieb der laufenden Software während der Aktualisierung auf eine neue Version nicht unterbrochen wird und Nutzer in der Regel davon nichts mitbekommen. Der wesentliche Nachteil des CI/CD-Ansatzes spiegelt sich in der Tatsache wider, dass sich tiefgreifende Änderungen nur schwer implementieren lassen. Oftmals bringt das eine gigantische Umstellung mit sich, da alle Tests und Testroutinen an die neuen Bedingungen angepasst werden müssen.

Continuous Deployment als Basis

Der Continuous Deployment-Ansatz kann als Hintergrund des gesamten Systems betrachtet und ist eng an DevOps gekoppelt. Das Software-Produkt wird kontinuierlich weiterentwickelt, sodass es jederzeit freigegeben und an den Nutzer bzw. Kunden ausgeliefert werden kann. Konkret bedeutet das, dass der gesamte Entwicklungsprozess im Rahmen des Continuous Deployment durch automatisierte Tests in isolierten Testumgebungen abgesichert wird, ehe neue Komponenten oder Versionen des Systems in die laufende Software integriert werden. Im Rahmen des Continuous Deployment-Ansatzes werden alle Änderungen an dem Software-System nach strengen Kriterien und vollautomatisch in die laufende Software implementiert. Auf diese Weise wird eine Continuous Delivery (kontinuierliche Auslieferung) des Software-Produkts ermöglicht.

Mehr zum Thema:
Berühmt, berüchtigt, digital - was sind eigentlich Hacker?

Gefahren beim Continuous Deployment

Der Einsatz von Continuous Deployment bringt auch einige potenzielle Probleme mit sich, die bei monolithischen Entwicklungsansätzen kaum eine Rolle spielen. So ist im Rahmen des Continuous Deployment die Gefahr relativ groß, dass innerhalb eines einzelnen Teams oder eines gesamten Projekts der Fokus der Arbeit unpräzise und falsch gesetzt wird, was katastrophale Folgen für den Ausgang des Projekts haben kann. Statt eine kontinuierliche Verbesserung des Software-Produkts anzustreben, wird in erster Linie eine möglichst hohe Deployment-Frequenz anvisiert. Ein beachtlicher Teil des Erfolgs des Continuous Deployment-Ansatzes hängt auch in hohem Maße von den eingesetzten Testkriterien und Testumgebungen ab, die bei der automatisierten Implementierung der Änderungen in die laufende Software zum Einsatz kommen. Falls schwerwiegende Fehler gar nicht erkannt oder nur zu spät identifiziert werden, sind infolgedessen in vielen Fällen umfangreiche Revisionen notwendig, um die eingeschlichenen Fehler zu beheben. Außerdem müssen für viele Neuerungen und Änderungen eigene Tests geschrieben werden, welche wiederum Fehler enthalten können.

Chancen und Möglichkeiten

Continuous Deployment kann unter einer streng strukturierten Arbeits-Arbeitsaufteilung sowie einer klar definierten Zielführung durchaus von großem Nutzen sein und erstklassige Ergebnisse liefern. Dieser Ansatz der Softwareentwicklung wird von vielen Entwicklern und Unternehmen, wie beispielsweise Red Hat oder Microsoft, in erster Linie wegen seiner Geschwindigkeit und seiner hohen Nutzerfreundlichkeit hochgeschätzt. Continuous Delivery ist von seinem Umfang her eher an die Bedürfnisse mittelgroßer und großer Software-Projekte ausgerichtet. Da die entsprechenden Systeme und die benötigte Infrastruktur in vielen Fällen von Grund auf aufgebaut, getestet und implementiert werden müssen, ist der Umstieg auf Continuous Deployment, Continuous Integration und Continuous Delivery für viele Unternehmen mit hohem Aufwand und intensiven Kosten verbunden. Nach der erfolgreichen Implementierung bringt dieser Ansatz der Softwareentwicklung jedoch beachtliche wirtschaftliche Vorteile mit sich. Neue Funktionen und Features lassen sich dann schneller umsetzen und für den Nutzer bzw. Kunden freigeben.

Letzte Artikel von Daniel Faust (Alle anzeigen)