Sie brauchen einen Continuous Delivery Berater und/oder möchten, dass wir Ihnen unser Angebot in diesem Umfeld vorstellen?
Bitte hinterlassen Sie uns Ihren Namen und die Kontaktdaten. Dann melden wir uns bei Ihnen.
mindsquare » Knowhow » DevOps
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 Teil einer CI/CD-Pipeline basiert CD auf Continuous Integration und verbessert den Auslieferungsprozess von Software durch Automatisierung. So können Unternehmen ihren Kunden releasefähige Software mit minimalem Aufwand bereitstellen.
Continuous Delivery ist ein Konzept der agilen Software-Entwicklung, welches auf dem DevOps– bzw. DevSecOps-Ansatz basiert und eine Erweiterung von Continuous Integration darstellt.
Anders als traditionelle Entwicklungsmodelle wie bspw. das Wasserfallmodell setzen Entwicklungsverfahren mit Continuous Delivery auf iterative Entwicklungsprozesse. Das bedeutet, Phasen wie Development, Testing, Feedback, Qualitätssicherung und Auslieferung durchlaufen sich wiederholende Schleifen mit einem hohen Grad an Automatisierung. So wird die Anwendung in vielen kurzen Zyklen kontinuierlich um neuen Code erweitert, welcher durch automatische Testverfahren unverzüglich auf Kompatibilität geprüft wird. Dieser Ansatz wird als „Shift Left Testing“ bezeichnet und ermöglicht es Entwicklern, ihren Code zu verbessern, bevor sie sich anderen Aufgaben widmen.
Dieses Zusammenspiel agiler Entwicklungsmethoden wird auch als CI/CD-Pipeline bezeichnet, in der Continuous Integration als maßgebliches Werkzeug zum Einsatz kommt und durch Continuous Delivery bzw. Continuous Deployment ergänzt wird.
Konkret sorgt Continuous Delivery in der CI/CD-Pipeline dafür, dass der Code eines Entwicklers nach dem Durchführen von Einheits- und Integrationstests automatisch freigegeben und in das Quellcode-Repository hochgeladen wird.
Dort steht er dem Operations-Team zur Verfügung und kann für die Live-Produktivumgebung bereitgestellt werden. Ziel von Continuous Delivery ist, dass das zentrale Repository jederzeit in einer Produktivumgebung bereitgestellt werden kann, wodurch die Implementierung neuen Codes mit minimalem Aufwand quasi auf Knopfdruck ermöglicht wird. Durch die Automatisierung des Integrationsprozesses werden also schnelle, zuverlässige und wiederholbare Deployments ermöglicht.
Zum einen werden Entwicklungszyklen dadurch effizienter gestaltet, etwa indem DevOps-Teams ihre Software-Komponenten in kurzen Intervallen über inkrementelle Updates ausliefern können, während weiterhin am Endprodukt gearbeitet wird. Gleichzeitig erhalten Entwickler über die Pipeline konstant Testergebnisse und Feedback zu ihrem Code, wodurch dieser gezielt angepasst und verbessert werden kann.
Zum anderen profitieren auch Kunden von diesem Vorgehen: Sie erhalten bereits vor Fertigstellung des Endprodukts funktionsfähige Features der Anwendung, bspw. zu Test- oder Demozwecken. Diese Anwendungskomponenten können dann auf Funktionalität und Benutzerakzeptanz geprüft werden. Das daraus resultierende Feedback wird direkt an die Entwickler geleitet und trägt zur Verbesserung der Softwarequalität bei.
In diesem E-Book erfahren Sie mehr über DevOps und ob es für Ihr Unternehmen sinnvoll ist.
Continuous Delivery verfolgt das Ziel, die Freigabe von Produktversionen zu beschleunigen und Schwierigkeiten bzw. Verzögerungen bei Build-, Testing- und Deployment-Prozessen zu minimieren.
Für die Umsetzung von Continuous Delivery muss allerdings eine auf Continuous Integration basierende Pipeline mitsamt den dafür benötigten Technologien (wie z. B. ein zentrales Code-Repository oder ein konfigurierter Test- und Build-Server) eingerichtet werden. Ergänzend dazu bedarf es der Automatisierung von Freigabestrukturen für die Software bis zur Produktionsumgebung. Schließlich muss der zentrale Master-Branch im Repository einer Software stets releasefähigen Code enthalten, damit jede Anwendungsversion in der Versionsverwaltung zu jeder Zeit lieferbar ist.
Konkret sind folgende Schritte zu befolgen, um eine gut strukturierte CI/CD-Pipeline für einen verkürzten Build-Test-Deployment-Zyklus aufzubauen:
Entwickler, die an herkömmliche Entwicklungsmodelle mit längerer Zyklusdauer gewöhnt sind, müssen sich in neue Prozesse und die Abläufe der CI/CD-Pipeline einarbeiten und berücksichtigen, dass ihre Code-Commits jederzeit für einen Kunden freigegeben werden können. Dazu bedarf es einer auf CD ausgerichteten Anpassung des Vorgehens beim Code-Branching – zusätzlich können Methoden wie Feature Toggles sinnvoll sein, um Code frühzeitig zu commiten, auch wenn dieser noch nicht bereit für den Einsatz beim Endnutzer ist.
In regelmäßigen Feedbackschleifen Fehler beheben und das Risiko eines fehlerhaften Endproduktes minimieren.
Voraussetzung für einen erfolgreichen Umstieg auf eine CI/CD-Pipeline mit agilen Entwicklungszyklen ist also der Aufbau einer geeigneten technologischen Infrastruktur sowie die Bereitschaft aller Teammitglieder, die Abläufe der neuen Entwicklungs- und Bereitstellungsverfahren einzuhalten.
Zusätzlich dazu müssen Entwickler beim Erstellen ihres Codes darauf achten, dass die Software eine Reihe von architektonisch bedeutsamen Anforderungen (architecturally significant requirements – kurz ASRs) erfüllt, damit Continuous Delivery effektiv praktiziert werden kann. Zu diesen Merkmalen zählen Bereitstellungsfähigkeit (Deployability), Modifizierbarkeit (Modifiability) und Testbarkeit (Testability).
Entwickler nutzen oftmals Microservices, um die Architektur komplexer Software-Systeme so zu gestalten, dass die nötigen Anforderungen erfüllt werden. So können kleine, inkrementelle Veränderungen leichter durchgeführt werden, was den gesamten Prozess bis zur Bereitstellung vereinfacht und verkürzt.
Die Begriffe DevOps, Continuous Integration, Continuous Delivery und Continuous Deployment sind eng miteinander verbunden, daher kommt es häufig zu Missverständnissen bzgl. ihrer konkreten Einsatzweisen. In diesem Abschnitt soll daher das Verhältnis der einzelnen Konzepte noch einmal deutlich aufgezeigt werden.
DevOps beschreibt eine ganzheitliche Unternehmenskultur, die darauf abzielt, eine transparente Zusammenarbeit der Bereiche Entwicklung (Development) und Betrieb (Operations) zu ermöglichen. Durch Automatisierung, angepasstes Plattformdesign und die offene Kommunikation von Projektbeteiligten werden Entwicklungsprozesse mithilfe einer CI/CD-Pipeline verbessert und die Bereitstellung einer qualitativ hochwertigen Anwendung erleichtert.
DevOps dient also als kulturelle Basis für agile Entwicklungsmethoden, bei denen Teams, die herkömmlicherweise unabhängig voneinander agieren, nun enger zusammenarbeiten und einen offenen Austausch pflegen. Als Basis der agilen Software-Entwicklung legt Continuous Integration den Grundstein für dieses Konzept und mündet in Continuous Delivery bzw. Deployment, sobald es um die Bereitstellung und Auslieferung neuentwickelter Anwendungskomponenten geht.
Continuous Delivery baut unmittelbar auf Continuous Integration auf, weshalb das Zusammenspiel dieser beiden Verfahren oftmals als CI/CD abgekürzt wird. Dabei ist zu beachten, dass CI den Fokus auf den Entwicklungsprozess selbst richtet: Entwickler programmieren modulare Code-Komponenten einer Anwendung, verifizieren deren Funktionsfähigkeit und Kompatibilität mittels automatisierter Tests und laden sie anschließend in ein zentrales Quellcode-Repository hoch.
Continuous Delivery erweitert dieses Konzept, indem es die Durchführung von Einheits- und Integrationstests automatisiert und fehlerfreien Code automatisch in die Quellcode-Basis einfügt. Dort steht er dem Operations-Team zur Verfügung und kann für die Live-Produktivumgebung bereitgestellt werden.
Continuous Deployment stellt eine weitergehende Form von Continuous Delivery dar. Die zwei Ansätze unterscheiden sich hauptsächlich in der Art der Software-Bereitstellung: Diese findet entweder manuell (Continuous Delivery) oder automatisch (Continuous Deployment) statt.
Das bedeutet, bei Continuous Delivery wird die Software zwar automatisch auf ihre Funktionsfähigkeit getestet und in das Quellcode-Repository hochgeladen, allerdings muss das Betriebsteam sie von dort noch manuell auf die Produktivumgebung veröffentlichen.
Bei Continuous Deployment wird dagegen auch der Schritt zur Auslieferung der Software an den Endkunden automatisiert. Um dies fehlerfrei und ohne Sicherheitsrisiken zu ermöglichen, müssen Entwicklungs- und Testverfahren entsprechend angepasst und mit äußerster Sorgfalt durchgeführt werden – schließlich wird jede Code-Änderung direkt in die Produktivumgebung des Endkunden übernommen.
Dieses Vorgehen dient zur zusätzlichen Beschleunigung der Anwendungsbereitstellung und wirkt der Überlastung von Operations-Teams entgegen, indem die Menge benötigter manueller Prozesse reduziert wird.
Software-Unternehmen setzen zunehmend auf den DevOps-Ansatz und nutzen CI/CD-Pipelines, um agile Entwicklungsmethoden und vereinfachte Verfahren zur Bereitstellung von Anwendungen zu fördern. Eine solche CI/CD-Pipeline umfasst mehrere sich wiederholende Phasen, in denen möglichst viele Entwicklungs-, Bereitstellungs- und Testprozesse automatisiert stattfinden. Zum einen werden Teams entlastet und das Risiko menschlicher Fehler wird minimiert, wodurch sich die Produktqualität erhöht. Zum anderen wird so die erforderliche Zeit für Entwicklungszyklen und die Auslieferung der Software reduziert.
Die Basis von CI/CD-Pipelines stellt Continuous Integration dar: Dieses Verfahren ist maßgeblich für das Überwachen und Testen neu entwickelten Codes, bevor dieser in das zentrale Quellcodeverzeichnis übertragen wird.
Ergänzend dazu kommt Continuous Delivery zum Einsatz: Ist der geschriebene Code kompatibel und besteht alle Testverfahren, wird er automatisch in das Repository hochgeladen. Ohne Continuous Delivery muss dieser Schritt manuell vom Entwickler durchgeführt werden.
Im Quellcode-Repository wird der gesamte Anwendungscode zusammengeführt und kann nach weiteren Validierungen an die Produktivumgebung der Endkunden veröffentlicht werden. Entweder wird dieser Schritt manuell durch Mitarbeiter des Betriebs abgewickelt oder findet durch Einsatz von Continuous Deployment automatisiert statt.
Kurz gesagt stellt Continuous Integration den grundlegenden Bestandteil einer CI/CD-Pipeline dar, an den Continuous Delivery anschließt. Continuous Deployment entspricht dem Prozess von Continuous Delivery mit dem Unterschied, dass auch der Release vollkommen automatisch erfolgt.
Zum Aufbau einer CI/CD-Pipeline verwenden DevOps-Teams im Allgemeinen folgende Technologien:
DevOps-Teams können auf eine Vielzahl von Anbietern zurückgreifen, welche erforderliche Software und Pipeline-Tools zum Einrichten und Nutzen dieser Technologien zur Verfügung stellen. So kann das gesamte Application Lifecycle Management (ALM) von der Code-Entwicklung über die Bereitstellung bis hin zur Überwachung und Skalierung abgewickelt werden. Vier dieser Programme stellen wir an dieser Stelle vor:
Hier erfahren Sie, welche Themen/Aspekte für eine erfolgreiche DevOps Implementierung essentiell sind und worauf Sie dabei achten müssen.
Continuous Delivery bietet gegenüber der klassischen Software-Entwicklung zahlreiche Vorteile: Herkömmlicherweise erhalten Kunden ihr Endprodukt erst nach wochen- oder monatelanger Entwicklung, wenn alle geplanten Features integriert wurden und die Qualitätsüberprüfung abgeschlossen ist. Eine Anpassung oder Verbesserung der Software findet danach meist über Patches und Updates statt, die diesen Prozess ebenfalls durchlaufen müssen.
Im Kontrast dazu erlaubt eine CI/CD-Pipeline, dass Kunden bereits frühzeitig in den Entwicklungsprozess eingebunden werden. Sie erhalten Zugang zu Kernfunktionen der Software und können diese unter realen Bedingungen testen, während weiterhin am Endprodukt gearbeitet wird. Der Kunde übernimmt also gewissermaßen selbst einen Teil der Qualitätssicherung und kann Entwicklern wertvolles Feedback liefern, um das Endprodukt nach seinen Wünschen mitzugestalten.
Die CI/CD-Pipeline zeichnet sich durch das fortlaufende und wiederholte Ineinandergreifen der Bereiche Entwicklung, Qualitätssicherung und Produktion aus, was durch die Automatisierung zahlreicher Tätigkeiten ermöglicht wird. Projektbeteiligte wie auch Endkunden profitieren von folgenden Vorteilen, die eine CI/CD-Pipeline mit Continuous Delivery liefert:
Continuous Delivery und verwandte Verfahren bringen eine Reihe vielfältiger Vorteile, stellen Unternehmen allerdings auch vor diverse Herausforderungen. Einige davon werden nachfolgend vorgestellt:
Haben Sie weitere Fragen zum Thema Continuous Delivery? 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.
Bitte hinterlassen Sie uns Ihren Namen und die Kontaktdaten. Dann melden wir uns bei Ihnen.
Continuous Delivery ist ein DevOps-Konzept und kommt in CI/CD-Pipelines mit agilen Software-Entwicklungsmethoden zum Einsatz. Continuous Delivery stellt eine Erweiterung von Continuous Integration dar und sorgt dafür, dass von Programmierern entwickelte Code-Artefakte automatisch getestet und in ein für alle Projektbeteiligte zugängliches Quellcode-Repository hochgeladen werden.
CI/CD steht für das Zusammenspiel verschiedener Technologien und Methoden zur agilen Software-Entwicklung, namentlich Continuous Integration und Continuous Delivery (und ergänzend dazu Continuous Deployment). Der Entwicklungszyklus wird durch automatisierte Verfahren effizienter gestaltet und beschleunigt, wodurch sich die Produktqualität und der Auslieferungsprozess verbessern.
Es existieren zahlreiche Programme und Tools, die für Continuous Delivery und verwandte Verfahren eingesetzt werden können. Zu den beliebtesten zählen das Software-System Jenkins, die Plattform CircleCI, das Kollaborationstool Azure DevOps Server bzw. Services sowie die SaaS-Plattform Codeship.
CI/CD-Pipelines sind vom offenen Austausch geprägt und arbeiten mit sich wiederholenden Schleifen, wodurch sich die Produktqualität und das Bereitstellungsverfahren zum Endkunden verbessern. Dies führt zu mehr Effizienz und Produktivität, kürzeren Markteinführungszeiten, häufigen und stabilen Releases, erhöhter Mitarbeiterzufriedenheit und mehr Kundenakzeptanz.
Unternehmen, die Continuous Delivery umsetzen möchten, müssen u. a. mit folgenden Herausforderungen rechnen: der Aufwand zur Einrichtung und Instandhaltung benötigter Infrastruktur, der Aufbau gut durchdachter und aktualisierter Testverfahren, die Abstimmung zusammenarbeitender Teams und die Berücksichtigung von Kundenfeedback im Entwicklungsprozess.
Vollumfängliche Implementierungs- und Betriebsunterstützung für führende Softwareprodukte unserer Partnerunternehmen:
Vollumfängliche Implementierungs- und Betriebsunterstützung für führende Softwareprodukte unserer Partnerunternehmen:
Vollumfängliche Implementierungs- und Betriebsunterstützung für führende Softwareprodukte unserer Partnerunternehmen:
Vollumfängliche Implementierungs- und Betriebsunterstützung für führende Softwareprodukte unserer Partnerunternehmen: