Continuous Delivery

Continuous Delivery (CD) ist ein Software-Engineering-Ansatz, bei dem Teams Software in kurzen Zyklusphasen produzieren, um sicherzustellen, dass die Software jederzeit zuverlässig veröffentlicht werden kann. Dies geschieht durch das Durchlaufen eines 'produktionsähnlichen Umfelds' mithilfe eines automatisierten Prozesses, ohne manuelle Schritte. Das Ziel besteht darin, Softwareanpassungen schneller und häufiger zu erstellen, zu testen und freizugeben. Diese Vorgehensweise trägt dazu bei, die Kosten, die Zeit und das Risiko bei der Bereitstellung von Änderungen zu minimieren, indem sie eine schrittweise Aktualisierung von Anwendungen in der Produktion ermöglicht. Ein unkomplizierter und wiederholbarer Bereitstellungsprozess ist für Continuous Delivery von großer Bedeutung.

Die Vorteile von Continuous Delivery auf einen Blick

Verbesserung der Time to Market

Continuous Delivery (CD) verbessert die Time to Market, indem es den gesamten Entwicklungs- und Bereitstellungsprozess beschleunigt. Mit CD können Entwickler kontinuierlich kleinere Änderungen an Software vornehmen und diese sofort in die Produktionsumgebung überführen. Dadurch entfallen lange Entwicklungszyklen und manuelle Bereitstellungsprozesse, die traditionell viel Zeit in Anspruch nehmen.

Durch die kontinuierliche Bereitstellung von Software können Unternehmen neue Funktionen, Fehlerkorrekturen und Verbesserungen schneller auf den Markt bringen, um den sich ständig ändernden Kundenanforderungen gerecht zu werden. Dies ermöglicht es, auf Marktveränderungen und Wettbewerbsentwicklungen schneller zu reagieren, was letztendlich die Wettbewerbsfähigkeit stärkt und die Chancen auf Markterfolg erhöht. Durch die Reduzierung von manuellen Aufgaben und menschlichen Fehlern wird die Qualität und Zuverlässigkeit der Software ebenfalls verbessert, was zu höherer Kundenzufriedenheit führt. Zusammengefasst trägt Continuous Delivery dazu bei, dass Software-Produkte schneller und effektiver auf den Markt gebracht werden können, was in der heutigen schnelllebigen Geschäftswelt von entscheidender Bedeutung ist.

Höhere Qualität

Continuous Delivery (CD) verbessert die Qualität der entwickelten Software in vielerlei Hinsicht. Durch den Einsatz automatisierter Tests, die bei jedem Code-Commit oder Build-Durchlauf ausgeführt werden, können Fehler frühzeitig erkannt und behoben werden. Dies führt zu einer insgesamt robusteren und fehlerfreieren Software.

Die Nutzung von konsistenten, produktionsähnlichen Umgebungen bei der automatisierten Bereitstellung minimiert Unterschiede zwischen Entwicklungs- und Produktionsumgebungen, was die Zuverlässigkeit der Software erhöht. Darüber hinaus bietet CD eine lückenlose Rückverfolgbarkeit von Änderungen im Code, was die Identifizierung und Behebung von Fehlern erleichtert.

Die Möglichkeit, schnell Bugfixes und Updates bereitzustellen, trägt ebenfalls dazu bei, die Qualität der Software zu steigern. Schließlich fördert CD eine kontinuierliche Feedbackschleife zwischen Entwicklern, Testern und Benutzern, wodurch Anforderungen und Probleme frühzeitig erkannt und in die Softwareentwicklung integriert werden können. Insgesamt führt Continuous Delivery zu zuverlässigeren, qualitativ hochwertigeren Softwareanwendungen, was wiederum die Benutzerzufriedenheit und den Erfolg der Software steigert.

Geringere Kosten

