Was ist Continuous Delivery?
Mit Continuous Delivery können Entwicklerteams den Prozess automatisieren, der den Weg einer Software durch den Softwareentwicklungslebenszyklus vorgibt
IBM Newsletter abonnieren
Schwarz-blauer Hintergrund
Was ist Continuous Delivery?

Eine kontinuierliche Bereitstellung (Continuous Delivery) ermöglicht es Entwicklungsteams, den Prozess, mit dem Software den Softwareentwicklungslebenszyklus durchläuft, zu automatisieren, und kann bei der Bereitstellung einer integrierten Toolbox viele Vorteile bieten, darunter Folgendes:

  • Verkürzung der Bereitstellungszeit durch kontinuierliches Testen und Entwickeln

  • Senken der mit einer traditionellen Softwareentwicklung verbundenen Kosten

  • Skalierung der Softwareentwicklung basierend auf der Projektgröße

  • Automatisches Bereitstellen des Codes in jeder Phase des Entwicklungszyklus

Im folgenden Video erläutert Eric Minick Continuous Delivery näher:

Best Practices für Continuous Delivery

Im Folgenden finden Sie eine Reihe von Best Practices, die Sie bei der Verwendung von Continuous Delivery berücksichtigen sollten:

  • Machen Sie jede Änderung freigabefähig: Wenn Sie Continuous Delivery verwenden, um jede Änderung freigabefähig zu machen, müssen darin Benutzerdokumentation, Runbooks und Informationen zu den Änderungen zu Überwachungszwecken enthalten sein.

  • Setzen Sie auf eine stammbasierte Entwicklung: Continuous Delivery baut auf kontinuierlicher Integration auf. Vermeiden Sie so weit wie möglich Verzweigungen, die die Integration verzögern, damit jede Änderung gemeinsam erstellt, getestet und bereitgestellt werden kann, um schnellstmöglich Feedback zu erhalten.

  • Bereitstellung über eine automatisierte Pipeline: Um die kontinuierliche Bereitstellung erfolgreich zu implementieren, benötigen Sie eine gut strukturierte, automatisierte Delivery Pipeline, um sicherzustellen, dass alle Code-Freigaben auf konsistente Weise in Ihre Test- und Produktionsumgebungen gelangen.

  • So viel wie möglich automatisieren: Bei der kontinuierlichen Bereitstellung müssen Sie so viele Prozesse wie möglich in Ihrem Softwareentwicklungszyklus automatisieren, um eine gute, zuverlässige Delivery Pipeline zu schaffen, nicht nur für Code-Builds und Bereitstellungen, sondern auch für die Erstellung neuer Entwicklungsumgebungen.

  • Das Ziel sind null Ausfallzeiten: Um die Anwendungsverfügbarkeit bei häufigen, kontinuierlichen Aktualisierungen sicherzustellen, müssen Sie eine neue Funktion zunächst validieren, bevor Sie sie in der öffentlichen aktiven Anwendungsinstanz bereitstellen.

  • Veröffentlichung nach Testgranularität: Wenn zwei Teile eines Systems zusammen getestet werden müssen, sollten sie auch zusammen veröffentlicht werden. So haben Sie Gewissheit, dass die Teile Ihres Systems kompatibel sind. Release-Automatisierungstools sind gut für die Koordination einer solchen Bereitstellung geeignet. Alternativ können Sie die Teile vollständig entkoppeln.
Continuous Pipeline/Framework

Um die Vorteile von Continuous Delivery zu nutzen, benötigen Sie weitere Elemente des Continuous-Frameworks, z. B. Continuous Exploration, Continuous Integration, Continuous Deoplyment und Release on demand.

Wenn Sie Continuous-Delivery-Pipelinephasen verwenden, sollten Sie diese in separate Aufträge unterteilen, bei denen es sich um Ausführungseinheiten innerhalb einer Phase handelt:

  • Build-Jobs: Kompilieren Sie Ihr Projekt im Build-Job, um sich auf die Bereitstellung vorzubereiten, wobei Sie Artefakte generieren, die Sie an ein Build-Archivverzeichnis senden können.

  • Deploy-Jobs: Laden Sie Ihr Projekt als App in Ihre Continuous-Delivery-Pipeline hoch, auf die Sie über eine URL zugreifen können. Nachdem Sie Ihr Projekt bereitgestellt haben, sehen Sie es auf Ihrem Dashboard.

  • Testjobs: Passen Sie Test-Jobs an und fügen Sie sie basierend auf Ihrer Suite von Unit-Tests oder funktionalen Tests mit Test-Services von anderen Anbietern vor oder nach Ihren Build- und Deployment-Jobs ein.

