Continuous Delivery


Was ist Continuous Delivery?

Continuous Delivery ist der Softwareentwicklungsprozess, Codeänderungen schnell und sicher umzusetzen. Engineering-Teams führen Änderungen an ihrer Software in kurzen Zyklen durch, damit diese häufiger getestet und veröffentlicht werden kann. Dieser Ansatz gestattet inkrementelle Änderungen mit geringeren Kosten und weniger Risiko. Er wurde zuerst durch Jez Humble und David Farley in deren Buch “Continuous Delivery: Reliable Software Releases Through Build, Test and Deployment Automation″ popularisiert.

Vorteile von Continuous Delivery

Nachfolgend sind die primären Vorteile einer Continuous Delivery-Pipelin in der Cloud aufgeführt.

Beschleunigung des Marktes

Die Marktbedingungen sind durch das veränderliche Konsumentenverhalten in einem dauerhaften Zustand konstanter Veränderung. Die Nachfrage nach Produkten kann plötzlich anziehen oder genauso plötzlich weniger nachgefragt werden. Gleichzeitig können sich technologische Weiterentwicklungen ebenfalls auf den Bedarf nach schnellerer Veröffentlichung von Änderungen auswirken. Um auf unvorhersehbare Märkte und technologische Änderungen zu reagieren, ist es für die Techniker effektiver, Software unter Verwendung von Continuous Delivery zu veröffentlichen.

Geringeres Risiko

Wenn inkrementelle Veränderungen öfter veröffentlicht werden, können Fehler früher im Entwicklungsprozess entdeckt und korrigiert werden. Auch ist es einfacher, kleinere Änderungen nötigenfalls zurückzunehmen und es hilft mittels Versionskontrolle und durch Verwendung einer Testumgebung unbeabsichtigte Änderungen nicht in die produktive Umgebung gelangen zu lassen.

Koordination und Kommunikation zwischen Teams

Durch Continuous Delivery teilen Teams die Verantwortung für Softwarebereitstellung. Dies reißt die Mauern zwischen Gruppen oder Abteilungen nieder und beseitigt Nichtvorhersagbarkeit und Stress beim Veröffentlichen von Software. Häufigeres Veröffentlichen ist ein Prozess, der das Team in regelmäßigem, vorhersagbarem Tempo arbeiten lässt.

Schnellerer Lernzyklus

Neue Funktionen schneller für den Markt herausgeben bedeutet frühere Rückmeldungen von Ihren Kunden. Dieser Herausgabeprozess gestattet Ihnen, von Ihren Kunden zu lernen, indem diese eher funktionierende Software in den Händen halten, Sie deren Feedback schneller einbeziehen und Anpassungen an Ihr Produkt vornehmen, um es zu verbessern.

Continuous Delivery & DevOps

Der Begriff “DevOps″ist eine Kombination von “Development″ und “Operations″, also Entwicklung und Betrieb, und hebt das Zusammenwirken beider hervor. DevOps besitzt gemeinsame Ziele und Merkmale mit Continuous Delivery. Jede liefert kleine Änderungen, verlässt sich auf Zusammenarbeit und Koordination zwischen Teams und teilt das gemeinsame Ziel einer kürzeren Markteinführungszeit.

Um den Unterschied zwischen den beiden herauszustellen – DevOps ist die Methodik, um Unternehmen bei Erstellung und Herausgabe von Software zu unterstützen. Es ist die Praxis der Betonung von Zusammenarbeit und Koordination zwischen den Softwareentwicklern und anderen Abteilungen des Unternehmens. DevOps erzeugt eine Umgebung, in der Software entwickelt, getestet und schnell und verlässlich herausgebracht werden kann.

Sie können DevOps als die größere Kraft und Philosophie hinter der Dienstleistung sehen, während Continuous Delivery der Prozess ist, der sie in die Cloud bringt.

Continuous Delivery vs. Continuous Integration

