Continuous Delivery (CD) in der Softwareentwicklung
Continuous Delivery beschreibt die kontinuierliche Distribution von Änderungen einer Applikation auf einen Server, wobei dieser Server nicht für Kunden zugänglich ist (meist ein Staging-Umgebung). Durch das kontinuierliche Deployen kann z.B. sichergestellt werden, dass ein Test-Team immer den aktuellsten Stand der zu testenden Software zur Verfügung hat. Ebenso können mithilfe der Staging-Umgebung Entwicklungsfortschritte an Kunden präsentiert werden.
Eine Continuous Delivery Pipeline kann unter anderem mit Hilfe von CI/CD Servern wie Jenkins implementiert werden.
Da Continuous Integration die Grundlage für Continuous Delivery ist, sollte hierbei auf eine bereits gut funktionierende CI - Pipeline geachtet werden.
Abgrenzung zu Continuous Deployment und Continuous Integration
Im Unterschied zu Continuous Deployment wird bei Continuous Delivery nicht jede Änderung automatisch an den Kunden ausgeliefert. Die Änderungen werden auf einem Server deployed und können dort weiteren Tests unterzogen werden. Das bedeutet, dass der Automatisierungsgrad von Continuous Delivery niedriger sein kann als bei Continuous Deployment.
Akademisch betrachtet liegt der Unterschied im Grad der Automatisierung bezogen auf die Methode des Deployment (Continuous Deployment: automatisch, Continuous Delivery: manuell). In der Praxis kann es jedoch vorkommen, dass diese Begriffe nahezu synonym verwendet werden.
Der Begriff Continuous Deployment kam das erste Mal 2009 in einem Blogbeitrag von Timothy Fitz auf. Rund ein Jahr später entstand das erste Werk zu Continuous Delivery - das Buch „Continuous Delivery: Reliable Software Releases Through Build, Test and Deployment Automation“ von Jez Humble und David Farley. Die beiden Autoren entschieden sich hier bewusst gegen den Begriff Continuous Deployment, da bei Continuous Delivery nicht automatisch in Produktion deployed wird. Continuous Deployment impliziert Continuous Delivery. Andersherum ist dies jedoch nicht der Fall.
Der Unterschied zu Continuous Integration ist, dass die Software mit den aktuellsten Änderungen für z.B. Tester verfügbar ist und nicht nur als Build-Artefakt abgelegt wird.
Continuous Delivery mit dem Cloudogu EcoSystem
Um eine Continuous Delivery Pipeline im Cloudogu EcoSystem einzurichten, muss lediglich ein Deployment-Ziel für Jenkins konfiguriert werden.