Close

Was ist Continuous Deployment?

Sowohl dein Software-Team als auch deine Kunden profitieren von Continuous Deployment (CD). Erfahre, was es damit auf sich hat und informiere dich über Vorteile, Best Practices und mehr.

Porträt von Sten Pittet
Sten Pittet

Gastautor


Continuous Deployment (CD) ist ein Software-Release-Prozess, der automatisiertes Testen verwendet, um zu validieren, ob Änderungen an einer Codebasis für ein sofortiges autonomes Deployment in eine Produktionsumgebung korrekt und stabil sind.

Der Software-Release-Zyklus hat sich im Laufe der Zeit weiterentwickelt. Code von einem Rechner auf einen anderen zu übertragen und zu prüfen, ob er wie erwartet funktioniert ist ein veralteter, fehleranfälliger und ressourcenintensiver Prozess. Heute können Tools diesen gesamten Deployment-Prozess automatisieren. So können sich Softwareentwicklungsunternehmen auf die Anforderungen des Kerngeschäfts konzentrieren, anstatt sich um die Infrastruktur zu kümmern.

Illustration des Continuous-Deployment-Zyklus | Atlassian CI/CD

Vergleich zwischen Continuous Deployment und Continuous Delivery


Die Unterscheidung zwischen dem Continuous Deployment und der Continuous Delivery kann aufgrund der Nomenklatur verwirrend sein. Beide haben die Abkürzung "CD" und beide haben sehr ähnliche Zuständigkeiten. Die Delivery ist die Vorstufe zum Deployment. Bei der Delivery gibt es vor dem Produktions-Release einen letzten, manuellen Genehmigungsschritt.

Damit du dir den Unterschied zwischen beiden leichter merken kannst, haben wir hier eine Merkhilfe für dich: Stell dir vor, du empfängst ein Paket von deinem Lieblings-Onlineshop. Während du auf das Eintreffen des Pakets wartest, stimmst du dich mit einem Lieferdienst ab. Das ist die Delivery-Phase. Sobald das Paket erfolgreich zugestellt wurde, öffnest du es und überprüfst den Inhalt, um sicherzugehen, dass deine Erwartungen erfüllt werden. Sollte das nicht der Fall sein, kannst du es ablehnen und zurücksenden. Wenn das Paket deinen Erwartungen entspricht, bist du bereit, deinen neuen Kauf zu verwenden – das ist das Deployment!

In der Delivery-Phase überprüfen und mergen Entwickler Codeänderungen, die dann in ein Artefakt gepackt werden. Dieses Paket wird anschließend in eine Produktionsumgebung verschoben, in der es auf die Genehmigung wartet, um für das Deployment geöffnet zu werden. In der Deployment-Phase wird das Paket geöffnet und mit einem System automatisierter Prüfungen überprüft. Wenn die Prüfungen fehlschlagen, wird das Paket abgelehnt.

Wenn die Prüfungen bestanden werden, wird das Paket automatisch in der Produktion bereitgestellt. Continuous Deployment ist die vollständige, automatisierte End-to-End-Pipeline für das Software-Deployment.

Lösung anzeigen

Hochwertige Software entwickeln und ausführen mit Open DevOps

Zugehöriges Material

Weitere Informationen zum automatisierten Testen

Diagramm der Schritte in einem Continuous Deployment-Lebenszyklus | Atlassian CI/CD

Was sind die Vorteile von Continuous Deployment?


Continuous Deployment bietet enorme Produktivitätsvorteile für Teams in der Softwareentwicklung. Die Kombination von DevOps mit Continuous Deployment ermöglicht es Teams, Releases deutlich zu beschleunigen. Da Deployment-Pipelines bei jeder Änderung automatisch ausgelöst werden, können Teams schneller entwickeln. Wenn das Team eine Idee für ein neues Produkt oder eine neue Funktion hat, kann sie dem Kunden zur Verfügung stehen, sobald der Code gepusht wurde. Continuous Deployment ermöglicht Teams, Änderungen in kleinen Batches bereitzustellen, wodurch Releases weniger riskant sind und eventuelle Probleme leichter behoben werden können.

Aus der Sicht der Unternehmen ermöglicht Continuous Delivery, dass diese schnell mit der Bereitstellung von neuen Ideen und Funktionen auf auf eine sich ändernde Marktnachfrage reagieren können.

Tools für Continuous Deployment


Sobald du mit dem automatisierten Testen beginnst, ist es gut, wenn du ein Testabdeckungstool verbindest. Es kann dir eine Vorstellung davon geben, wie viel deiner Codebasis von deiner Testsuite abgedeckt wird.

Eine Abdeckung von mehr als 80 % ist durchaus erstrebenswert, aber sie ersetzt keine hochwertige Testsuite. Mit einem Tool für die Codeabdeckung findest du nicht getesteten Code zwar leichter, entscheidend ist letztlich jedoch die Qualität der Tests.

Wenn du gerade erst damit anfängst, musst du nicht sofort 100 % Abdeckung deiner Codebasis erreichen. Nutze stattdessen ein Testabdeckungstool, um wichtige Teile deiner Anwendung herauszufinden, die über noch keine Tests verfügen, und beginne dort.