Bei der traditionellen Softwareentwicklung erfolgt der Integrationsprozess am Ende eines Projekts, nachdem alle Personen Ihre Arbeit abgeschlossen haben. Dieser Prozess kann viel Zeit in Anspruch nehmen und für alle Beteiligten frustrierend sein.

Continuous Integration ist eine Softwareentwicklungspraxis, die die Integrationsphase im Entwicklungszyklus nach oben verschiebt, sodass Entwicklung, Testen und Integration des Codes regelmäßiger erfolgen. Das Entwicklungsteam fügt Codeänderungen mehrmals am Tag in einer geteilten, zentralen Ablage zusammen, um zu jedem Zeitpunkt eine Produktversion zu veröffentlichen. Dies erfordert einen Integrationsprozess, der reproduzierbar und automatisiert ist.

Continuous Delivery vs. Continuous Deployment

In der Praxis des Continuous Deployment wandern alle Softwareänderungen, die das Testen überstehen, automatisch in den produktiven Teil. Um eine kontinuierliche Deployment-Pipeline zu erzeugen, muss Ihr Unternehmen zunächst Continuous Delivery erreichen.

Continuous Deployment kann als Erweiterung von Continuous Integration angesehen werden, mit dem Ziel der Minimierung des Zeitverzuges zwischen dem Schreiben von neuem Code und dem produktiven Einsatz desselben.

Um Continuous Deployment zu erreichen, verlässt sich das Entwicklungsteam auf einen strikten Prozess, der die verschiedenen zum Deployment führenden Schritte automatisiert. Nachdem jede Integration die Veröffentlichungskriterien erfüllt, wird die laufende Anwendung mit neuem Code aktualisiert.

Agile Development & Continuous Delivery

Agile Development, also bewegliche Entwicklung, beinhaltet einen Satz an Werten und Prinzipien, wobei sich Anforderungen und Lösungen durch Teamzusammenarbeit entwickeln. Sie umfasst adaptive Planung, frühe Lieferung, kontinuierliche Verbesserung und flexible Reaktion auf Änderungen. In Agile gibt es keinen zeitlichen Rahmen für die einzelnen Veröffentlichungen, vielmehr ist die Idee, dass diese häufig stattfinden: vielleicht alle paar Wochen oder alle paar Monate, vorzugsweise jedoch in kurzen Abständen.

Bei der Prozessevolution für die Softwareentwicklung ging Agile Development der Continuous Delivery voran.

Continuous Delivery ist eine Untermenge von Agile, bei der das Team seine Software während der ganzen Entwicklungszeit für eine Veröffentlichung bereithält. Es geht eher darum, so zu entwickeln, dass die Software stets für eine Veröffentlichung bereit ist – kontinuierlich.

Continuous Delivery & A/B-Testing

Experimentieren und Funktionsmanagement müssen Hand in Hand arbeiten. Experimentieren ist für Ihre Firma eine wichtige Möglichkeit, Ideen vor dem Start neuer Produkte, Funktionen und Experiences für alle Besucher zu validieren. Mit Entwicklungsteams, die Continuous Integration- und Continuous Delivery-Prozesse nutzen, können Feature Flags, die den Rollout einer neuen Experience steuern, gleichzeitig das Risiko der Veröffentlichung von Unerprobtem für die Allgemeinheit mindern.

Als Unterstützung, A/B-Testing als Kernbestandteil des Deployment-Prozesses Ihrer Organisation zu behalten, integriert Optimizely Full Stack Feature Flags, Rollouts und Variablen mit dem Experimentieren und gestattet Ihnen, den gesamten Produktentwicklungszyklus von einem Punkt aus zu steuern. Durch das Ausführen eines A/B-Test an zunächst einem Teil des Traffics kann Ihr Team neue Funktionen austesten und schrittweise optimieren. Nachdem Sie die beste User Experience erzielt haben, kann auf kontrollierte Weise auf die gesamte Kundenbasis ausgerollt werden, um das Risiko etwaiger Engineering-Probleme im Veröffentlichungsprozess zu reduzieren.