Continuous Integration vs. Continuous Delivery vs. Continuous Deployment – Softwareentwicklungsmodelle im Überblick

Softwareentwicklungsprozesse sind teuer. Insbesondere dann, wenn der fertige Code sich nicht reibungslos in die bestehende Software einbinden lässt, schießen die Kosten für die Entwicklung in die Höhe. Abhilfe schaffen die modernen Ansätze Continuous Integration, Delivery und Deployment (kontinuierliche Integration, Lieferung und Bereitstellung). Diese setzen auf mehrfache Validierung des Codes bereits während seiner Entwicklung. Das Arbeiten in mehreren kleineren Entwicklungsphasen erlaubt es außerdem, dem Kunden Prototypen des gewünschten Produkts zu liefern. So kann dieser während der gesamten Entwicklung seine Anforderungen anpassen und schauen, ob die Software die gewünschte Form annimmt.

Mehr als nur eine Domain!

Hier finden Sie Ihre perfekte Domain - z.B. .de Domain + persönlicher Berater

E-Mail-Postfach
24/7 Support
Wildcard SSL

Agile Entwicklung

Ihren Ursprung haben die modernen Softwareentwicklungsmodelle allesamt im Konzept der agilen Softwareentwicklung. Hierbei handelt es sich um einen Ansatz, der die Entwicklung von Software nicht nur beschleunigen, sondern auch transparenter machen soll. Ziel der agilen Arbeitsweise ist es, Software zu entwickeln, die der Kunde wirklich benötigt. Durch Prototypen, die während jeder Phase der Entwicklung zur Verfügung gestellt werden, kann der Auftraggeber überprüfen, ob die Software tatsächlich das tut, was sie soll, und ob sie mit bestehender Software kompatibel ist. Auch Kundenwünsche, die erst im Entwicklungsprozess entstehen, können bei agilen Methoden berücksichtigt werden.

Fakt

Ein klassischer Entwicklungsprozess im Bereich Software besteht aus vier Phasen: Spezifikation, Entwicklung, Validierung und Evolution. Zunächst spezifiziert der Kunde seine Anforderungen. Dann folgt die eigentliche Entwicklungsphase, in der der Code geschrieben und das Projekt fertiggestellt wird. Im Anschluss überprüfen die Entwickler zusammen mit dem Kunden, ob die Software korrekt funktioniert. In der Phase der Evolution wird die Software an veränderte Anforderungen und Umweltbedingungen angepasst. Agile Entwicklungsmethoden setzen allerdings auf ein wesentlich kleinschrittigeres Vorgehen und wiederholen die einzelnen Phasen inkrementell. Hierdurch kann wesentlich flexibler auf Veränderungen reagiert werden.

DevOps

Der Trend zur agilen Entwicklung setzt sich auch in Unternehmenskulturen fort. Es gibt mehrere Ansätze, die innerbetrieblich für eine Beschleunigung von Entwicklungsprozessen sorgen sollen. Einer davon ist DevOps. Die Bezeichnung setzt sich aus den Wörtern „Development“ (Entwicklung) und „Operations“ (Organisation) zusammen. Ziel dieser Unternehmenskultur ist es, dass die eigentlichen Entwicklungsteams während der gesamten Softwareentwicklungsphase und darüber hinaus mit den Organisationsteams eines Betriebs zusammenarbeiten. So werden Probleme der Integration von Software von vornherein vermieden. Auch die Wartung und Bereitstellung der fertigen Programme werden erleichtert. Neben einer fortlaufenden Entwicklung setzen Vertreter von DevOps auf Continuous Integration und Continuous Deployment.

Softwareentwicklungsmodelle im Vergleich

Continuous Integration

