Continuous Delivery und Continuous Deployment im Vergleich

Mit diesen beiden Automatisierungsverfahren lässt sich die Bereitstellung von qualitativ hochwertigem Code für Kunden beschleunigen.

Continuous Delivery und Continuous Deployment

Neben Continuous Integration sind Continuous Delivery und Continuous Deployment weitere Methoden, mit denen die Phasen der Softwarebereitstellung automatisiert werden. Mit diesen Verfahren können Entwicklungsteams neue Features, Erweiterungen und Fixes für Ihre Kunden mit höherer Geschwindigkeit, Genauigkeit und Produktivität freigeben.

Continuous Delivery und Continuous Deployment weisen eine Vielzahl von Gemeinsamkeiten auf. Um die Unterschiede zwischen den beiden Vorgehensweisen zu verstehen und herauszufinden, für welchen Ansatz Sie sich entscheiden sollten, muss ermittelt werden, welche Phasen der Softwarebereitstellung automatisiert werden können.

Automatisieren des Softwarebereitstellungsprozesses

Kunden verlangen heute nach Produkten, die einen immer höheren Grad an Personalisierung und immer höhere Sicherheitsstandards aufweisen. Um diese Anforderungen zu erfüllen und Software sowohl schneller als auch zuverlässiger bereitzustellen, können Entwicklungsteams eine DevOps-Kultur etablieren.

Durch eine DevOps-Kultur werden die Silos einzelner Bereiche aufgebrochen, um Mitarbeiter, Prozesse und Technologie für eine verbesserte Zusammenarbeit und Koordination zusammenzuführen. Das Ergebnis: Da Codeänderungen schneller in die Produktion übernommen werden, profitieren Kunden schneller von neuen Features und Verbesserungen.

Auch wenn die für Entwicklung, IT-Betrieb, Quality Engineering und Sicherheit verantwortlichen Teams bei DevOps eng zusammenarbeiten, bleibt der Softwarebereitstellungsprozess unverändert komplex. Bei DevOps wird die Softwarebereitstellung in vier Phasen untergliedert: Planung, Entwicklung, Bereitstellung und Ausführung.

Softwarebereitstellung in DevOps

Ohne Automatisierung müssen Entwicklungsteams Software manuell erstellen, testen und bereitstellen. Dies umfasst Folgendes:

  • Einchecken, Testen und Überprüfen von Code.
  • Zusammenführen von Codeänderungen im Hauptbranch.
  • Vorbereiten von Code, um ihn live zu schalten.
  • Erstellen eines bereitstellbaren Artefakts.
  • Übergeben von Code in die Produktion.

Phasen der Automatisierung

Sowohl Continuous Integration als auch Continuous Delivery und Continuous Deployment sind Methoden, mit denen sich verschiedene Aspekte der Entwicklungs- und Bereitstellungsphase automatisieren lassen. Mit jedem dieser Ansätze schreitet die Automatisierung fort. Begonnen wird dabei mit Continuous Integration.

Worin unterscheiden sich Continuous Delivery und Continuous Deployment?

Continuous Integration

Um die Konzepte Continuous Delivery und Continuous Deployment zu erläutern, beginnen wir zunächst mit Continuous Integration. Bei Continuous Integration ist die Entwicklungsphase – das Erstellen und Testen von Code – vollständig automatisiert. Bei jedem Codecommit werden Änderungen überprüft und im Hauptbranch zusammengeführt. Der Code wird in einem Buildartefakt verpackt.

Kontinuierliche Bereitstellung

Mit Continuous Delivery wird die nächste Phase automatisiert: die Bereitstellung. Bei Continuous Delivery werden neue Buildartefakte, sobald sie verfügbar sind, automatisch in der gewünschten Umgebung platziert und bereitgestellt.

Continuous Integration und Continuous Delivery (CI/CD)

Wenn Teams sowohl Continuous Integration als auch Continuous Delivery (CI/CD) implementieren, werden die Entwicklungs- und die Bereitstellungsphase automatisiert. Der entwickelte Code kann jederzeit in die Produktion überführt werden. Dazu müssen Teams lediglich den Übergang von der Entwicklungs- in die Bereitstellungsphase manuell initiieren und dadurch das automatisierte Buildartefakt für die automatische Bereitstellung verfügbar machen – ein Vorgang, der sich praktisch per Knopfdruck starten lässt.