Continuous Delivery trägt zur Kostensenkung in der Softwareentwicklung bei, indem es unnötigen Overhead minimiert und die Fehlerbehebung effizienter gestaltet. Der Einsatz von automatisierten Tests und Bereitstellungsprozessen reduziert manuelle Aufgaben erheblich. Dies bedeutet, dass Entwickler weniger Zeit mit wiederholenden, zeitraubenden Aufgaben wie manuellem Testen und Bereitstellen verbringen müssen. Dadurch werden Ressourcen frei, die für produktivere Entwicklungsaufgaben genutzt werden können.

Darüber hinaus ermöglicht CD die frühzeitige Erkennung und Behebung von Fehlern. Durch kontinuierliche Tests und schnelle Bereitstellungen werden Probleme schneller identifiziert und behoben, bevor sie sich zu teuren und komplexen Herausforderungen entwickeln. Dies führt zu geringeren Kosten für Fehlerbehebung und Support nach der Bereitstellung.

Die Optimierung des Entwicklungs- und Bereitstellungsprozesses durch Continuous Delivery trägt somit dazu bei, die Gesamtkosten eines Softwareprojekts zu senken, indem sie die Effizienz steigert und die Auswirkungen von Fehlern minimiert. Dies ermöglicht es Unternehmen, ihre Ressourcen effektiver einzusetzen und gleichzeitig hochwertige Software schneller und kosteneffizienter bereitzustellen.

Einsparungen im Entwick­lungs­prozess durch Continuous Delivery

DevOps bzw. Platform Engineering reduziert die Entwicklungszeit und -kosten. Zusammen mit Testautomatisierung senken Sie bereits kurzfristig die Kosten im Softwareentwicklungsprozess.

Automatisierungen verringern den Aufwand für Fehlerbehebungen erheblich. Gleichzeitig steigt die Softwarequalität. Investitionen in Kultur und Technologie amortisieren sich schnell.

Nutzen Sie unseren interaktiven Rechner und rechnen Sie Ihr Sparpotential direkt aus.

Unsere Teams arbeiten grundsätzlich mit Continuous Delivery und sind deshalb deutlich günstiger im Endergebnis als klassische Teams. Wir beraten auch Ihre Teams gerne, wie Sie mit Continuous Delivery mehr Nutzen für Ihre Kosten erhalten.

Continuous Delivery Rechner

50
1x pro Monat
Sofort

Zu Projektkosten trägt entscheidend die sogenannte "Integration" bei. Je weniger integriert wird, desto höher der Aufwand. Verwenden Sie den Regler und sehen Sie selbst, wie enorm der Kostenunterschied ist.

Integrationsaufwand je Monat
Informationen und Berechnung

Berechnungsweise: Entwickler produzieren oder verbessern Features. Bei 5 Integrationen pro Feature und der Annahme, in 1/4 der Fälle kommt es zu Konflikten, entstehen Konflikte mit zwischen 0,5h und 2,5h Nachbesserungszeit. Das sind bereits über 30h Aufwand.

Sparpotenzial je Monat
Zeit bis Entwicklungen nutzbar werden
(Lead Time for Changes)

Details zu Berechnungsmethode finden Sie hier

Return on Invest (ROI)

Im Vergleich zu den Investitionskosten lohnt sich die Einführung von Continuous Delivery fast immer. Die Investition amortisiert sich wenigen Monaten.

Einmalig
Implementierung
-15.000EUR
Trainings
-6.000EUR
Summe
-16.000EUR
Monatsrechnung
Wartung
-700EUR
Einsparung
+2.100EUR
Summe
+5.400EUR

Wie kann es sein, dass etwas Zeit spart, wenn man es öfter tut?

Wenn dies für Sie kontraintuitiv oder sogar paradox klingt, sind Sie nicht allein. Wie kann das überhaupt sein? Aus einer Managementperspektive kann es besonders schwer verständlich sein: Ist es nicht effizienter, 20 Kisten auf einen Wagen zu packen und sie zusammen zu liefern, anstatt jede einzeln zu liefern? Als Entwickler denken Sie vielleicht: Ich möchte keine halbfertigen Lösungen liefern, warum sollte ich das tun? Schlimmer noch, riskiere ich nicht, den Code für andere zu brechen, wenn ich alles öfter zusammenfüge, als es notwendig ist?

Die oben genannten Bedenken sind typische Anfangsreaktionen auf das Konzept der Continuous Delivery (kontinuierliche Bereitstellung). Es ist jedoch wichtig zu verstehen, dass Continuous Delivery keine unüberlegte und unkontrollierte sofortige Veröffentlichung von Software bedeutet. Stattdessen handelt es sich um eine systematische und automatisierte Methode, die Entwicklern ermöglicht, Software in kleinen, getesteten Inkrementen bereitzustellen, anstatt größere und riskantere Chargen auf einmal zu liefern.

Continuous Delivery kann dazu beitragen, Risiken zu minimieren, da jede Code-Änderung umgehend getestet wird und Fehler frühzeitig erkannt werden. Sie fördert auch die Stabilität des Codes, da Entwickler ständig sicherstellen, dass ihre Änderungen mit der bestehenden Codebasis kompatibel sind. Darüber hinaus bietet sie die Möglichkeit, schnell auf sich ändernde Kundenanforderungen zu reagieren, da neue Funktionen schneller bereitgestellt werden können.

Insgesamt kann Continuous Delivery sowohl die Effizienz als auch die Qualität in der Softwareentwicklung steigern, während gleichzeitig das Risiko von Problemen und Ausfällen reduziert wird. Dies ist besonders in der heutigen schnelllebigen Geschäftswelt von Vorteil, in der flexible und schnelle Reaktionen auf Marktbedürfnisse entscheidend sind.

Häufige Feedbackschleifen sparen Zeit

Wie würden Sie die Aufgaben aufteilen?

Szenario 1: Zwei Bäcker backen die oberen beiden Schichten getrennt von der Unteren und arbeiten dann gemeinsam um sie zusammenzufügen.
Story: Backe die beiden oberen Schichten
Story: Backe die untere größere Schicht
Ergebnis: Irgendetwas läuft schief und kann nicht mehr ohne Weitere behoben werden.

Ok, der Sprint ist vorbei. Wir haben einen Kuchen, leider fehlt die Glasur der zweiten Schicht. Wir haben sie vergessen und bereits die letzte Schicht aufgesetzt, daher hatten wir keine Zeit mehr, die oberste Schicht nochmal abzunehmen.

Wir können den Kuchen entweder so liefern oder die Glasur im nächsten Sprint fertigstellen.

Szenario 2: Zwei Bäcker backen die jede Schicht voneinander getrennt und arbeiten und besprechen die Ergebnisse spätestens nach jeder Schicht.
Story: Die obere Schicht backen
Story: Die mittl. Schicht backen
Story: Die untere größere Schicht
Wahrscheinliches Ergebnis: Sie bemerken die kleine Unachtsamkeit sofort und beheben sie in dem Moment, in dem sie auftritt.

Ok, der Sprint ist vorbei. Während ich die zweite Schicht hinzugefügt habe, vergaß ich die Glasur. Da wir uns aber nach jeder Schicht abgesprochen haben, konnten wir schnell reagieren und den Kuchen pünktlich fertigstellen.

Das Mindset ist entscheidend

Der Einsatz von Continuous Delivery ist nicht etwas, das man einfach beschließen, kaufen und jemanden umsetzen lassen kann. Er wird von den Menschen in Ihrer Organisation abgelehnt werden.

Wie die Erfahrung zeigt, sträuben sich die meisten Leute, Entscheider, Entwickler, Manager, gegen die Idee, dass es überhaupt möglich ist, einen komplexen Prozess, der immer wieder komplexe Probleme produziert, durch eine Automatisierung zu ersetzen.

Ein großer Grund ist die Angst, ersetzt zu werden. Sei es aus finanziellen Gründen, aber auch wegen der Tatsache, dass eine komplexe Aufgabe nun von einem Algorithmus erledigt werden soll. Das Selbstwertgefühl der Beteiligten wird in Frage gestellt.

Die Argumentation, mehr zu liefern, erscheint genauso widersinnig wie die Begründung, warum Tests sinnvoll sind. Es ist dasselbe Problem.