Automatische Tests

Das Continuous Deployment hängt ausschlaggebend von automatisierten Tests ab. Tatsächlich hängt die gesamte Kette von Continuous Integration, Delivery und Deployment davon ab. Automatisierte Tests werden verwendet, um jegliche Regressionen bei der Einführung von neuem Code zu verhindern, und können manuelle Reviews von neuen Codeänderungen ersetzen.

Fortlaufende Deployments

Die unterscheidende Funktion zwischen Continuous Deployment und Delivery ist der automatisierte Schritt der Aktivierung von neuem Code innerhalb einer Live-Umgebung. Eine Continuous-Deployment-Pipeline muss in der Lage sein, ein Deployment rückgängig zu machen, falls Fehler oder wesentliche Änderungen bereitgestellt werden. Automatisierte, fortlaufende Deployment-Tools wie "grün-blaue" Deployments sind eine Voraussetzung für ein korrekt ausgeführtes Continuous Deployment.

Überwachung und Warnmeldungen

Eine robuste Continuous-Deployment-Pipeline verfügt über Echtzeitüberwachung und Warnmeldungen. Diese Tools bieten einen Einblick in den Zustand des gesamten Systems und in den Vorher-/Nachher-Zustand von neuen Code-Deployments. Außerdem können Warnungen bei fortlaufenden Deployments ein "Rückgängigmachen" triggern, um eine fehlgeschlagene Bereitstellung rückgängig zu machen.

Best Practices für Continuous Deployment


Sobald eine Continuous-Deployment-Pipeline eingerichtet ist, ist eine kontinuierliche Wartung und Beteiligung des Entwicklerteams erforderlich, um den Erfolg sicherzustellen. Mit den folgenden Best Practices und Verhaltensweisen wird gewährleistet, dass ein Entwicklerteam optimalen Nutzen aus einer Continuous-Deployment-Pipeline zieht.

Testorientierte Entwicklung

Bei der testorientierten Entwicklung wird eine Verhaltensspezifikation für neue Softwarefunktionen definiert, bevor die Entwicklung beginnt. Sobald die Spezifikation definiert ist, schreiben Entwickler automatisierte Tests, die der Spezifikation entsprechen. Schließlich wird der tatsächlich auslieferbare Code so geschrieben, dass er die Testfälle erfüllt und mit der Spezifikation übereinstimmt. Dieser Prozess stellt sicher, dass der gesamte neue Code im Vorfeld mit automatisierten Tests abgedeckt wird. Die Alternative dazu ist, zuerst den Code auszuliefern und danach eine Testabdeckung zu erstellen. Dadurch können sich Lücken zwischen dem erwarteten Spezifikationsverhalten und dem produzierten Code ergeben.

Eine einzige Deployment-Methode

Sobald eine Continuous-Deployment-Pipeline vorhanden ist, ist entscheidend, dass dies die einzige Deployment-Methode ist. Entwickler sollten Code nicht manuell in die Produktion kopieren oder Dinge live bearbeiten. Manuelle Änderungen außerhalb der CD-Pipeline führen zu einer Desynchronisierung des Deployment-Verlaufs, wodurch der CD-Flow unterbrochen wird.

Containerisierung

Die Containerisierung einer Softwareanwendung stellt sicher, dass sie sich auf jedem Rechner, auf dem sie bereitgestellt wird, gleich verhält. Dies beseitigt eine ganze Reihe von Problemen, bei denen Software auf dem einen Rechner funktioniert, sich aber auf einem anderen Rechner anders verhält. Container können als Teil der CD-Pipeline integriert werden, sodass sich der Code auf den Rechnern der Entwickler genauso verhält wie beim automatisierten Testen und beim Produktions-Deployment.

Fazit


Das Continuous Deployment kann ein wirkungsvolles Tool für moderne Entwicklungsorganisationen sein. Das Deployment ist der letzte Schritt der gesamten "Continuous Pipeline", die aus Integration, Delivery und Deployment besteht. Code wird für die Produktion bereitgestellt und auf Korrektheit überprüft, er wird automatisch zurückgesetzt, wenn er fehlerhaft ist, bzw. akzeptiert, wenn er fehlerfrei ist – dieses Automatisierungs-Niveau ist das, was Continuous Deployment wirklich ausmacht.

Wenn du Continuous Delivery in die Tat umsetzen möchtest, solltest du dir unbedingt unsere DevOps CI/CD Tutorials ansehen, die sich mit Atlassian Open DevOps mit Jira und Integrationen von Drittparteien befassen.

Sten Pittet
Sten Pittet

Ich bin seit 10 Jahren in der Softwarebranche tätig und hatte schon verschiedene Positionen inne, unter anderem in der Entwicklung und im Produktmanagement. Nachdem ich in den letzten 5 Jahren bei Atlassian an Entwickler-Tools gearbeitet habe, schreibe ich jetzt über das Erstellen von Software. In meiner Freizeit feile ich zusammen mit meinem Kleinkind an meinen Kompetenzen als Vater.


Diesen Artikel teilen

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Abbildung: DevOps

DevOps-Community

Abbildung: Karte

Kostenlos loslegen

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up