Die Continuous-Delivery-Pipeline kann Entwicklungsteams helfen:

  • Automatisieren Sie Builds, Komponententests und Deployment

  • Codes zu bearbeiten und mit Push-Operation zu übertragen und zwar mit Git-Repositorys, Issue Tracking und Ihrer webbasierten IDE (integrierten Entwicklungsumgebung)

  • Eine integrierte DevOps-Toolbox zu erstellen, um Ihre Apps mit Ihren Services, Open-Source-Tools und Tools von anderen Anbietern zu erstellen, bereitzustellen und zu verwalten

  • Ihren Code von jedem beliebigen Ort aus zu bearbeiten, an dem Sie Ihre IDE zum Erstellen, Bearbeiten, Ausführen, Debuggen und Abschließen von Versionskontrollaufgaben verwenden.

  • Ihre automatisierte Pipeline zu nutzen, um Builds, Tests und Bereitstellungen kontinuierlich und wiederholbar bereitzustellen

  • Verbessern Sie die Qualität, indem Sie Aufschluss über den Build-Status, die Ergebnisse von Sicherheitsscans, die Codeabdeckung und die Testabdeckung erhalten. So können Sie beurteilen, ob Ihre Anwendung in die nächste Umgebung übertragen werden soll (durch Policy-Gates, die die Qualität vor der Übertragung automatisch sicherstellen).
Continuous Deployment vs. Continuous Delivery

Continuous Deployment kann Teil einer Continuous-Delivery-Pipeline sein. Bei Continuous Delivery handelt es sich um das automatisierte Verschieben von Code durch den Entwicklungszyklus (manchmal auch Deliveryzyklus genannt). Continuous Deployment bezeichnet das automatisierte Verschieben dieses Codes in die Produktion, sobald er die erforderlichen automatisierten Tests bestanden hat.

Ob Sie Continuous Deployment in Ihre Deployment Pipeline aufnehmen, hängt von Ihren Geschäftsanforderung ab. Wenn es gemäß den Geschäftsanforderungen erforderlich ist, dass das Bereitstellungsteam neue oder aktualisierte Software wiederholt, zuverlässig oder so schnell wie möglich für die Produktion freigibt, oder wenn die Lösung mehrere Abhängigkeiten hat, dann werden Sie sehr wahrscheinlich von einer kontinuierlichen Bereitstellung profitieren.

Weitere Informationen zu den Unterschieden zwischen Continuous Deployment und Continuous Delivery finden Sie in diesem Video:

Continuous Delivery Tools

Mit einem Continuous-Delivery-Tool können Sie Open-Source-Tools für die Entwicklung, Bereitstellung und Verwaltung Ihrer Anwendungen verwenden. Durch die Integration von Toolsets können Sie wiederholbare und einfach zu verwaltende Aufgaben erstellen – nicht nur für Ihr Entwicklungsteam, sondern auch für Ihr Betriebsteam.

Ihre Toolbox kann Ihre aktuellen Cloud-Services, Open-Source-Tools und Tools von anderen Anbietern enthalten. Sie sollten aber auch ein Continuous-Delivery-Tool in Betracht ziehen, das Folgendes umfasst:

  • Wiederholt anwendbare Vorlagen für die Automatisierung von Builds und Bereitstellungen. Was für eine Ihrer Apps funktioniert, sollte auch für andere funktionieren. Lassen Sie nicht zu, dass jedes Team für sich selbst mit der Konfiguration zu kämpfen hat.

  • Eine Pipeline, mit der Sie automatisch Builds beim Übernehmen von Änderungen erstellen, Deployments in Ihrer Cloud vornehmen, Builds und Deployments in Ihre Toolchains integrieren und Deployments in Ihrer Toolchain verwalten können.

  • Tools für elektronisches Teamwork, Planung, Quellcodeverwaltung und Tests.

  • Instrumentierung, die aufzeigt, wo Ihr Team rasch vorankommt und wo die Dinge ins Stocken geraten. Dies kann als Leitfaden, um „kontinuierlicher“ zu werden, dienen.