Wenn Ihre Unternehmenskultur nicht mitspielt, werden Ihre Teams die notwendigen Schritte zur Minimierung des Aufwands für die möglichst häufige Bereitstellung von Softwareänderungen, um mehr Feedback zu erhalten, ablehnen oder sogar verhindern.

Ein Entwicklungsteam davon zu überzeugen, Continuous Delivery (CD) einzuführen, kann ein schwieriges Unterfangen sein. Es erfordert, mit alten Gewohnheiten zu brechen und einen neuen Ansatz für die Softwareentwicklung zu wählen, der sich zunächst wie eine Verlangsamung des Tempos anfühlen kann. Die wirklichen Vorteile von CD werden oft erst deutlich, wenn Sie sie in einen wesentlichen Teil Ihres Softwareentwicklungsprozesses integriert haben.

Der Widerstand gegen CD kann aus negativen Erfahrungen in der Vergangenheit oder aus einem Mangel an Unterstützung und Anleitung resultieren. Einige Teammitglieder erinnern sich vielleicht an Fälle, in denen Automatisierungsversuche zu Komplikationen, Kostenüberschreitungen oder Projektverzögerungen geführt haben. Diese Skepsis kann ein gewaltiges Hindernis für Veränderungen sein.

Anstatt Ihrem Team CD aufzudrängen, sollten Sie mit gutem Beispiel vorangehen. Seien Sie ein Verfechter von CD, ohne sie explizit zu forcieren. Wenden Sie CD-Prinzipien bei Ihrer Arbeit an, aber tun Sie dies diskret. Lassen Sie Ihre Taten lauter sprechen als Worte. Schon bald werden Ihre Kollegen zwei Dinge bemerken: Ihr Code wird durchweg mit einer umfassenden Testabdeckung geliefert und die Arbeit mit Ihrem Code ist mühelos, weil alles in gut getesteten Komponenten organisiert ist.

CD wird für unsere Art von Projekten nicht funktionieren.
Automatisierung ist nicht immer besser
Man kann nicht auf jeden Grenzfall achten
Es ist zu riskant für unser Geschäft
CD wird unseren Compliance-Anforderungen nicht gerecht
CD unterbricht unseren derzeitigen Arbeitsablauf
CD ist zu komplex für die Umsetzung
Wir haben keine Zeit für CD

Übersicht

Automatisierung

Um die optimale Geschwindigkeit in diesem Gesamtprozess zu erreichen, ist es notwendig, alle manuellen Schritte im Softwarelieferprozess zu eliminieren.

Nur mit Automatisierung ist die maximale Geschwindigkeit möglich.

Pipelines

Pipelines sind das Herzstück der modernen Continuous Delivery. Sie realisieren ein Werkzeug, das den Prozess der Softwarebereitstellung vollständig automatisiert.

Diese Pipelines müssen so gestaltet sein, dass sie von den Entwicklern einfach zu bedienen sind.

Die Benutzererfahrung wird im Bereich des Platform Engineering entworfen.

Verzweigungsstrategie

Um den automatisierten Auslieferungsprozess zu straffen, ist die Verzweigungsstrategie zentral. Aus dem Verzweigungskonzept werden bestimmte Ereignisse entnommen und an die Automatisierung weitergeleitet, so dass der Entwickler keine weiteren Maßnahmen ergreifen muss. Neue Code-Änderungen werden automatisch erkannt, von den Pipelines aufgegriffen und der Auslieferungsprozess läuft so lange, bis er auf negative Testergebnisse stößt, die das Feedback für den Entwickler darstellen.

Verbindung zu DevOps

DevOps ist ein umfassenderes Bild, auch wenn der Name irreführend ist.

Warum ist es so wichtig, die Zusammenarbeit zwischen Entwicklung und Betrieb zu managen?

Das liegt daran, dass die Continuous Delivery zwischen den Entwicklern und den Betreibern stattfindet. Deshalb ist DevOps die Aufgabe, beide Seiten zu schulen.

