Was ist Continuous Delivery (CD)?
Continuous Delivery ist eine Software-Release-Strategie neben Continuous Integration und Continuous Deployment. Die Idee hinter Continuous Delivery ist, die Software auf die Auslieferung vorzubereiten, oft mehrmals am Tag, und so in der Lage zu sein, neue Versionen jederzeit an Benutzer auszuliefern.
Um einen effizienten Continuous-Delivery-Prozess zu haben, ist es wichtig, dass Continuous Integration in deine Pipeline integriert ist. Der Code muss weiterhin eine Reihe von automatisierten Tests durchlaufen, aber die tatsächliche Freigabe in die Produktionsumgebung erfolgt manuell.
Daher stellt Continuous Delivery sicher, dass dein Code immer in einem auslieferbaren Zustand ist, selbst wenn häufig und von mehreren Developern Änderung vorgenommen werden.
Vorteile von Continuous Delivery
Schnellere Markteinführung
Da dein Code immer bereit ist, bedeutet dies, dass du kontinuierlich neue Funktionen in die Produktion einführen kannst. Dies ist besonders wichtig, um schnell auf sich ändernde Marktanforderungen zu reagieren, sodass Developer notwendige Änderungen genauso schnell vornehmen und an Endbenutzer ausliefern können.
Geringeres Risiko
Ähnlich wie bei Continuous Integration, werden Fehler bei häufigeren Änderungen leichter erkannt und behoben. Developer können fehlerhafte Releases einfach zurücksetzen, da sie in kleinen Batches veröffentlicht werden, die weniger kompliziert in der Produktionsumgebung zu korrigieren sind.
Jez Humble beschreibt auf seiner Seite zu Continuous Delivery vier Hauptprinzipien, um risikoreiche Deployments zu vermeiden:
- Niedriges Risiko durch schrittweise Releases. Das System muss so konstruiert sein, dass es die Veröffentlichung kleiner Batches ermöglicht, anstatt eines großen Releases. Dies erfordert den Aufbau versionierter APIs und die Implementierung von Mustern wie Circuit Breakers.
- Entkopplung von Deployment und Release. Integration von Feature Flags in deine Continuous Delivery Pipeline. Mit Feature Flags kannst du Deployment und Release entkoppeln, sodass du nur einige Änderungen veröffentlichen kannst, während andere hinter einem Flag verborgen bleiben.
- Verkleinerung der Batch-Größe. Das Veröffentlichen in kleinen Batches verringert tatsächlich das Risiko des Deployments, da Fehler leichter erkannt und zurückgesetzt werden können.
- Optimierung für Resilienz. Teams sollten immer auf den Fall vorbereitet sein, dass etwas schiefgeht, und jedes Problem als Lerngelegenheit betrachten. Es ist wichtig, dass jedes Team-Mitglied weiß, welche Verfahren zu befolgen sind, um ein Problem zu lokalisieren und den Betrieb wiederherzustellen.
Verbesserte Produkte
Da du deine Änderungen kontinuierlich veröffentlichst, erhältst du schnelleres Feedback von deinen Nutzern. Auf diese Weise kannst du Anpassungen vornehmen, die das Feedback der Kunden berücksichtigen, was zu einer höheren Kundenzufriedenheit mit deinen Produkten führt.
Bessere Koordination und Produktivität
Continuous Delivery reduziert den Stress, der mit Software Releases verbunden ist, insbesondere bei Rollbacks. Häufigere Releases helfen dem Team, effizienter zu arbeiten, und ermöglichen es den Developern, aktiv mit den Benutzern in Kontakt zu treten, während die eingeführten Änderungen kontinuierlich überwacht werden. Dies ermöglicht letztendlich mehr Wert für die User zu schaffen.
Der CI/CD-Prozess
Der erste Schritt beginnt mit Continuous Integration, dann baut Continuous Delivery auf diesem Prozess auf, indem die notwendigen Schritte durchgeführt werden, um die während der Continuous Integration integrierten Änderungen freizugeben. Zusammen bieten CI und CD viele Vorteile, einschließlich der Verkürzung des Softwareentwicklungsprozesses, der Möglichkeit für Developer, sofortiges Feedback zu erhalten, und der häufigen Veröffentlichung von Features.
Continuous Delivery wird oft mit Continuous Deployment verwechselt, aber es gibt einen signifikanten Unterschied zwischen diesen beiden Verfahren. Während bei Continuous Delivery die Software immer für die Delivery bereit ist, aber menschliches Eingreifen erforderlich ist, um diese Bereitstellungen auszulösen, wird bei Continuous Deployment die Software sofort und automatisch bereitgestellt.
Das bedeutet, dass bei Continuous Deployment jede Änderung automatisch in die Produktion geht. Bei Continuous Delivery hast du jedoch die Option, in die Produktion zu veröffentlichen, kannst dich aber entscheiden, dies nicht zu tun. Um Continuous Deployment zu implementieren, musst du jedoch Continuous Delivery durchführen.
CD und DevOps
DevOps vereint die Konzepte von Entwicklung und Betrieb und betont die Zusammenarbeit zwischen beiden. Die DevOps-Kultur betont die gemeinsame Verantwortung zwischen Entwicklung und Betrieb.
CD wird oft mit DevOps in Verbindung gebracht, da ein Teil der Einführung einer DevOps-Kultur darin besteht, durch schnelle und qualitativ hochwertige Delivery den Wert und die Reaktionsfähigkeit zu erhöhen. Ein solcher Ansatz erfordert die Schaffung einer Continuous Delivery Pipeline.
Mit anderen Worten, DevOps schafft die notwendigen Bedingungen für die Entwicklung, das Testen und die Bereitstellung neuer Software. Das Ergebnis der Implementierung von DevOps ist eine CI/CD-Pipeline, die durch eine effektive Zusammenarbeit zwischen Entwicklungs- und Betriebsteams unterstützt wird.
Continuous Delivery und Feature Flags
Die Implementierung von Continuous Delivery ist nicht ohne Risiken und Hürden. Die Verwendung von Feature Flags zusammen mit Continuous Delivery erleichtert jedoch die Umsetzung.
CD erfordert eine große Geschwindigkeit. Es gibt jedoch Zeiten, in denen du langsamer arbeiten musst, da Änderungen an einem Feature abzuschließen sind, was den kontinuierlichen Fluss, den du aufrechterhalten wolltest, bremst und so den gesamten Zweck von Continuous Delivery zunichtemacht.
Mit Feature Flags kannst du das Momentum beibehalten. Wenn es noch unvollständige Änderungen an einem Feature gibt, kannst du diese Änderungen mit Feature Flags deaktiviert lassen, bis sie bereit sind. Mit der Veröffentlichung kannst du trotzdem fortfahren, wenn andere Änderungen bereit für die Bereitstellung sind. Die Vorteile der Verwendung von Feature Flags mit Continuous Delivery sind klar.
Du musst nicht mehr warten, bis alle Änderungen fertig sind, um die Features bereitzustellen. Das bedeutet, Features können weiterhin schnell und sicher an deine User geliefert werden.
mit ABTasty
Erhalten Sie eine individuelle Komplettlösung für die Plattform
Demo anfordern