mindsquare.de durchsuchen

Continuous Deployment

Sie brauchen einen Continuous Deployment Berater und/oder möchten, dass wir Ihnen unser Angebot in diesem Umfeld vorstellen?

Lewin Böhlke
4. November 2021

Continuous Deployment (kontinuierliche Bereitstellung, kurz: CD – nicht zu verwechseln mit Continuous Delivery) ist eine Release-Strategie in der Software-Entwicklung. Bei CD wird jede Anwendungsversion, die eine automatisierte Testphase erfolgreich durchlaufen hat, automatisch für die produktive Bereitstellung freigegeben. Dank des automatischen Freigabeverfahrens können vereinzelte Änderungen und Verbesserungen von Software ohne manuelles Eingreifen direkt in den Produktiveinsatz gelangen.

Was ist Continuous Deployment?

Herkömmliche Entwicklungsprozesse, bei denen Software-Komponenten erst kurz vor Release zusammengefügt und getestet werden, sind fehleranfällig und ressourcenintensiv. Im Gegensatz dazu fördern die zunehmend beliebter werdenden DevOps– und DevSecOps-Ansätze agile Entwicklungsmethoden und eine kontinuierliche Entwicklung sowie Auslieferung von Code-Artefakten.

Der gesamte Prozess ist durch den offenen Austausch von Entwicklern und Betrieb geprägt. Zusätzlich werden dabei diverse Technologien und Tools zur Automatisierung zahlreicher Prozesse im Application Lifecycle Management (ALM) genutzt. Eine Methode, die dabei eingesetzt werden, um die Bereitstellung von Software an die Endnutzer zu erleichtern, ist Continuous Deployment.

Under E-Book zum Thema: Was ist DevOps

E-Book: Was ist DevOps (development & operations)?

In diesem E-Book erfahren Sie mehr über DevOps und ob es für Ihr Unternehmen sinnvoll ist.

Continuous Deployment ist die konsequente Weiterentwicklung von Continuous Delivery und baut gleichermaßen auf Continuous Integration auf: Continuous Integration optimiert die inkrementelle (Weiter-)Entwicklung und Integration von Anwendungsfeatures.

Während Continuous Delivery produktionsreife Builds automatisch in ein zentrales Code-Repository hochlädt, wird bei Continuous Deployment auch die Freigabe einer Anwendung in die Produktivumgebung des Endkunden automatisiert. Voraussetzung dafür ist die Einrichtung automatisierter Testumgebungen zur Absicherung, dass die Anwendung problemlos im Realbetrieb funktioniert.

Continuous Deployment stellt den abschließenden Schritt der agilen Software-Entwicklung nach dem DevOps-Prinzip dar. CD kann nur dann funktionieren, wenn der Entwicklungsprozess gemäß den Vorgaben einer CI/CD-Pipeline abläuft und Continuous Integration und Continuous Delivery konsequent umgesetzt werden.

Continuous Integration, Continuous Delivery und Continuous Deployment im Zusammenspiel

Zusammenspiel von Continuous Integration, Delivery & Deployment

Nutzen von Continuous Deployment

Mittels Continuous Deployment können Entwicklerteams Code-Änderungen direkt in die Produktionsumgebung spielen, solange automatisierte Tests vorher erfolgreich durchlaufen wurden. So wird gewährleistet, dass die neu zugefügten Elemente keine negativen Auswirkungen auf die Lauffähigkeit des Endsystems haben. Bei fehlgeschlagenen Tests wird dagegen das neue Software-Artefakt nicht auf die Produktionsumgebung gespielt – stattdessen erhält das Entwickler-Team Testreports als Feedback und kümmert sich um die Behebung noch bestehender Fehler.

In der Praxis bedeutet dies, dass Änderungen in der Software innerhalb kurzer Zeit und ohne manuelle Freigabe live gehen können, vorausgesetzt es werden keine Fehler während der automatisierten Tests entdeckt. Kunden profitieren also unmittelbar von neuen Features, während das Endprodukt noch weiterhin entwickelt wird. Dadurch erhalten Endnutzer die Gelegenheit, wertvolles Feedback bzgl. der Anwendungsfunktionen zurück an die Entwickler zu leiten, damit dieses im weiteren Entwicklungsprozess berücksichtigt werden kann.

7 Schritte zum ersten erfolgreichen DevOps Projekt

7 Schritte zum ersten erfolgreichen DevOps Projekt

In regelmäßigen Feedbackschleifen Fehler beheben und das Risiko eines fehlerhaften Endproduktes minimieren.

Voraussetzungen für Continuous Deployment

