CI, CD und Release on Demand. Der DevOps-Urwald.
Allgemein

CI, CD und Release on Demand. Der DevOps-Urwald.

CI/CD und Release on Demand sind Begriffe der agilen Entwicklungsprinzipien. Durch die Automatisierung der Entwicklungspipeline lässt sich die Qualität und Time to Market der Software verbessern.

Der DevOps Cycle kann als ein iterativer Prozess verstanden werden.
Der DevOps Cycle kann als ein iterativer Prozess verstanden werden. (Bild: pixabay.com)

Im Zusammenhang mit modernen agilen Softwareentwicklungsmethodik wird immer wieder von Continuous Integration (CI), Continuous Deployment (CD) und Release on Demand gesprochen. Aber wie genau werden diese Begriffe unterschieden und worin liegt der wesentliche Unterschied? Wie verändert sich die Arbeitsweise im Gegensatz zur klassischen Softwareentwicklung? Im Fokus stehen dabei nicht nur die Automatisierung der Entwickliungspipeline oder die agile Vorgehensweise, sondern schlussendlich auch das stetige Verbessern des Kundennutzen. CI, CD und Release on Demand sind Begriffe, welche unter dem Oberbegriff DevOps zusammengefasst werden kann. Dabei umfasst DevOps weitaus mehr als nur CI, CD und Release on Demand. Oft wird DevOps auch mit einer Philosophie gleichgesetzt anstatt mit einer Vorgehensweise.

https://www.youtube.com/watch?v=scEDHsr3APg

Continuous Integration (CI) – Die Basis

Mit Release on Demand kann der strategisch korrekte Zeitpunkt für ein Release gewhält werden
Continuous Integration bilded die Basis von DevOps und testet automatisiert neue Features. (Quelle: eigene Darstellung)

Im weiteren Sinne kann unter CI das kontinuierliche Integrieren verschiedener Softwarekomponenten in das Gesamtsystem verstanden werden. Um dies zu erreichen ist es jedoch notwendig, dass die Entwicklungspipeline automatisiert und optimiert wird. Dazu zählt vor allem das automatisierte Testen der einzelnen Softwarebestandteile, sowie der Software als Ganzes. Das automatisierte Testing und die Integration wird immer dann ausgeführt, wenn ein Entwickler ein Feature fertig entwickelt hat und dieses zurück in die Gesamtapplikation spielen möchte.

Dabei ist das oberste Ziel von CI, den neu entwickelten Code einfach und automatisiert zu kompilieren und im Gesamtkontext der Applikation zu testen. Im Gegensatz zum manuellen Erstellen und Testen des Softwarepakets, kann mithilfe von CI sehr zeitnah neuen Code evaluiert und auf Bugs hin untersucht werden. Die Notwendigkeit nach CI wurde dadurch geschaffen, dass heutzutage viele verteilte, zum Teil auch virtuelle Teams an einer Softwarelösung arbeiten. Dabei steigt das Risiko für Fehler markant an, da jedes Team ihren Teil des Codes in die Gesamtlösung integrieren muss. Um die Fehleranfälligkeit zu mindern, muss ein Prozess gefunden werden, welcher diese Integrationsprobleme mitigiert. Durch CI wird jede noch so kleine Veränderung am Code automatisiert getestet und direkt in das Gesamtsystem integriert.

«The most powerful tool we have as developers is automation.»
Scott Hanselman

Continuous Deployment (CD) – Der Techniker

Continuous Deployment installiert die neuen Features automatisch auf dem System
Continuous Deployment installiert die neuen Features automatisch auf dem System. (Quelle: eigene Darstellung)

Unter Continuous Deplyoment kann dabei das stetige zur Verfügung stellen der neuen Features der getesteten Software verstanden werden. Durch das kontinuierliche Deployment der Software, wird die Philosophie unterstützt, dass der Kundennutzen erst dann erzeugt wird, wenn der Kunde die neuen Anforderungen und Features effektiv nutzen kann. Erst wenn der Endkunde die Features aktiv nutzen und bedienen kann, können Daten und Informationen erhoben und ausgewertet werden.

Der Unterschied von CD zu CI ist, dass Continuous Deplyoment die durch Continuous Integration getestete und integrierte Lösung, automatisiert auf dem produktiven System installiert. Nach erfolgreichem installieren wird die Gesamtapplikation nochmals automatisiert getestet. Erst wenn alle Qualitygates des Deploymentprozesses erfolgreich passiert wurden, kann Continuous Deplyoment die Gesamtlösung einem ausgewählten Kreis an Kunden automatisiert zur Verfügung stellen. Dieser automatisierte Prozess bildet eine gute Basis für A/B-Tests, bei denen wiederum lehrreiche Daten und Informationen gewonnen werden können. Durch das automatisierte Deployment kann der Feedbackloop mit dem Kunden praktisch zur Laufzeit stattfinden. Continuous Deplyoment automatisiert und vereinfacht den technischen Deploymentprozess, beachtet jedoch nicht den strategisch korrekten Zeitpunkt für einen Release. Der zeitliche und strategische korrekte Zeitpunkt wird dabei komplett vernachlässigt und steht nicht im Mittelpunkt von CD. Dieses Problem wird durch Release on Demand gelöst.

