Continuous Delivery (CD) bezeichnet die Automatisierung der manuellen Schritte zur Vorbereitung der Produktionsfreigabe einer Softwareanwendung.
Continuous Delivery (CD) baut auf Continuous Integration (CI) auf und automatisiert die Schritte, die für die Produktionsfreigabe einer Softwareanwendung notwendig sind.
Jedes Mal, wenn Sie Codeänderungen in einen dafür vorgesehenen Branch mergen, führt Ihr CI-Prozess eine Reihe von Prüfungen durch – zum Beispiel automatisierte Unit-Tests – und erstellt einen Build. Durch Continuous Delivery wird dieser Prozess erweitert, indem jeder Build automatisch in einer Reihe von Test- und Staging-Umgebungen bereitgestellt und dort mit weiteren automatisierten Tests geprüft wird.
Diese Tests können Integrationstests, UI-Tests, Performancetests (darunter Last-, Soak- und Stresstests) oder End-to-End-Tests sein. Je nach Branche kann Continuous Delivery auch genutzt werden, um die Sicherheit oder Barrierefreiheit zu testen oder manuelle Benutzerakzeptanztests oder explorative Tests durchzuführen. Wenn ein Build jede Phase erfolgreich durchlaufen hat, ist er bereit für die Produktionsfreigabe.
Wie bei Continuous Integration liegt das Geheimnis eines effektiven Continuous-Delivery-Systems darin, den Prozess so weit wie möglich zu automatisieren. Dazu gehört auch Feedback zu jeder Phase und die Benachrichtigung des Teams, wenn ein Build eine Phase nicht besteht, damit das Problem schnell behoben werden kann.
Sowohl Continuous Delivery als auch Continuous Deployment beinhalten die automatische Bereitstellung von Builds in Umgebungen und die Durchführung automatisierter Tests. Aus diesem Grund werden die beiden Begriffe manchmal synonym verwendet. Es gibt jedoch einen relevanten Unterschied zwischen Continuous Delivery und Continuous Deployment.
Bei Continuous Deployment werden Codeänderungen automatisch in die Produktion übernommen, sobald sie die einzelnen Testphasen erfolgreich durchlaufen haben. Bei Continuous Delivery hingegen wird der letzte Schritt – die Freigabe Ihrer Software für die Produktion – manuell durchgeführt.
Continuous Deployment mag zwar als Idealziel für jedes Software-Entwicklungsteam erscheinen, aber es gibt gute Gründe, warum sich viele Teams für Continuous Delivery entscheiden.
Mehr zum Unterschied zwischen Continuous Delivery und Continuous Deployment.
Die letzte Phase eines CI/CD-Prozesses umfasst das Deployment Ihrer Codeänderungen in die Produktion. Bei Continuous Delivery erfolgt die Entscheidung über die Produktionsfreigabe manuell, auch wenn der eigentliche Releaseprozess automatisiert ist.
Einige Teams verwenden Continuous Delivery als Zwischenschritt zu Continuous Deployment. Das manuelle Auslösen der endgültigen Bereitstellung in die Produktion schafft ein Sicherheitsnetz, während Sie Vertrauen in Ihre automatisierten Tests und Prüfungen aufbauen. So könnten Sie sich zum Beispiel dafür entscheiden, mehrere Monate lang Continuous Delivery zu verwenden, bevor Sie dazu übergehen, jede Codeänderung, die Ihre Tests besteht, automatisch in die Produktion zu übernehmen.
Die Bereitstellung von mehreren Updates pro Tag oder Stunde ist jedoch nicht immer die beste Wahl. Bei versionierter Software – etwa Mobil-Apps, APIs, Embedded-Software oder Desktopanwendungen – ist es oft sinnvoll, Änderungen in größere Releases zusammenzufassen. Benutzer*innen von installierten Produkten wollen nicht ihre Anwendungen alle paar Stunden aktualisieren, und bei APIs kann ein Update auf eine neue Version erhebliche Auswirkungen auf die Nutzung haben. Bei der Entscheidung zwischen Continuous Delivery und Continuous Deployment geht es darum, die richtige Wahl für Ihr Unternehmen und Ihre Benutzer*innen zu treffen.
Auch wenn die genauen Buildschritte, Umgebungen und Tests von Ihrem Produkt und Ihrer Organisation abhängen, können Ihnen die folgenden allgemeinen Grundsätze beim Aufbau Ihres Continuous-Delivery-Prozesses helfen:
Durch Continuous Delivery können Teams ihre Software schneller und häufiger veröffentlichen und gleichzeitig die Anzahl der Bugs reduzieren, die es in die Produktionsumgebung schaffen. Der Schlüssel dazu ist, sicherzustellen, dass Ihr Code immer releasefähig ist, indem Änderungen kontinuierlich getestet und Probleme sofort behoben werden.
Continuous Delivery bietet darüber hinaus zahlreiche weitere Vorteile:
Die Implementierung eines Continuous-Delivery-Prozesses kann mit einigen Herausforderungen verbunden sein:
Der Aufbau eines Continuous-Delivery-Prozesses mag schwierig erscheinen, aber mit der richtigen Herangehensweise können Sie damit Ihre Software-Releases dramatisch beschleunigen und gleichzeitig Fehler minimieren.
Entscheidend für eine effektive Implementierung von Continuous Delivery ist eine DevOps-Mentalität. Anstatt die Softwareentwicklung als eine Einbahnstraße zu betrachten, auf der Anforderungen, Code und Berichte von einem Team an das nächste weitergereicht werden, geht es bei DevOps um Zusammenarbeit und schnelles Feedback mittels kurzer, iterativer Zyklen.
Wenn Sie sich diese Mentalität zu eigen machen wollen, hilft es, wenn Sie Ihre Definition von „fertig“ überdenken. Statt einen Beitrag als abgeschlossen zu betrachten, sobald Sie Ihren Code an das nächste Team in der Kette übergeben haben, gilt Ihr neues Feature oder Ihre Codeänderung erst dann als fertig, wenn das Release veröffentlicht wurde. Wenn an irgendeinem Punkt in der Pipeline ein Problem auftritt, wird durch sofortiges Feedback und gemeinsame Korrekturarbeit schneller eine Lösung gefunden als durch langwierige Berichte, die über ein Change Board übermittelt und genehmigt werden müssen. Darum geht es bei der Continuous Delivery.
Weitere Tipps für den Einstieg in Continuous Delivery finden Sie in unserem Best-Practices-Leitfaden für CI/CD.
Continuous Delivery erleichtert und beschleunigt die Bereitstellung von Software-Releases, sodass Sie die Releasefrequenz Ihrer Produktionsversionen hochfahren können. Anstelle eines großen vierteljährlichen oder jährlichen Updates können häufig kleinere Updates bereitgestellt werden. Dies bedeutet nicht nur, dass Ihre Kunden schneller von neuen Funktionen und Fehlerkorrekturen profitieren. Sie erhalten darüber hinaus auch einen Einblick in die Nutzung Ihrer Software „in freier Wildbahn“ und können Ihre Pläne entsprechend anpassen.
Während einige Organisationen lieber die Kontrolle über den letzten Schritt des Releaseprozesses behalten wollen, besteht für andere die logische Konsequenz einer CI/CD-Pipeline darin, mit einer Methode namens Continuous Deployment auch die Veröffentlichung von Produktionsreleases zu automatisieren. Mehr dazu erfahren Sie im nächsten Abschnitt unseres CI/CD-Leitfadens.
TeamCity ist eine CI/CD-Plattform, die umfassende Unterstützung für eine Vielzahl von Buildtools, Testframeworks, Containern und Cloudinfrastruktur-Systemen bietet. Ganz gleich, ob Sie Ihre Build-Systeme lokal, in der Cloud oder kombiniert hosten – TeamCity koordiniert Ihre Build-Aufgaben mit maximaler Effizienz.
Dank der individualisierbaren Pipeline-Logik von TeamCity können Sie wählen, wann Sie Prozesse parallel ausführen möchten – z. B. Tests auf unterschiedlichen Plattformen – und wann ein erfolgreicher Abschluss erforderlich ist, bevor die nächste Phase beginnen kann. Konfigurierbare Benachrichtigungen stellen Ihnen stets die benötigten Informationen bereit, egal wo Sie gerade arbeiten, und sie helfen Ihnen, unnötige Unterbrechungen zu vermeiden. Detaillierte Ergebnisse wiederum sorgen dafür, dass es immer einen klaren Weg in die Produktion gibt.