Was ist Continuous Delivery?
Continuous Delivery beschreibt das Zusammenwirken verschiedener Techniken und Methoden, um die effiziente und schnelle Auslieferung von Software oder Updates zum Benutzer zu ermöglichen.
Was ist Continuous Delivery?
Die Idee einer Verbesserung des Auslieferungsprozesses von Software Updates wurde erstmals 2006 von Jez Humble, Chris Read und Dan North erwähnt. 2010 wurde dann das Buch zu Continuous Delivery veröffentlicht, es gilt als Standardwerk für diese Technik.
Grundlegend für diese Art der Auslieferung ist die Verwendung von agilen Methoden zur Softwareentwicklung.
Traditionell war die Entwicklung von Software ein iterativer Prozess. Eine Phase wurde erst bearbeitet, wenn die letzte beendet war und der ganze Prozess wurde nur einmal durchgeführt. Üblicherweise hießen diese Phasen Planung, Entwicklung, Qualitätssicherung und Auslieferung.
Der Prozess dauerte bei entsprechend großen Softwarepaketen oder Updates mehrere Monate und die Benutzer hatten in dieser Zeit keinen Zugriff auf die Zwischenstände der Software.
Das änderte sich mit der Verwendung von agilen Methoden in der Softwareentwicklung.
Hier gibt es nur kleinere Abstände zwischen Entwicklungszyklen und Versionen werden schneller erstellt. Continuous Delivery nutzt das aus und lässt die Benutzer in der Software jederzeit nach einer neuen Version fragen. Ist auch nur ein geringes Update verfügbar, wird es installiert.
Wie funktioniert Continuous Delivery in der Software- und Projektentwicklung?
Agile Methoden sind der Schlüssel dafür, Continuous Delivery zu verstehen. Ein gutes Beispiel hierfür ist Scrum. Bei dieser Methode der Softwareentwicklung gibt es mehrere Sprints, in denen Anforderungen an die Software umgesetzt werden. Am Anfang jedes Sprints betrachtet das Entwicklerteam die Anforderungen an die Software, die in der Planung gefunden wurden und sucht sich eine Teilmenge dieser Anforderungen nach Priorisierung aus. Die Aufteilung erfolgt so, dass in diesem festgelegten Sprint-Zeitraum diese Anforderungen umgesetzt werden können. Anschließend gibt es Meetings, in denen der Fortschritt besprochen wird. Zusätzlich gibt es Daily Scrums, kleine Einheiten, in denen täglich zyklisch neue Anforderungen in die Software integriert und danach getestet werden.
So läuft es auch bei der Continuous Delivery. In sehr kurzen Zeitabständen werden die Änderungen an der Software auf deren Qualität überprüft und anschließend getestet. Die Tests laufen oft automatisch ab und liefern ein schnelles Feedback für die Entwickler. So werden Seiteneffekte und Regression schnell erkannt.
Ist dieser Test erfolgreich, wird die Software auf einem Produktivsystem installiert, oft innerhalb weniger Minuten. Dieser Vorgang aus Entwurf, Qualitätssicherung und Umsetzung wird dann sofort wiederholt. Die fertige Software-Version wird dann zur Verfügung gestellt und Nutzer haben praktisch immer eine aktuelle Version verfügbar.
Eigenschaften und Besonderheiten von Continuous Delivery
Neben der charakteristischen agilen Entwicklung gibt es noch weitere Eigenschaften, die Contiuous Delivery auszeichnen.
Continuous Delivery basiert auf dem Lean Poka Yoke System, einem Produktionsprinzip, das von Toyota entwickelt wurde. Durch ständige Qualitätssicherung und Kontrolle des Produkts wird sichergestellt, dass das fertige Produkt den Qualitätsansprüchen der Kunden entspricht und sofort veröffentlicht werden kann.
Um diese Tests bei der Software gut durchführen zu können, gibt es standardisierte und automatische Tests. Unit Tests untersuchen eine einzelne Komponente der Software auf deren Probleme und isoliert diese daher von der gesamten Software. So wird sichergestellt, dass jedes Einzelteil in sich stimmig ist.
Es folgen Akzeptanztests, bei denen sichergestellt wird, dass die Software die vorher festgelegten Anforderungen besitzt. Hier handelt es sich um eine checklistenartige Überprüfung, in der alle Anforderungen abgehakt werden.
Nun folgen die Integrationstests, wo die Software Stück für Stück zusammengeführt wird. Hier werden vor allem die Schnittstellen der Software überprüft, um zu sehen, dass die Komponenten miteinander funktionieren.
Abschließend kommt es zu Performance Tests. Hier wird durch hohe oder lange Belastung überprüft, ob das fertige Produkt in echten Bedingungen gute Leistungen bringt oder ob es weiter optimiert werden muss. Nun ist das Produkt bereit, veröffentlicht zu werden.Eine weitere Besonderheit ist der komplette Fokus auf eine schnelle und effiziente Veröffentlichung. Selbst wenn eine geplante Version nicht ganz fertig gestellt werden kann, wird der fertige Teil zur Verfügung gestellt. Die Continuous Delivery sieht es als wichtiger an, möglichst oft eine neue, getestete Version der Software zu veröffentlichen, als dass wirklich alle oder möglichst viele Änderungen durchgeführt werden.
Wie kann ich Cotinuous Delivery beim Entwickeln nutzen?
Große Softwareprojekte, die sich auf einen Release mit einmaliger Testdurchführung verlassen, können zwar effizienter als Continuous Delivery sein, doch das Risiko des Komplettversagens ist extrem hoch. Mit Continuous Delivery kannst Du sicher gehen, dass in kleinen Schritten eine funktionstüchtige Software aufgebaut wird.
Es werden so auch kontinuierlich die Anforderungen überprüft. Oft ändern diese sich während der Entwicklung oder müssen angepasst werden – Continuous Delivery sorgt also auch für mehr Flexibilität in der Softwareentwicklung. Durch häufige Tests wird und Überprüfungen werden die Anforderungen immer angepasst.
Die Interaktion mit den Benutzern der Software ist zudem besser. Du kannst besser erkennen, ob ein neues Feature gut ankommt oder wo es Bugs in der Software gibt. Direktes Feedback ermöglicht direkte Verbesserungen.
Als Fazit lässt sich sagen, dass Continuous Delivery die Entwicklung von Software sicherer und übersichtlicherer macht.
Rückmeldungen