Was ist Continuous Delivery?

, ,
foodora 3402507 640

Der Begriff Continuous Delivery (CD) ist englischen Ursprungs und bedeutet in die deutsche Sprache übersetzt so viel wie „fortwährende Lieferung“. Bei Continuous Delivery handelt es sich um ein Konzept aus dem Bereich der Softwareentwicklung, das sich in den letzten Jahren einer enormen Beliebtheit erfreut. Im folgenden Artikel gehen wir auf das Thema Continuous Delivery im Detail ein und beleuchten die speziellen Eigenschaften sowie die Vor- und Nachteile dieser innovativen Methode von allen Seiten.

Definition

Bei Continuous Delivery handelt es sich um ein Modell, das in der modernen Softwareentwicklung in Kombination mit DevOps immer beliebter wird und sich allmählich als Standard in der Softwarebranche etabliert. CD wird in der Softwareentwicklung eingesetzt, um Entwicklung, Bereitstellung, Feedback und Qualitätsmanagement in regelmäßigen kurzen Abständen ununterbrochen und parallel laufen zu lassen. Durch den Einsatz moderner CD-Methoden wird der gesamte Prozess der Entwicklung positiv beeinflusst und viel effizienter umgesetzt. So bekommt der Kunde beispielsweise das Produkt früher ausgeliefert, obwohl dieses noch nicht ganz fertig ist. Software-Entwickler werden im Rahmen von Continuous Delivery kontinuierlich mit Feedback durch flächendeckende Tests versorgt, die nach jeder Änderung am Quellcode automatisch durchgeführt werden. CD beschreibt also einen dynamischen Prozess, der sämtliche Prozesse der Softwareentwicklung miteinander vereint und automatisiert. Dadurch lassen sich aufwendige und schwerfällige Arbeitsschritte minimieren. Continuous Delivery kommt in vielen bekannten Unternehmen zum Einsatz, wie beispielsweise Microsoft, Google und Red Hat.

shipping containers 1150062 640

Prinzipien und Praktiken der Continuous Delivery

Im Rahmen traditioneller Vorgehensweisen in der Softwareentwicklung wird das Endprodukt erst dann dem Kunden übergeben, wenn alle notwendigen Funktionen und Features implementiert sind, es ohne Probleme läuft und im Rahmen der Qualitätssicherung keine größeren Mängel gefunden wurden. Das Softwareprodukt wird dann anschließend von dem Entwickler mit regelmäßigen Patches und Aktualisierungen versorgt. Entwicklerteams, die auf moderne CD-Prozesse setzen, können die Software in einem viel früheren Entwicklungsstadium an den Kunden ausliefern, während das Produkt noch aktiv weiterentwickelt wird. Die ersten Versionen des Softwareprodukts enthalten in der Regel nur die Kernfunktionalitäten, die der Kunde in realer Umgebung testen kann. Der Kunde selbst nimmt keinen relevanten Platz im Rahmen der Qualitätssicherung ein.

Die auf diese Weise gewonnene Resonanz hilft dem Entwicklerteam, noch während der Entwicklungsphase vorhandene Funktionalitäten zu optimieren. Außerdem bekommt das zuständige Team wichtige Hinweise darüber, welche Funktionalität als nächstes implementiert werden sollte. Ohne Continuous Delivery sind diese einzelnen Schritte äußerst schwer zu implementieren und können sehr schnell zu Frust auf beiden Seiten führen. Der Kunde erwartet schließlich ein fertiges und funktionales Softwareprodukt, das seinen individuellen Wünschen und Anforderungen entspricht. Das Entwicklerteam weiß jedoch bis dahin überhaupt nicht, welche Anforderungen das überhaupt sind. Wenn die Kommunikation über den gesamten Entwicklungsprozess stattfindet, dann können Wünsche des Kunden viel schneller und präziser berücksichtigt und Unklarheiten vermieden werden.

Mehr zum Thema:
Was ist Cache?

Welche Vorteile bietet Continuous Delivery?

Continuous Delivery bringt mit anderen Methoden der modernen Softwareentwicklung, wie beispielsweise Continuous Integration und Continuos Deployment eine Vielzahl verschiedener Vorteile.

Automatisierung von Software-Einführungsprozessen: Durch den Einsatz der Continuous Delivery können Entwicklerteams Änderungen an der Codebasis automatisch erstellen und testen lassen sowie für die Produktionseinführung vorbereiten. Dadurch wird der Prozess der Software-Bereitstellung wesentlich schneller und effizienter gestaltet.

train 821500 640

Steigerung der Entwicklerproduktivität: CI-Prinzipien und Praktiken steigern die Produktivität der Entwicklerteams, da sich Entwickler nicht mehr um manuelle Aufgaben kümmern müssen. Sie können sich stattdessen voll und ganz auf die Entwicklung, Bereitstellung und Optimierung des Produktes konzentrieren.

Bugs werden schneller entdeckt und behoben: Entwicklerteams sind in der Lage, Fehler (Bugs) im Softwareprodukt zu entdecken und zu beheben, noch bevor sie sich zu größeren Problemen entwickeln. Die Beseitigung von Bugs nimmt später nicht selten viel Zeit und Arbeitsstunden in Anspruch. Da der gesamte Entwicklungsprozess im Rahmen der Continuous Delivery automatisiert ist, können zusätzliche Tests der Codebasis schnell und einfach durchgeführt werden.

Schnellere Bereitstellung von Patches und Updates: Dank der CI-Praktiken können Entwicklerteams Updates und Patches für Kunden viel regelmäßiger und schneller bereitstellen.

Continuous Delivery Phasen

Bei jeder Änderung an der Codebasis wird die sogenannte „Continuous Delivery Pipeline“ gestartet und der Testprozess ausgeführt. Die Continuous Delivery Pipeline setzt sich dabei aus folgenden Phasen zusammen:

  1. Commit Stage: Die Commit Stage ist die erste Testphase. Hier werden die Software-Versionen validiert, die benötigten Software-Komponenten gebaut und notwendige Unit-Tests realisiert. Nachdem die Tests erfolgreich durchgeführt wurden, ist diese Phase abgeschlossen.
  2. Acceptance Test Stage: In der zweiten Testphase werden Akzeptanztests durchgeführt. Akzeptanztests setzen sich aus Systemtests (Wie gut funktioniert das Softwareprodukt auf der Seite des Nutzers) und Integrationstests (Wie ist das Zusammenspiel der einzelnen Softwarekomponenten) zusammen.
  3. Feedback und Fehlerbehebung: In dieser Phase werden auftretende Fehler protokolliert und als Feedback an das zuständige Entwicklerteam geschickt. Das kann beispielsweise über Messaging-Programme, E-Mail oder dedizierte Tools realisiert werden.
  4. Manuelle Prüfung: Je nach Bedarf werden in dieser Phase manuelle Tests realisiert.
  5. Installation auf dem Zielsystem: Sollten alle Tests mit positivem Feedback abgeschlossen sein, dann wird in dem letzten Schritt das Softwareprodukt auf dem Zielsystem manuell installiert. Um dies zu erledigen sind meist nur wenige Mausklicks notwendig. Wenn auch diese Phase automatisiert ist, dann spricht man von Continuous Deployment.
Mehr zum Thema:
Was bedeutet Write Once Run Anywhere?