Release on Demand – Das Business

Mit Release on Demand kann der strategisch korrekte Zeitpunkt für ein Release gewhält werden
Mit Release on Demand kann der strategisch korrekte Zeitpunkt für ein Release gewhält werden (Quelle: eigene Darstellung)

Das stetige Deployment (CD) von neuen Features kann auch zum strategisch falschen Zeitpunkt erfolgen. Als Beispiel könnte hier zum Beispiel der Markteintritt eines Konkurrenten oder ein politischer Anlass genannt werden. Aus diesem Grund kann auf das Release on Demand zurückgegriffen werden. Dabei müssen die Begriffe Deplyoment und Release klar unterschieden werden. Unter Deployment wird der technische Prozess verstanden, wie eine Software automatisiert auf einem Endsystem installiert wird. Unter einem Release wird das effektive zur Verfügung stellen des Features einem Endkunden gegenüber verstanden. Durch Release on Demand kann die Frage beantwortet werden, wann der Kundennutzen erzielt werden soll, beantwortet werden.

Der Unterschied von Release on Demand zu CD ist, wie bereits erwähnt, der zentrale Kundennutzen. Erst wenn das Feature dem Kunden zur Nutzung zur Verfügung steht, wird der Kundennutzen effektiv erzeugt. Dabei wird der Begriff von CD erweitert und zwar werden die neuen Features auf dem produktiven System installiert, jedoch für den Kunden versteckt dargestellt. Dies wird durch Featuretoggles sichergestellt. Durch das Release on Demand kann der taktisch richtige Zeitpunkt vom Business gewählt werden und die Features werden mit einem Klick dem Kunden zur Verfügung gestellt.

Durch die Erweiterung von CD mit Release on Demand wurde auch das Zusammenspiel der Softwareentwicklung und des Marketings vereinfacht. Technisch gesehen ist das Feature bereits auf dem produktiven System (CD), jedoch noch nicht verwendbar (Featuretoggles). Das Marketing oder Business ist nun in der Lage, den Strategisch korrekten Zeitpunkt für ein Release zu wählen.

Feedbackloop – Der Agile

Durch schnelles Feedback können Features schnell entworfen oder angepasst werden
Durch schnelles Feedback können Features schnell entworfen und angepasst werden. (Quelle: eigene Darstellung)

Continuous Integration, Continuous Deplyoment und Release on Demand bilden wesentliche Bestandteile der modernen Entwicklungsphilosophie. Diese Begriffe repräsentieren verschiedene Mittel, um die Qualität der Software stetig zu verbessern und das Risiko eines BigBang-Releases zu mindern. Ganz im Einklang mit einer agilen Vorgehensweise, wie zum Beispiel Scrum oder Kanban, lässt sich das Prinzip von CI/CD perfekt verbinden. Dabei stehen stets der Endkunde und das Endprodukt im Mittelpunkt.

Der wesentliche Unterschied zur klassischen Entwicklungsphilosophie ist dadurch gegeben, dass neue Features sofort an den Markt gebracht werden können und der Nutzen sofort messbar ist. Im Gegensatz zu halbjährlichen oder gar ganzjährlichen Releasezyklen bei den klassischen Vorgehensweisen. Dieser Feedbackloop führt dazu, dass der Endkunde besser verstanden wird und neue Features gezielter definiert und entwickelt werden können.

Continuous Integration, Continuous Deployment und Release on Demand kann als iterativer Prozess oder Kreislauf verstanden werden, da die gesammelten Daten aus den Feedbackloops direkt in die Definition von neuen Features einfliesst. Das stetige Verbessern der Software und kontinuierliche steigern des Kundennutzen steht dabei immer im Mittelpunkt.

«Practice the philosophy of continuous improvement. Get a little bit better every single day.»
Brian Tracy

Durch DevOps lässt sich die Software stetig verbessern, auch wenn in kleinen Schritten. Jeder ist im vollen Bewusstsein wohin die Reise geht.

 

Quellen:

Pittet, S. (2020a). Continuous integration vs. Continuous delivery vs. Continuous deployment. Atlassian. https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment
Pittet, S. (2020b). What Is Continuous Deployment? Atlassian. https://www.atlassian.com/continuous-delivery/continuous-deployment
Sacolick, I. (2020, Januar 17). What is CI/CD? Continuous integration and continuous delivery explained. InfoWorld. https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html
Steven, J. (2018, März 19). What’s the difference between agile, CI/CD, and DevOps? | Synopsys. Software Integrity Blog. https://www.synopsys.com/blogs/software-security/agile-cicd-devops-difference/

 

Weiterführende Links
DevOps: Breaking the Development-Operations barrier
What’s the difference between CI and CD (and the other CD)?
CAS DevOps Leadership and Agile Methods Verstehen und anwenden

Beitrag teilen

Marco Neuhaus

Marco Neuhaus ist Student an der Hochschule Luzern und bloggt zum Modul Studienreise des Studiums Master in Wirtschaftsinformatik.

Alle Beiträge ansehen von Marco Neuhaus →

Schreibe einen Kommentar