Die Entwickler müssen lernen, dass sie sich vollständig auf automatisierte Schritte verlassen müssen, um die Software auszuliefern, und auf der anderen Seite müssen die Betreiber verstehen, dass die Bereitstellung ein vollständig automatisierter Prozess ist.

Operations

Operations bezieht sich auf die Aktivitäten und Prozesse im Zusammenhang mit der Bereitstellung, Verwaltung und Wartung von Softwareanwendungen in einer Produktionsumgebung. Dazu gehören Aufgaben wie die Einrichtung von Servern, die Konfiguration der Netzwerkinfrastruktur, die Überwachung der Systemleistung, die Gewährleistung der Sicherheit, die Anwendung von Updates und die Behebung von Problemen, die während des Lebenszyklus der Software in einer Live-Umgebung auftreten können. Operations-Teams spielen eine entscheidende Rolle, wenn es darum geht, sicherzustellen, dass Software ausgeliefert wird und in der Produktion reibungslos läuft. Sie arbeiten oft mit den Entwicklungsteams zusammen, um eine nahtlose Softwareauslieferung und einen kontinuierlichen Support zu gewährleisten."

Pipelines

Pipelines sind das Herzstück der modernen Continuous Delivery. Sie realisieren ein Werkzeug, das den Prozess der Softwarebereitstellung vollständig automatisiert.

Diese Pipelines müssen so gestaltet sein, dass sie von den Entwicklern einfach zu bedienen sind.

Die Benutzererfahrung wird im Bereich des Platform Engineering entworfen.

Monitoring

Monitoring ist der systematische Prozess der Beobachtung und Verfolgung verschiedener Aspekte eines Systems oder Prozesses, um Daten zu sammeln und seine Leistung, seinen Zustand oder sein Verhalten zu bewerten.

Es spielt eine entscheidende Rolle bei der Erkennung und Behebung von Problemen, Anomalien oder Abweichungen von erwarteten Normen in Echtzeit und hilft Unternehmen, die Zuverlässigkeit und Effizienz ihrer Systeme und Dienste zu erhalten.

Eine effektives Monitoring ermöglicht eine proaktive Entscheidungsfindung. Dies erlaubt Unternehmen Ressourcen zu optimieren, die Sicherheit zu erhöhen und die Gesamtleistung zu verbessern, indem sie schnell auf aufkommende Trends oder potenzielle Probleme reagieren.

Reale Beispiele für einen CI/CD-Prozess

Beispiel 1: Bokbasen, Norwegen

Bokbasen, ein in Oslo ansässiger Informationsdienst, bietet viele Vorteile für alle Teile der norwegischen Verlagswelt.

Bokbasen muss eine Bereitstellungsstrategie wählen, die Folgendes bietet:

  • Entwicklung eines einzigen Frameworks für alle Umgebungen
  • Frühzeitige und häufige Freigabe
  • Verwendung einer rollenden Bereitstellung, um das bestehende Modell schrittweise zu ersetzen oder zu aktualisieren.
  • Stetes Beheben von Fehlern durch Rollforward auf eine kommende Version

Bokbasen musste sein eigenes DevOps-Team in die Lage versetzen, konsistent in allen Umgebungen, einschließlich der Produktionsumgebung, bereitzustellen.

https://hackernoon.com/a-real-life-example-of-cicd-pipelines

Beispiel 2: Agile Casino, Deutschland

Agile Casino, eine kostenlose Anwendung zum Spielen von Scrum-Poker in kollaborativen Online-Remote-Teams.

Agile Casino muss eine Bereitstellungsstrategie wählen, die folgende Eigenschaften aufweist:

  • Einfache Schritte, die bei jeder Änderung auf dem Master-Zweig aufgerufen werden
  • Freigabe nach menschlicher Überprüfung
  • Verwendung einer rollende Bereitstellung, um das vorhandene Modell schrittweise zu ersetzen oder zu aktualisieren.
  • Behebung von Fehlern immer durch Rolling Forward auf eine kommende Version

Das Agile Casino Team wurde dadurch ermöglicht, dass sich die damaligen Nachwuchsentwickler schon früh in ihrer Karriere mit der Idee des schnellen Scheiterns vertraut machten.