Fortlaufende Bereitstellung

Bei Continuous Deployment automatisieren Sie den gesamten Prozess – vom Codecommit bis hin zur Produktion. Der Übergang von der Entwicklungs- in die Bereitstellungsphase wird automatisch ausgelöst. Codeänderungen werden also live geschaltet, sobald sie überprüft wurden und alle Tests bestanden haben. Kunden profitieren von Verbesserungen also umgehend, sobald diese verfügbar sind.

Continuous Delivery oder Continuous Deployment: Welcher Ansatz ist für Ihr Szenario der richtige?

Unabhängig davon, ob Sie sich für Continuous Delivery oder für Continuous Development entscheiden, sind eine Reihe von unterstützenden Tools verfügbar.

Bevor Sie entscheiden, welcher dieser Ansätze für Sie der richtige ist, sollten Sie überprüfen, ob Ihre Organisation über eine DevOps-Kultur verfügt, die die Grundlage für den jeweiligen Ansatz schafft. Da DevOps-Teams zudem bestrebt sind, den gesamten Softwarebereitstellungsprozess zu automatisieren, sollte die Frage nicht lauten, welcher Ansatz der bessere ist. Vielmehr sollten Sie sich fragen, ob Sie den Übergang von Continuous Integration zu Continuous Delivery manuell auslösen müssen.

Orientieren Sie sich an folgenden Fragen, wenn Sie nach dem geeigneten Ansatz für Ihre Organisation suchen:

  • Können Sie die Bereitstellung ohne Genehmigung von Projektbeteiligten vornehmen?
  • Lassen sich Ihre System- und Gatinganforderungen mit einer End-to-End-Automatisierung vereinbaren?
  • Können Sie jeweils nur kleinere Änderungen in der Produktionsumgebung für Ihre Kunden freigeben?
  • Reagiert Ihre Organisation schnell auf Fehler in der Produktionsumgebung?

Wenn Sie alle Fragen mit „Ja“ beantwortet haben, ist Continuous Deployment vermutlich ein geeigneter Ansatz für Ihr Szenario, und Sie können die Softwarebereitstellung vollständig automatisieren – vom Codecommit bis zur Produktion.

Wenn Sie eine oder mehrere Fragen mit „Nein“ beantwortet haben, sollten Sie vermutlich mit Continuous Integration und Continuous Delivery (CI/CD) beginnen. Dabei automatisieren Sie den Vorgang zum Erstellen von produktionsreifem Code, für den vor der Bereitstellung lediglich ein manueller Genehmigungsschritt ausgeführt werden muss. Diesen Prozess entwickeln Sie anschließend weiter, bis Sie letztendlich zu Continuous Deployment übergehen können, um Ihren Softwarebereitstellungsprozess vollständig zu automatisieren.

Unabhängig davon, für welchen Ansatz Sie sich entscheiden, profitieren Sie von folgenden Vorteilen:

  • Änderungen werden automatisch erstellt, überprüft und getestet.
  • Code kann jederzeit bereitgestellt werden – angespannten Mitarbeiter am Tag der Freigabe gehören der Vergangenheit an.
  • Schnelleres Feedback zu Releases von Projektbeteiligten und Kunden.
  • Höhere Entwicklerproduktivität durch eine geringere Anzahl von manuellen und administrativen Aufgaben.
  • Da häufig kleinere Änderungen implementiert werden, treten seltener Fehler und Instabilität auf.

Tools für Continuous Integration, Continuous Delivery und Continuous Deployment

DevOps-Teams setzen bei der Automatisierung der Softwarebereitstellung auf Toolketten, also auf eine Reihe von verbundenen Softwareentwicklungsprogrammen. Welche Tools Sie verwenden, hängt davon ab, für welches Automatisierungsverfahren Sie sich entscheiden und welche Phasen mit diesem Verfahren automatisiert werden. Nachfolgend sind einige Beispiele aufgeführt.

DevOps in Azure – legen Sie los!

Entdecken Sie Tools für Continuous Delivery und Continuous Development sowie Tools, mit denen sich weitere DevOps-Verfahren in der Cloud vereinfachen lassen.