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.
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.
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
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.
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.