- Mit Continuous Deployment treiben Sie die Entwicklung von Software kontinuierlich voran und machen diese dem Kunde schneller zugänglich. Ziel ist es, die Time-to-Market für digitale Anwendungen so kurz wie möglich zu gestalten.
- Im Zentrum von Continuous Deployment Tools steht das automatisierte Testen und Ausliefern von Software-Updates.
- Beim Continuous Deployment erfolgt im Gegensatz zum Continuous Delivery auch das Ausliefern der Software automatisiert.
Was ist Continuous Deployment?
Stufen der Software-Entwicklung
Bevor dem Nutzer eine funktionierende Anwendung zur Verfügung steht, durchläuft sie eine mehrstufige Entwicklung: Anforderungsanalyse → Planung → Implementation → Test → Ausliefern → Wartung.
Continuous Deployment bezeichnet ein Bündel aus Tools und Prozessen, das die Entwicklung und Bereitstellung von Software erleichtert. Im Zentrum steht eine ineinander greifende Entwickler-, Test- und Auslieferungsumgebung. Damit setzen Sie Modifikationen des Software-Codes deutlich schneller um als in herkömmlichen Umgebungen. Bereits geringfügige Modifikationen am Code erscheinen als Releases für den Nutzer. So entsteht eine „Continuous-Pipeline“ aus neuem Code, automatisierten Tests, Feedbackschleifen und automatisierter Auslieferung. Die einzelnen Phasen bis hin zum Feedback verschmelzen zu einem fließenden Prozess. Dagegen entfallen weitgehend umfangreiche Software-Releases in großen Zeitabständen, wie man sie aus der herkömmlichen Software-Produktion kennt.
Wie funktionieren Continuous Deployment Tools?
Vorrangiges Ziel ist es, die Zeit bis zum Produktivsetzen der Software durch automatisierte Übergänge zwischen den Entwicklungs-Phasen zu verkürzen. Anbieter stellen dafür ein abgestimmtes Set an Tools zur Entwicklung, Qualitätssicherung und Auslieferung der Software bereit. Sobald der Entwickler die Modifikationen am Quellcode freigibt, gelangen diese in die Testphase.
Entwickler bekommen ein kleinteiliges und schnelles Feedback und können gegebenenfalls Anpassungen vornehmen. Zeitverluste durch die Konfiguration der Test- bzw. Staging-Umgebung entfallen. Zudem ist die Zahl der Testumgebungen beim Continuous Deployment variabel – wahlweise lassen sich auch parallele Testläufe durchführen. Nach bestandenen Tests wird der Code ohne manuellen Zwischenschritt an den Nutzer ausgeliefert.
Je nach Anbieter und Kontext kann sich die Bedeutung des Continuous Deployments unterscheiden. Mitunter sorgen die Begriffe Continuous Integration und Continuous Delivery für Verwirrung.
Was zeichnet Continuous Integration aus?
Die Integration des Software-Entwurfs in die jeweilige Programmiersprache ist ein vielschichtiger und komplexer Prozess. Dem Quellcode sollte daher ein Versionsverwaltungssystem zugrunde liegen, das die einzelnen Code-Änderungen erfasst und in die Datenbank integriert (Check-in). Continuous-Integration-Tools (CI-Tools) nehmen den Software-Check-in automatisiert im Verwaltungssystem vor und initiieren bei jedem Check-in den Test des Codes. Die Produktionszyklen beschleunigen sich dadurch enorm. CI-Tools unterstützen außerdem durch kleinteilige Versions- und Testberichte die Zusammenarbeit in Teams. Continuous Integration ist die Voraussetzung für Continuous Deployment und Delivery.
Auch beim Continuous Deployment können Bugs in der Testphase unbemerkt bleiben. Das schnelle Ausrollen von Updates ermöglicht es allerdings, diese zeitnah mit dem nächsten Update zu beheben.
Was ist der Unterschied zwischen Continuous Deployment und Delivery?
Der entscheidende Unterschied zwischen Continuous Deployment und Delivery besteht darin, dass beim Continuous Deployment die Software nach erfolgreich durchlaufener Testphase automatisch ausgeliefert wird. Continuous Delivery sieht dagegen zwischen der Testphase und dem Produktivsetzen der Software die manuelle Freigabe vor. Entwickler segnen den Release also im letzten Schritt selbst ab. Check-in und Tests initiieren Continuous-Delivery-Tools dagegen ebenfalls automatisiert. Zusammengefasst: Während die Auslieferung beim Continuous Delivery manuell erfolgt, bietet Continuous Deployment automatisierbare Release-Management-Tools.
Die Vorteile von Continuous Deployment
Wenn Continuous Deployment richtig implementiert ist, kann das die Software-Entwicklung sowohl beschleunigen als auch qualitativ verbessern.
- Durch Continuous Deployment verkürzen Sie die Zeit zwischen der Bearbeitung der Software und der Produktivsetzung deutlich.
- Durch beschleunigte IT-Prozesse generieren Software-Innovationen schneller Umsatzgewinne (kürzere Time-to-Market).
- Sie vermeiden das Risiko von Bugs und Ausfällen, das umfassende Software-Releases zwangsläufig bergen. Stattdessen stellen Sie gleichbleibende Aktualität und Performance sicher.
- Durch das kleinteilige Testen von Änderungen lokalisieren Entwickler schnell und zielgerichtet Fehlerquellen.
- Sie finden ideale Bedingungen vor, um die Software in Verbindung mit APIs von Drittanbietern zu testen und Ausfallrisiken zu minimieren.
Die Nachteile von Continuous Deployment
Wo neue Prozesse eingeführt werden, entsteht zunächst immer ein zusätzlicher (Kosten-)Aufwand.
- Die Integration von Continuous Deployment innerhalb von Projekten ist mit Entwicklungsaufwand verbunden.
- Die kleinteiligen automatisierten Tests erfordern entsprechend große Ressourcen auf Build-Servern.
- Continuous Deployment kann trotz automatisierter Tests nicht garantieren, dass die ausgelieferte Software hohen Qualitätsstandards entspricht. Sie hilft jedoch dabei, die Prozesse in funktionierenden Strukturen zu beschleunigen.
Das kostet Continuous Deployment
Die Kosten für die kontinuierliche Software-Auslieferung hängen von zahlreichen Faktoren ab. Die Preismodelle der Anbieter richten sich unter anderem nach dem Software-Umfang, der Zahl der Entwickler-Zugänge und den Server-Ressourcen (beispielsweise bei parallel nutzbaren Testumgebungen). Software mit begrenztem Funktionsumfang für reine Continuous-Integration-Lösungen ist bisweilen als Open Source erhältlich. Die Kosten für umfangreiche Deployment-Projekte mit Cloud-Ressourcen können mehrere Tausend Euro im Jahr betragen.
Die wichtigsten Funktionen von Continuous Deployment Tools
Konzept und Tool-Set variieren je nach Anbieter des Continuous Deployment und Ihren Anforderungen. Kernfunktionen umfassen die Einrichtung und Konfiguration der Testumgebung, mögliche Rechenkapazitäten und das Release-Management.
Build-Server in der Cloud
Einige Anbieter bieten Continuous Deployment Lösungen mit Build-Server in der Cloud an. Dabei nehmen Sie die Cloud-Ressourcen projektabhängig in Anspruch und passen diese flexibel an Ihre Anforderungen an. Andere Anbieter stellen dagegen allein die Software bzw. das Framework zur Automatisierung des Software-Deployments zur Verfügung. Für die benötigte Rechenleistung gilt: Da das automatisierte Entwicklungsverfahren Code-Modifikationen bei jedem Check-in testet, sind häufig größere Ressourcen für Test und Staging notwendig.
Unter Regressionen versteht man in der IT-Sprache Fehler, die neue Code-Anpassungen in alten, schon getesteten Bereichen verursachen.
Die Testphase beim Continuous Deployment
Der Qualitätssicherung kommt im Continuous Deployment eine besonders große Bedeutung zu. Schließlich soll durch die automatisierte Pipeline keine fehlerhafte Software zum Endnutzer gelangen. Wie bei der konventionellen Software-Entwicklung kommen mehrstufige Testverfahren zum Einsatz, um Integrationsprobleme, Bugs und Regressionen auszuschließen. Bringt einer der Tests unerwünschte Ergebnisse, stoppt der Prozess. Die Entwickler erhalten automatisch einen Testreport.
Die Qualitätssicherung beginnt mit Unit-Tests, die einzelne Komponenten auf ihre Funktionalität prüfen. Die zweite Stufe unterzieht die Software einem System- bzw. Integrationstests. Durch die automatisierten Testdurchgänge für einzelne Code-Veränderungen können Entwickler Fehler im Code schneller lokalisieren. In Performance-Tests stehen die nichtfunktionalen Anforderungen wie Performance, Ressourcenverbrauch und Sicherheit im Mittelpunkt.
Die unterstützten Plattformen und Programmiersprachen
Wichtige Kriterien sind die Art der Entwicklungsumgebung sowie Programmiersprachen, die das jeweilige Continuous Deployment unterstützt. Zunehmende Bedeutung gewinnen dabei Cloud-Plattformen großer Anbieter wie die Google Cloud Platform oder Amazon Webservices.
Skalierung der Nutzergruppe
Durch Anpassungen der Nutzergruppe ist es möglich, bestimmte Funktionen nur an eine begrenzte Nutzergruppe auszuliefern. So verringern Sie das Schadensrisiko bei Bugs und bekommen gleichzeitig ein umfassendes Feedback.
Die Testphase nimmt einen beträchtlichen Teil der Entwicklungszeit in Anspruch. Laut Experten kann sie bei herkömmlichen Entwicklungsverfahren über 50 Prozent des Entwicklungsaufwands ausmachen.
Continuous Deployment in einer sich wandelnden Produktumgebung
Software funktioniert nicht im luftleeren Raum, sondern innerhalb einer sich laufend verändernden Umgebung. Entwickler müssen sich auf die Software von Drittanbietern und neue Cyber-Bedrohungen einstellen. In schnelllebigen digitalen Geschäftsfeldern ändern sich zudem die Anforderungen der Kunden laufend. Nicht zuletzt ist auch die Hardware der Endnutzer einer laufenden Evolution unterworfen. Bei der Entwicklung gilt es, unter anderem wechselnde Displaygrößen und Rechenressourcen zu berücksichtigen.
Unternehmen, die darauf angewiesen sind, in dieser Geschäftsumgebung schnell zu reagieren, können mit Continuous Deployment große Potenziale ausschöpfen. Anders als bei großen Software-Releases verstreichen keine lange Wartezeiten; große und kleine Fortschritte im Code werden mit kurzer Time-to-Market ausgeliefert. Die Unternehmens-IT arbeitet flexibler und effizienter. Zudem schafft Continuous Deployment ideale Voraussetzungen für mutige und experimentelle Ansätze.
Fazit
Continuous Deployment bietet einen neuen Ansatz für IT-Unternehmen. Ein automatisierter, fließender Ablauf ersetzt klar abgegrenzte Phasen der Software-Entwicklung. Continuous Deployment Tools automatisieren den Prozess vom Check-in des Codes über die Testphase bis hin zum Release. So treiben Sie die Entwicklung der Software voran und verkürzen die Time-to-Market für neue Funktionen.
Außerdem verringert sich das Risiko, mit umfangreichen Code-Überarbeitungen entsprechend große Fehler auszuliefern, und damit die Kundenzufriedenheit zu gefährden. Bugs, die durch die Deployment-Pipeline zum Kunden gelangen, lassen sich schnell beheben. Bevor die Vorteile zum Tragen kommen, gilt es, das Continuous Deployment technisch zu implementieren und interne Prozesse darauf abzustimmen. Besonders für Unternehmen in sich schnell wandelnden Geschäftsfeldern mit kontinuierlichen Releases lohnt sich diese Investition.