Damit eine CI/CD-Pipeline mit Continuous Deployment funktionieren kann, müssen einige Voraussetzungen erfüllt und technische Vorabinvestitionen getätigt werden. Im Folgendein ein Überblick wichtiger Punkte, die es zu beachten gilt:

  • Infrastruktur: CI/CD-Pipelines benötigen u. a. eigene Server zum Ausführen von Build- und Test-Jobs. Unternehmen können diese selbstständig „on premise“ einrichten oder alternativ einen von zahlreichen Cloud-Services nutzen, die darüber hinaus meist noch weitere Tools und Features für CI/CD-Prozesse liefern.
  • Automatisierte Tests: Automatische Testverfahren sind für die erfolgreiche Umsetzung eines CI/CD-Projekts essenziell, da sie gewährleisten, dass die Abläufe in der DevOps-Pipeline reibungslos stattfinden können. Vor dem Aufbau einer Pipeline müssen also bereits entsprechende Testserver eingerichtet und Routinen programmiert werden, was mit einem hohen Entwicklungsaufwand verbunden sein kann.
  • Rolling Deployments: Sollte es trotz Testverfahren dazu kommen, dass fehlerhafter Code in der Produktivumgebung ausgeliefert wird, muss die Pipeline in der Lage sein, eine Bereitstellung rückgängig zu machen. Daher bieten sich automatisierte Rolling-Deployment-Technologien wie bspw. Blue-Green-Deploys für eine sichere und ordnungsgemäße Bereitstellung an.
  • Überwachung & Warnungen: Um auch nach der Bereitstellung des neuen Codes über den Zustand des Gesamtsystems Bescheid zu wissen, sollten robuste Pipelines über eine Echtzeit-Überwachung mit Benachrichtigungsfunktion verfügen. Dazu muss der Dokumentationsprozess mit den schnellen und kontinuierlichen Deployments mithalten können, um einen Überblick behalten zu können.
  • Kommunikation & Feedback: Während bei Continuous Integration und Continuous Delivery die Zusammenarbeit von Entwicklung und Betrieb im Vordergrund steht, spielt bei Continuous Deployment zusätzlich die offene Kommunikation zwischen Projektbeteiligten und Kunden eine wichtige Rolle. Anwender sollten stark in den Entwicklungsprozess mit einbezogen werden – zum einen, damit sie sich direkt mit den Software-Änderungen vertraut machen können und zum anderen, damit Entwickler konkretes User Feedback zur aktuellen Anwendungsversion erhalten.
DevOps Checkliste

Checkliste: Mit dem mindsquare DevOps-Circle zur erfolgreichen DevOps-Einführung

Hier erfahren Sie, welche Themen/Aspekte für eine erfolgreiche DevOps Implementierung essentiell sind und worauf Sie dabei achten müssen.

Best Practices

Nach der Einrichtung einer CI/CD-Pipeline müssen Prozesse und Infrastrukturen kontinuierlich überwacht, angepasst und gewartet werden, damit der langfristige Erfolg des Entwicklungsverfahrens gewährleistet werden kann. Um den größtmöglichen Nutzen aus der CI/CD-Pipeline zu ziehen, bieten sich daher folgende Best Practices an:

  • Test-Driven Development: Vor Beginn der Entwicklung wird eine Verhaltensspezifikation für neue Softwarefunktionen definiert. Diese Spezifikation wird dann beim Schreiben der automatisierten Tests und des Anwendungscodes berücksichtigt. So wird sichergestellt, dass der gesamte Code bereits im Vorfeld durch die Tests abgedeckt wird. Die Alternative dazu ist, zuerst den Code zu liefern und erst danach die Testabdeckung zu erstellen. Dadurch können allerdings Lücken zwischen dem erwarteten Verhalten der Spezifikation und dem produzierten Code entstehen.
  • Single Method of Deployment: Sobald eine kontinuierliche Bereitstellungspipeline eingerichtet ist, ist es von entscheidender Bedeutung, dass keine andere Methode für die Entwicklung oder Bereitstellung genutzt wird. Entwickler sollten ihren Code nicht manuell in die Produktion kopieren oder diesen live bearbeiten. Manuelle Änderungen außerhalb der CI/CD-Pipeline führen zu einer Desynchronisierung der Deployment-Historie und unterbrechen den Entwicklungsfluss.
  • Containerisierung: Die Containerisierung einer Softwareanwendung stellt sicher, dass sie sich auf allen Rechnern, auf denen sie bereitgestellt wird, gleich verhält. Dadurch wird eine Reihe von Problemen vermieden, bei denen Software auf einem Rechner funktioniert, sich auf einem anderen aber anders verhält. Container können als Teil der CI/CD-Pipeline integriert werden, so dass sich der Code auf dem Rechner eines Entwicklers genauso verhält wie bei automatisierten Tests und bei der Produktionsbereitstellung.