Jenkins, Concourse CI, Spinnaker, Travis CI, GoCD und GitLab CI sind Open Source Continuous Delivery Tools, die Sie einsetzen können, wenn Sie eine starke Continuous Delivery Pipeline benötigen.

Agile und DevOps

Agile kontinuierliche Bereitstellung (Continuous Delivery)

Bisher haben Sie Software nur einmal freigegeben und sie dann aktualisiert. In diesem Fall werden Kunden nur am Anfang und am Ende befragt, um zu sehen, ob die Software seinen Bedürfnissen entspricht.

Agile ist eine Methode dafür, Software einem Continuous-Delivery-Zeitplan folgend in kurzen Iterationen zu produzieren. Mit dem modernen agilen Continuous-Delivery-Prozess können Sie Code für den Kunden freigeben, sobald die jeweiligen Funktionen verfügbar werden. Agile Entwicklung und Continuous Delivery sind der Schlüssel dazu, dass Funktionen dem Kunden zur Verfügung stehen, sobald sie produktionsreif sind. Das Ziel ist es, dass jede Funktion veröffentlicht werden kann, sobald sie die Pipeline verlässt.

Erfahren Sie mehr über die Vorteile agiler Prinzipien.

DevOps und Continuous Delivery

In den letzten Jahrzehnten hat sich die Softwareentwicklung erheblich verändert, da man vom standardmäßigen Wasserfallansatz zur effizienteren agilen Methodik übergegangen ist. Um sich diesem Trend anzupassen, sollten Sie zu einem Ansatz wechseln, der sich auf Agile, DevOps und Continuous Delivery konzentriert. Als Teil einer Continuous-Delivery-Pipeline ermöglichen diese zielgerichteten Prozesse zuverlässigere, qualitativ hochwertige Software-Releases und Updates.

Wenn Sie durch agile Entwicklung schnellere, kleinere Software-Releases erstellen, können Sie sich stärker auf die einzelnen Phasen der Softwareentwicklung konzentrieren. Gleichzeitig konzentriert sich DevOps auf das Gesamtbild und den kulturellen Wandel, da Entwicklung und Betrieb eng zu einem Team verschmelzen, das den gesamten Lebenszyklus der Softwareentwicklung von der Codierung über das Testen und die Bereitstellung bis hin zum Support betreut.

Um einen genaueren Blick auf den DevOps-Prozess zu werfen, sehen Sie sich das folgende Video an:

Weiterführende Lösungen
IBM Cloud® Continuous Delivery

IBM Continuous Delivery ist ein Cloud-Service, der Toolchains bereitstellt, Builds und Tests automatisiert und die Qualität anhand von Analysen kontrolliert.

IBM Cloud Continuous Delivery kennenlernen
IBM UrbanCode

Die Produkte aus der Reihe IBM UrbanCode helfen Ihnen dabei, Software schneller auf den Markt zu bringen, indem sie die Anwendungsbereitstellung beschleunigen und manuelle Prozesse reduzieren.

Mehr zu IBM UrbanCode
Tekton auf IBM Cloud

Erstellen Sie Kubernetes-native CI/CD-Pipelines mit maximaler Geschwindigkeit und Flexibilität.

Tekton auf IBM Cloud kennenlernen
Ressourcen Was ist DevOps?

DevOps beschleunigt die Bereitstellung qualitativ hochwertigerer Software, indem es die Arbeit von Softwareentwicklungs- und IT-Teams kombiniert und automatisiert.

Was ist Continuous Integration?

Continuous Integration ist ein iterativer Entwicklungsprozess, bei dem Entwickler mindestens einmal täglich neuen Code in die Codebasis integrieren.

Was sind CI/CD und die CI/CD-Pipeline?

Ein praktischer Leitfaden für die CI/CD (Continuous Integration/Continuous Delivery)-Pipeline.

Gehen Sie den nächsten Schritt

Sind Sie bereit für DevOps? Um Software und Services mit der vom Markt geforderten Geschwindigkeit bereitzustellen, müssen Teams schnell iterieren und experimentieren sowie häufig neue Versionen bereitstellen, die auf Feedback und Daten basieren. Die erfolgreichsten Cloud-Entwicklungsteams setzen auf moderne DevOps-Kultur und -Praktiken sowie cloud-native Architekturen und stellen Toolchains aus erstklassigen Tools zusammen, um ihre Produktivität zu steigern.

Finden Sie Ihre DevOps-Lösung