Überblick
Continuous Delivery ist ein Verfahren zur Softwareentwicklung, bei dem neuer Code mithilfe von Automatisierung schneller veröffentlicht werden kann.
Es wird ein Prozess eingerichtet, mit dem die App-Änderungen eines Entwicklers durch Automatisierung in ein Code-Repository oder eine Container-Registry verschoben werden können.
Welcher Zusammenhang besteht zwischen Continuous Delivery und CI/CD?
Continuous Delivery ist ein Teil von CI/CD, einer Methode zur häufigen Bereitstellung von Software durch die Automatisierung einiger Stufen der App-Entwicklung.
Das „CI“ in CI/CD steht für Continuous Integration. Bei einer Continuous Integration werden regelmäßig neue Codeänderungen für Apps entwickelt, getestet und in einem gemeinsamen Repository zusammengeführt. Damit soll der Konflikt verhindert werden, den zu viele Branches einer App verursachen können, wenn sie zeitgleich entwickelt werden.
Das „CD“ in CI/CD kann für Continuous Deployment oder Continuous Delivery stehen. Dies sind Methoden zur Automatisierung weiterer Stufen in der Pipeline.
Was ist der Unterschied zwischen Continuous Delivery und Continuous Deployment?
Continuous Delivery und Continuous Deployment sind miteinander verwandte Konzepte, die manchmal separat verwendet werden, um den Grad der Automatisierung anzugeben.
Continuous Delivery bedeutet üblicherweise, dass App-Änderungen eines Entwicklerteams automatisch auf Bugs getestet und in ein Repository (wie GitHub oder eine Container-Registry) hochgeladen werden, von wo aus sie vom Operations-Team in einer Live-Produktivumgebung bereitgestellt werden können. Auf diese Weise können Transparenz- und Kommunikationsprobleme zwischen Dev- und Business-Teams schneller gelöst werden. Mit Continuous Delivery soll also sichergestellt werden, dass neuer Code mit minimalem Aufwand bereitgestellt werden kann.
Continuous Deployment deckt hingegen einige zusätzliche Schritte im Release-Prozess für die neue Software ab. Hierzu zählt in der Regel die automatische Freigabe von Entwickleränderungen vom Repository zur Produktivphase, wo sie direkt vom Kunden genutzt werden können. Dieser Vorgang soll der Überlastung von Operations-Teams bei manuellen Prozessen entgegenwirken, die die Anwendungsbereitstellung verlangsamen. Continuous Deployment baut die Vorteile der Continuous Delivery aus, indem auch noch die nächste Phase der Pipeline automatisiert wird.
Transformation will gekonnt sein
Hier erfahren Sie anhand von drei Case Studies, zu welchen Erfolgen eine offene digitale Transformation führen kann.
Was ist eine CI/CD-Pipeline?
Eine CI/CD-Pipeline umfasst mehrere Schritte, die zur Bereitstellung einer neuen Softwareversion ausgeführt werden. Durch die Einführung von CI/CD wird eine CI/CD-Pipeline eingerichtet.
Eine CI/CD-Pipeline beginnt mit Überwachung und Automatisierung, um den Prozess der Anwendungsentwicklung zu verbessern. Dies betrifft speziell die Integrations- und Testphase, aber auch die Bereitstellung und Implementierung.
Sicherlich lassen sich die Schritte einer CI/CD-Pipeline auch manuell ausführen, ihr größter Mehrwert ist jedoch die Automatisierung des Anwendungs-Lifecycles.
Welcher Zusammenhang besteht zwischen Continuous Delivery und DevOps?
Der Begriff „DevOps“ setzt sich aus den Begriffen „Development“ (Entwicklung) und „Operations“ (Operationen) zusammen. Das DevOps-Konzept umfasst die Aspekte Unternehmenskultur, Automatisierung und Plattformdesign und hat das Ziel, den geschäftlichen Mehrwert und die Reaktionsfähigkeit durch eine schnelle Bereitstellung hochwertiger Services zu steigern.
Continuous Delivery ist eine spezielle Art der Softwareentwicklung, die häufig in Verbindung mit DevOps angewendet wird. Ein DevOps-Konzept beinhaltet in der Regel die Erstellung einer Continuous Delivery-Pipeline.
DevOps umfasst Ansätze dazu, wie eine Idee (z. B. neue Software-Features, Verbesserungsanfragen oder Bug Fixes) von der Entwicklung bis zum Einsatz in der Produktivumgebung beschleunigt werden kann, um dort zur Wertschöpfung beizutragen.
Hier arbeiten Entwickler, die üblicherweise in einer Standardentwicklungsumgebung (SDE) programmieren, eng mit Testern und den IT-Operations-Teams zusammen, um Software-Builds, Code-Commits, Komponententests und die Veröffentlichung neuer Versionen zu beschleunigen – ohne dass dies auf Kosten der Zuverlässigkeit geht.
Ein wichtiges Ergebnis der Implementierung von DevOps ist eine CI/CD-Pipeline, in der Entwicklungs- und Operations-Teams mithilfe einer agilen Methode zusammenarbeiten.
Wie wird Continuous Delivery durch die Pipeline-Automatisierung unterstützt?
CI/CD nutzt Automatisierung, um Entwicklungs-, Bereitstellungs- und Testprozesse zu beschleunigen. Automatisierung trägt dazu bei, die Qualität zu verbessern und die Anzahl von menschlichen Fehlern zu verringern. Durch Automatisierung kann im Rahmen einer DevSecOps-Strategie außerdem die Sicherheit erhöht werden.
Einige Tools unterstützen speziell die Integration (Continuous Integration), andere die Entwicklung und Bereitstellung (Continuous Deployment), andere wiederum kontinuierliches Testen oder ähnliche Funktionen.
Eines der bekanntesten Open Source-Tools für CI/CD ist der Automatisierungsserver Jenkins. Jenkins kann alles verarbeiten – vom einfachen CI-Server bis hin zum kompletten CD-Hub.
Ebenfalls häufig verwendet wird Tekton, ein Open Source-Projekt der Continuous Delivery Foundation. Tekton ermöglicht die deklarative Beschreibung von Bereitstellungs-Pipelines mit Kubernetes-Konzepten und deren On-Demand-Ausführung in Containern.
Tekton ist die Basis für OpenShift Pipelines, einer CI/CD-Lösung für Red Hat® OpenShift®.