Vorteile von Continuous Deployment

Continuous Deployment wird von vielen Entwicklern aufgrund seiner Geschwindigkeit und hohen Benutzerfreundlichkeit geschätzt. Wird das Verfahren unter Einhaltung festgelegter Voraussetzungen und einer klar strukturierten Arbeitsaufteilung implementiert, schafft es klare wirtschaftliche Vorteile für Software-Unternehmen und deren Kunden.

Eine CI/CD-Pipeline ermöglicht es Unternehmen, flexibel auf veränderte Marktanforderungen zu reagieren und Ideen, Verbesserungen und neue Funktionen schnell bereitzustellen. Zu den wichtigsten Vorteilen von Continuous Deployment zählen u. a.:

  • Kurze Entwicklungszyklen: Eine CI/CD-Pipeline fördert häufige, inkrementelle Änderungen des Anwendungscodes, die automatisch überprüft und getestet werden. Dadurch treten Fehler und Instabilitäten seltener auf und können in kurzer Zeit behoben werden. Zusätzlich kommt es zu kontinuierlichen Releases von Anwendungsfeatures, ohne dass es zu Unterbrechungen im Entwicklungsprozess kommt. So lassen sich Anwendungen flexibel und schnell entwickeln und Programmierern wird ermöglicht, schnell auf neue Anforderungen zu reagieren, ohne dabei überfordert zu werden.
  • Stabile & häufige Releases: Durch die geringere Anzahl manueller und administrativer Aufgaben erhöht sich die Entwicklerproduktivität. Dies ermöglicht die kontinuierliche Bereitstellung vieler kleinerer Änderungen, sodass Releases häufiger stattfinden können und weniger riskant sind, da sich eventuell auftretende Probleme leichter beheben lassen. Dies ermöglicht es, Kunden fortlaufend Verbesserungen zur Verfügung zu stellen und die Software-Qualität stets zu verbessern.
  • Kundenfeedback: Durch die Einbindung von Endnutzern in die Deploymentpipeline erhalten Projektbeteiligte direkten Zugang zu wertvollem Kundenfeedback und können dieses im weiteren Entwicklungsprozess berücksichtigen. Durch den offenen Austausch stehen Entwicklerteams ihren Kunden zudem zur schnellen Bearbeitung von Fehlerberichten oder Funktionsanfragen zur Verfügung.

Der Einsatz einer CI/CD-Pipeline mit Continuous Deployment liefert bei korrekter Umsetzung viele Vorteile, ist jedoch auch mit einigen Investitionen und Herausforderungen verbunden.

Herausforderungen von Continuous Deployment

Die Vorteile einer Deploymentpipeline haben ihren Preis: Damit sie funktioniert, müssen entsprechende Systeme zunächst aufgebaut und getestet werden, was sich als aufwendiges und kostenintensives Unterfangen herausstellen kann. Im Folgenden zeigen wir gängige Herausforderungen bei der Einrichtung einer CI/CD-Pipeline auf:

  • Initialkosten: Beim Aufbau einer Deploymentpipeline ist mit hohen anfänglichen Kosten zu rechnen, um eine funktionsfähige Infrastruktur, geeignete Workflows und sichere Testverfahren zu entwickeln.
  • Instandhaltung: Zusätzlich zum Initialaufwand erfordern die eingerichteten Systeme eine fortlaufende technische Wartung und Weiterentwicklung, um zu gewährleisten, dass die Pipeline langfristig schnell und reibungslos läuft.
  • Zuverlässigkeit der Testroutinen: Ein großer Teil des Erfolgs einer CI/CD-Pipeline hängt von der Automatisierung, insbesondere den automatisierten Testverfahren ab. Diese sind mit äußerster Sorgfalt zu programmieren, damit schwerwiegende Fehler nicht übersehen oder zu spät erkannt werden, da sonst umfassende Revisionen notwendig werden.
  • Anpassen von Testverfahren: Die Pipeline begünstigt das Durchführen und Testen vieler kleiner Code-Änderungen. Gleichzeitig bedeutet dies, dass sich umfangreiche Änderungen in der Software häufig nur umständlich implementieren lassen, da für solche Schritte die Testroutinen entsprechend konfiguriert werden müssen.
  • Compliance: Die Einhaltung der Compliance oder anderer Einschränkungen können den Einsatz von Continuous Deployment durch die IT-Organisation verhindern.