Beim Konzept der kontinuierlichen Integration wird das Ziel verfolgt, Änderungen an einem Softwareprojekt möglichst schnell in die gesamte Software einzufügen. Der Code wird also täglich von den Entwicklern aktualisiert. Hierzu werden neben verschiedenen Continuous-Integration-Tools vor allem Versionenkontrollsysteme wie GitHub genutzt. Diese erlauben es, lokale Kopien des gesamten Projekts auf dem eigenen Rechner zu speichern. Die Programmierer können Änderungen am Code vornehmen und diese im Versionenkontrollsystem hochladen. Anschließend kann das gesamte Programm verschiedenen Tests unterzogen werden. Auf diese Weise können Integrationsprobleme schon im Vorhinein vermieden werden.

Continuous Delivery

Das Konzept Continuous Delivery geht noch einen Schritt weiter als der Ansatz der kontinuierlichen Integration: Der Code wird nicht nur täglich aktualisiert und jede Änderung schnellstens integriert, sondern dem Kunden wird darüber hinaus möglichst früh ein Prototyp zur Verfügung gestellt. Der Vergleich Continuous Integration vs. Continuous Delivery zeigt, dass der Fokus bei der kontinuierlichen Lieferung vor allem auf dem Feedback des Kunden liegt. Durch die frühe Auslieferung von fertigem Teil-Code ist es möglich, die Systemsoftware in ihrer realen Umgebung zu testen. Alles, was dem Kunden noch nicht gefällt, kann im weiteren Entwicklungsprozess angepasst werden. Wenn der Teil-Code dem Kunden gefällt, wird er im Anschluss manuell bereitgestellt.

Continuous Deployment

Einen ähnlichen, aber noch erweiterten Ansatz verfolgt Continuous Deployment. Bei diesem Verfahren werden automatisierte Tests genutzt, die direkt in den Entwicklungsprozess eingebunden werden. Die Gegenüberstellung Continuous Delivery vs. Continuous Deployment verdeutlicht, dass bei der kontinuierlichen Bereitstellung keine Zeitverzögerung zwischen Test- und Releasezeitpunkt des Codes vorhanden ist. Aufgrund der ausführlichen Test-Frameworks müssen die Entwickler nicht einmal mehr auf das Feedback des Kunden warten, sondern können ihren Teil-Code nach der Entwicklung direkt automatisiert bereitstellen.

Continuous Integrations vs. Continuous Delivery vs. Continuous Deployment

Welches Entwicklungsmodell sich am besten eignet, hängt ganz von den spezifischen Anforderungen an das Projekt ab. Insgesamt bieten alle drei Modelle jedoch die meisten Vorteile, wenn der Kunde und die Entwickler eng zusammenarbeiten können.

Die kontinuierliche Bereitstellung ist aufgrund der aufwendigen Testverfahren zwar teuer, führt aber dazu, dass die Kunden tägliche Verbesserungen der Software wahrnehmen können. Außerdem wird der Entwicklungsprozess beschleunigt, da er zu keinem Zeitpunkt unterbrochen wird. So ist es oft sogar möglich, die Mehrkosten für die Test-Frameworks am Ende wieder einzusparen. Bei der kontinuierlichen Lieferung hat der Kunde selbst noch sehr viel Handlungsspielraum, sodass Anforderungen ohne Nachteile auch erst im Nachhinein spezifiziert werden können. Kleine Änderungen am Code gehen ebenfalls leicht von der Hand.

Im Vergleich Continuous Integration vs. Continuous Delivery zeigt sich, dass die kontinuierliche Lieferung gänzlich auf die zwischenzeitliche Veröffentlichung des Codes verzichtet. Dieser Arbeitsprozess lohnt sich daher vor allem für kleinere Projekte, bei denen eine ständige Aktualisierung nicht relevant oder sogar hinderlich ist.

Tipp

Sie möchten den Entwicklungsprozess Ihres Webprojekts automatisieren? Mit IONOS Deploy Now können Sie Ihre GitHub-Repositories direkt in der IONOS-Infrastruktur bereitstellen und Veränderungen an Ihrer Website live mitverfolgen.