Lewin Böhlke

Websession: Continuous Deployment

Haben Sie weitere Fragen zum Thema Continuous Deployment? Oder wünschen Sie sich eine individuelle Beratung zum erfolgreichen Aufbau einer CI/CD-Pipeline in Ihrem Unternehmen? Dann kontaktieren Sie uns für ein unverbindliches Erstgespräch mit einem unserer DevOps-Experten.

FAQ

Was bedeutet Continuous Deployment?

Continuous Deployment bezeichnet die abschließende Bereitstellungsphase einer automatisierten Software-Release-Pipeline nach dem DevOps-Prinzip. CD ermöglicht es, dass von Entwicklern durchgeführte Änderungen im Quellcodeverzeichnis einer Anwendung automatisch überprüft und für die Produktivumgebung freigegeben werden. Dadurch erhält der Endbenutzer im System unverzüglich Zugang zu neuen Features.

Was ist der Unterschied zwischen Continuous Delivery und Continuous Deployment?

Continuous Delivery sorgt dafür, dass produktionsreife Builds, welche alle vorgeschriebenen Tests bestanden haben, automatisch in ein zentrales Code-Repository hochgeladen werden. Dagegen wird bei Continuous Deployment auch die Freigabe einer Anwendung in die Produktivumgebung des Endkunden automatisiert. Voraussetzung dafür ist, dass der Anwendungscode weitere Testroutinen besteht und somit gewährleistet wird, dass die Software problemlos im Realbetrieb funktioniert.

Was versteht man unter CI/CD?

CI/CD steht für das Zusammenspiel der Methoden Continuous Integration und Continuous Delivery (ergänzend dazu Continuous Deployment) zur agilen Entwicklung und Bereitstellung von Software. Diese Verfahren bauen zwar aufeinander auf, verfügen allerdings über jeweils eigene geschlossene Feedback-Prozesse. Daher spricht man bei ihrem Zusammenspiel oftmals von einer CI/CD-Pipeline.

Welche Vorteile liefert Continuous Deployment?

CD liefert Software-Unternehmen und ihren Kunden spürbare Vorteile, indem es kurze Entwicklungszyklen ermöglicht, was zu häufigeren Releases einzelner Anwendungsfeatures führt. Zudem wird der offene Austausch von Feedback zwischen Entwicklern, Betrieb und Endnutzern gefördert, wodurch die Software-Qualität verbessert wird. So können Unternehmen Verbesserungen schneller umsetzen und flexibel auf veränderte Marktanforderungen reagieren.

Verwandte Know-Hows

Das Problem-Management nach ITIL sorgt dafür, dass Störungen frühzeitig erkannt und eliminiert werden. Die Hauptziele dieses ITIL-Prozesses sind die Vermeidung von Incidents und die Minimierung der Auswirkungen von Incidents, die […]
Agile Softwareentwicklung bezeichnet eine Reihe von Ansätzen zur iterativen und unbürokratischen Anwendungsentwicklung. Dabei wird ein hohes Maß an Transparenz und Flexibilität angestrebt, sodass Prozesse möglichst einfach und beweglich (also agil) […]
Continuous Delivery (kurz CD, zu Deutsch: kontinuierliche Auslieferung) bezeichnet eine Sammlung von Technologien, Prozessen und Tools, die kurze Entwicklungszyklen und eine schnelle Auslieferung von Software-Updates auf produktive Endsystemen ermöglichen. Als […]

Passende Angebote zum Thema

DevOps und agile ABAP-Entwicklung sind Themen, die schon seit einiger Zeit diskutiert werden. Die Philosophien versprechen viele Vorteile wie schnellere Release-Zyklen, höhere Robustheit der Applikationen, geringere Fehlerzahlen und flexiblere Entwicklung. […]
Kennen Sie auch das Problem: Sie haben eine Herausforderung im Coding umzusetzen, aber es will einfach nicht klappen? Testdaten eingegeben, Konsolenausgaben erzeugt, Debugger gesetzt, … dennoch funktioniert es nicht. Mit […]
Sie haben eine App-Idee, jedoch noch kein klares Bild zur Umsetzung? Im App-Design Workshop entwickeln wir zusammen mit Ihnen klare Zielbilder mit einem klaren Konzept. Anschließend, oder sogar währenddessen, setzt […]
Kontakt aufnehmen
Ansprechpartner
Laura Feldkamp mindsquare Kundenservice
Laura Feldkamp Kundenservice