Was ist kontinuierliche Bereitstellung?

28. August 2024

Autoren

Ian Smalley

Senior Editorial Strategist

Was ist kontinuierliche Bereitstellung?

Die kontinuierliche Bereitstellung ist eine Strategie in der Softwareentwicklung, bei der Codeänderungen an einer Anwendung automatisch in die Produktionsumgebung eingespielt werden.

Eine Reihe vordefinierter Tests treibt die Automatisierung voran. Sobald neue Updates diese Tests bestehen, verteilt das System die Updates direkt an die Benutzer der Software.

Continuous Deployment bietet mehrere Nutzen für Unternehmen, die ihre Anwendungen und ihr Portfolio skalieren möchten. Vor allem beschleunigt es die Markteinführungszeit, indem es die Verzögerung zwischen Codierung und Kundennutzen beseitigt – in der Regel Tage, Wochen oder sogar Monate.

Um dies zu erreichen, müssen Regressionstests automatisiert werden, wodurch teure manuelle Regressionstests eliminiert werden. Die Systeme, die Unternehmen zur Verwaltung großer Pakete an Produktionsänderungen einrichten, einschließlich Release-Planung und Genehmigungs-Meetings, können bei den meisten Änderungen ebenfalls abgeschafft werden.

Luftaufnahme einer Autobahn

Bleiben Sie in der Cloud

Abonnieren Sie den wöchentlichen Think-Newsletter und erhalten Sie Tipps von Experten zur Optimierung von Multi-Cloud-Einstellungen in Zeiten von KI.

Nutzen der kontinuierlichen Bereitstellung

Kontinuierliche Bereitstellung bietet Unternehmen zahlreiche Vorteile, darunter die folgenden:

  • Qualitätsverbesserung
  • Kürzere Entwicklungszeit
  • Verbesserte Customer Experience
  • Reduzierte Kosten
  • Bessere Teamzusammenarbeit
  • Beschleunigte Feedbackschleife
Qualitätsverbesserung

Automatisierte Tests – die entscheidende Abhängigkeit für die kontinuierliche Bereitstellung – finden in jeder Phase des Lebenszyklus der Bereitstellungspipeline statt. Diese Funktion verbessert die Gesamtqualität der Erfahrung. So können automatisierte Tests beispielsweise Fehler beheben, bevor sie die Produktion erreichen.

Kürzere Entwicklungszeit

Continuous Deployment hilft bei der schnellen Bereitstellung von Updates und Softwareversionen. Sobald neue Updates vordefinierte Tests durchlaufen haben, werden sie vom System automatisch an die Endbenutzer der Software weitergeleitet. 

Verbesserte Customer Experience

Automatisierte Tests ermöglichen es Entwicklungsteams, schnell und konsistent neue Funktionen und Verbesserungen bereitzustellen, um die Erfahrung zu verbessern.

Reduzierte Kosten

Die Automatisierung der Bereitstellung beseitigt Engpässe und reduziert manuelle Aufgaben. Dieser Prozess hilft Unternehmen, Kosten zu sparen, indem er Ausfallzeit reduziert.

Bessere Teamzusammenarbeit

Durch die kontinuierliche Bereitstellung haben Entwickler mehr Zeit, sich auf das Schreiben von Code und Durchführen von Tests zu konzentrieren, anstatt auf manuelle Bereitstellungsverfahren. Darüber hinaus unterstützt es die Zusammenarbeit und Kommunikation im Team, indem es eine Einzelansicht aller Anwendungen und Umgebungen bereitstellt.

Beschleunigte Feedbackschleife

Continuous Deployment beschleunigt die Feedbackschleife, indem es Entwicklern ermöglicht, Codeänderungen häufig freizugeben. Diese Funktion verkürzt die Zeit, die benötigt wird, um Feedback von Benutzern und Stakeholdern zu erhalten. 

Continuous Deployment vs. Continuous Delivery

Auch wenn „Continuous Deployment“ und „Continuous Delivery“ gleich klingen mögen, handelt es sich um zwei unterschiedliche Ansätze für häufige Veröffentlichungen.

Continuous Delivery ist eine Softwareentwicklungspraxis, bei der Entwickler Software erstellen, um sie jederzeit in die Produktion freizugeben. Um dies zu erreichen, umfasst ein konstantes Bereitstellungsmodell produktionsähnliche Testumgebungen.

Neue Builds, die in einer Continuous-Delivery-Lösung durchgeführt werden, werden automatisch in einer automatischen Qualitätssicherungs-Testumgebung bereitgestellt, die auf eine Vielzahl von Fehlern und Inkonsistenzen prüft. Nachdem der Code alle Tests bestanden hat, erfordert Continuous Delivery ein menschliches Eingreifen, um Bereitstellungen in der Produktion zu genehmigen. Die Bereitstellung selbst wird dann von der Automatisierung durchgeführt.

Die kontinuierliche Bereitstellung geht noch einen Schritt weiter und macht manuelle Eingriffe überflüssig. Die automatisierten Tests und Entwickler gelten als vertrauenswürdig genug, dass sie keine Genehmigung für die Produktionsfreigabe benötigen. Wenn die Tests erfolgreich sind, gilt der neue Code als genehmigt und die Bereitstellung in der Produktion erfolgt automatisch.

Kontinuierliche Bereitstellung ist das natürliche Ergebnis einer gut durchgeführten kontinuierlichen Bereitstellung. Letztendlich bringt eine manuelle Genehmigung wenig oder gar keinen Mehrwert und verlangsamt die Dinge lediglich. An diesem Punkt wird sie abgeschafft und aus Continuous Delivery wird Continuous Deployment.

Schauen Sie sich dieses Video an, in dem Eric Minick von IBM Cloud den Unterschied zwischen Continuous Deployment und Continuous Delivery erklärt.

Kontinuierliche Bereitstellung vs. kontinuierliche Integration

Ein weiteres Schlüsselelement zur Gewährleistung einer nahtlosen, kontinuierlichen Bereitstellung ist die kontinuierliche Integration (CI), der Softwareentwicklungsprozess, bei dem Entwickler während des gesamten Entwicklungszyklus neuen Code in die Codebasis integrieren.

Damit die Automatisierung der Bereitstellungsprozesse funktioniert, benötigen alle Entwickler, die an einem Projekt arbeiten, eine effiziente Art, die stattfindenden Änderungen zu kommunizieren. Kontinuierliche Integration macht das möglich.

Wenn Entwickler an demselben Softwareentwicklungsprojekt arbeiten, arbeiten sie in der Regel mit einzelnen Kopien eines Hauptzweigs des Codes. Funktionsprobleme und Fehler können jedoch auftreten, nachdem Entwickler ihre Änderungen in die Hauptcodebasis integriert haben, insbesondere wenn Entwickler unabhängig voneinander arbeiten. Je länger sie unabhängig voneinander arbeiten, desto höher ist das Risiko.

Mit CI führt jeder seine Codeänderungen mindestens einmal pro Tag in einem Repository zusammen. Bei Aktualisierungen werden automatisierte Build-Tests ausgeführt, um sicherzustellen, dass alle Änderungen mit dem Hauptzweig kompatibel bleiben. Dieser Prozess ist eine ausfallsichere Methode, um Integration Probleme so schnell wie möglich zu erkennen.

Unit-Tests validieren beispielsweise einzelne Komponenten oder Funktionen und liefern sofortiges Feedback zum Codeverhalten. Integrationstests bewerten die Interaktionen zwischen Softwarekomponenten und -modulen, um sicherzustellen, dass sie korrekt zusammenarbeiten, und um Fehler aufzudecken, die in Unit-Tests möglicherweise übersehen wurden.

IBM DevOps

Was ist DevOps?

Andrea Crawford erklärt, was DevOps ist, welchen Wert DevOps hat und wie DevOps-Praktiken und -Tools Ihnen dabei helfen, Ihre Anwendungen durch die gesamte Delivery Pipeline der Softwareentwicklung von der Idee bis zur Produktion zu bringen. Das von führenden IBM Experten geleitete Programm soll Führungskräften das nötige Wissen vermitteln, um Prioritäten für KI-Investitionen zu setzen, die zu mehr Wachstum führen.

Was ist die CI/CD-Pipeline?

Die Integration/Continuous Delivery (CI/CD)-Pipeline ist ein flexibler DevOps-Workflow, der sich auf einen häufigen und zuverlässigen Softwarebereitstellungsprozess konzentriert. Die Methodik ist iterativ und nicht linear, was es DevOps-Teams ermöglicht, Code zu schreiben, zu integrieren, Tests durchzuführen, Releases bereitzustellen und Änderungen an der Software gemeinsam und in Echtzeit bereitzustellen.

Das „CD“ in CI/CD kann verwirrend sein, da es auch für die kontinuierliche Bereitstellung verwendet wird, wenn Möglichkeiten zur weiteren Automatisierung in der Pipeline beschrieben werden.

Tools und Funktionen für die kontinuierliche Bereitstellung

Die Entwickler müssen die geeigneten Tools verwenden, um kontinuierlich hochwertige Softwareverbesserungen zu entwickeln und einzusetzen. Dieser Prozess sorgt für effektive DevOps-Praktiken, indem er eine effiziente Kommunikation zwischen Entwicklungs- und Betriebsabteilungen sicherstellt. Es minimiert oder eliminiert auch Fehler in der delivery pipeline.

Hier sind einige der wichtigsten Tools und Funktionen, die in einem kontinuierlichen Deployment-Workflow verwendet werden.

Versionssteuerung

Die Versionskontrolle hilft bei der kontinuierlichen Integration, indem sie Revisionen an den Assets eines bestimmten Projekts verfolgt. Die Versionskontrolle, die auch als „Revision“ oder „Quellkontrolle“ bezeichnet wird, trägt dazu bei, die Sichtbarkeit der Aktualisierungen und Änderungen eines Projekts zu verbessern, und unterstützt die Teams bei der Zusammenarbeit, unabhängig davon, wo und wann sie arbeiten. Beliebte Versionskontrollsysteme (VCS) sind Git, Bitbucket und AWS CodeCommit.

Code-Überprüfung

„Code-Review“ ist Prozess, bei dem Tools verwendet werden, um den aktuellen Quellcode zu testen. Code-Reviews tragen zur Verbesserung der Integrität der Software bei, indem sie Fehler und Fehler in der Codierung finden und den Entwicklern helfen, diese Probleme zu lösen, bevor sie Updates bereitstellen.

Kontinuierliche Integration (CI)

CI ist eine kritische Komponente der kontinuierlichen Bereitstellung und spielt eine wichtige Rolle bei der Minimierung von Entwicklungshemmnissen, wenn mehrere Entwickler an demselben Projekt arbeiten. Es gibt eine Vielzahl proprietärer und Open-Source-Tools für CI, die jeweils der individuellen Komplexität von Unternehmenssoftware-Bereitstellungen gerecht werden.

Konfigurationsmanagement

Konfigurationsmanagement ist die Strategie und Disziplin, um sicherzustellen, dass die gesamte Software und Hardware in einem konsistenten Zustand bleibt. Diese Strategie beinhaltet die korrekte Konfiguration und Automatisierung aller Server, Speicher, Netzwerke und Software.

Release-Automatisierung

Die Automatisierung von Anwendungsreleases (oder die Orchestrierung von Anwendungsreleases) ist kritisch, wenn es darum geht, alle Aktivitäten zu automatisieren, die für die kontinuierliche Bereitstellung erforderlich sind. Orchestrierungstools verbinden Prozesse, um sicherzustellen, dass die Entwickler alle wichtigen Schritte befolgen, bevor sie neue Änderungen in die Produktion übertragen. Diese Tools sind in die Konfigurationsmanagementprozesse integriert, um eine ordnungsgemäße Bereitstellung und ein Höchstmaß an Leistung in allen Projektumgebungen zu gewährleisten.

Infrastrukturüberwachung

Bei einem Continuous-Deployment-Modell ist es wichtig, die Daten visualisieren zu können, die sich in Ihren Testumgebungen oder Staging-Umgebungen befinden. IT-Infrastruktur Überwachungstools helfen Ihnen dabei, die Anwendungsleistung zu analysieren, um festzustellen, ob Änderungen, die Sie vornehmen, positive oder negative Auswirkungen haben.

Rollbacks

Manchmal verhält sich eine neue Softwarebereitstellung in einer Umgebung ungewöhnlich und erfordert ein Rollback auf die vorherige Version. Die kontinuierliche Bereitstellung erfordert starke Rollback-Funktionen. Unternehmen können Blue-Green-Bereitstellungsstrategien verwenden, bei denen zwei separate, aber identische Umgebungen geschaffen werden, um verschiedene Versionen einer Anwendung auszuführen, mit dem Ziel, die Ausfallzeit zu minimieren und Rollbacks zu ermöglichen. Andere Rollback-Strategien umfassen rollierende und Canary-Bereitstellungen.

Metriken

DevOps-Teams verwenden Metriken, um ihre Prozesse in kontinuierlichen Bereitstellungszyklen zu verfeinern. Eine Kennzahl für die Deployment Frequency (Bereitstellungshäufigkeit, DF) misst beispielsweise die Häufigkeit von Codeänderungen in einer Produktionseinsatzumgebung. Anhand dieser Kennzahl beurteilen Entwickler wie schnell sie neue Funktionen an Endbenutzer liefern können.

Kontinuierliche Bereitstellung und Kubernetes

Kubernetes ist eine Open-Source-Plattform für die Container-Orchestrierung, die Entwicklung einer kontinuierlichen Entwicklungspipeline erheblich verbessern kann. Aufgrund seiner flexiblen, logischen und intuitiven Benutzeroberfläche lassen sich mit Kubernetes häufige Probleme reduzieren, die bei Einschränkungen und Ausfällen der Servernutzung auftreten, und unterstützt gleichzeitig moderne Infrastrukturen und Multi-Cloud-Bereitstellungen.

Durch die Automatisierung der Bereitstellung, Skalierung und des Betriebs von containerisierten Anwendungen trägt Kubernetes dazu bei, die Agilität von DevOps-Prozessen zu erhöhen. Aufgrund seines modularen Designs ermöglicht Kubernetes die Änderung einzelner Pods innerhalb eines Services sowie nahtlose Übergänge zwischen Pods. Diese Flexibilität hilft Entwicklungsteams, Ausfallzeit zu vermeiden, und ermöglicht eine maximale Ressourcennutzung bei der Ausführung von Microservice.

Kubernetes ist zudem eine äußerst zuverlässige Plattform, die Bereitschaft und den Gesamtzustand von Anwendungen und Services erkennen kann, bevor die Bereitstellung erfolgt.

Plattformen für den kontinuierlichen Einsatz

Continuous Deployment und verwandte CI/CD-Plattformen bieten Unternehmen modernste Lösungen zur Automatisierung von Softwaretests und -bereitstellungsprozessen. Viele dieser Plattformen sind mit Technologien der künstlichen Intelligenz (KI) und des maschinellen Lernens (ML) ausgestattet, die die Lebenszyklen der Softwareentwicklung und -bereitstellung verändert haben. So analysieren beispielsweise KI-gestützte Tools zur Leistungsvorhersage Metriken, um die Bereitstellung schneller, effizienter und weniger fehleranfällig zu machen.

Dies sind Beispiele für einige der besten Softwareplattformen, Dienste und Tools für die kontinuierliche Bereitstellung und Automatisierung von CI/CD-Pipelines:

  • AWS CodeDeploy von Amazon
  • IBM DevOps Accelerate (ehemals IBM UrbanCode Deploy)
  • Azure DevOps
  • GitHub-Aktionen
  • GitLab CI/CD
  • Jenkins
  • CircleCi

Diese Plattformen und Tools unterstützen die folgenden Funktionen.

Multicloud-Bereitstellungen

Viele Plattformen zur Bereitstellungsautomatisierung enthalten Blueprint-Komponenten, mit denen Entwickler benutzerdefinierte Cloud-Umgebungsmodelle erstellen können. Diese Modelle ermöglichen DevOps-Teams, die Anwendungsbereitstellung in öffentlichenprivatenHybrid-Cloud- oder Multicloud-Umgebungen zu visualisieren. Mithilfe von Blueprint können Benutzer Full Stack Computing-Umgebungen erstellen, aktualisieren und aufteilen, während sie gleichzeitig vollständige Cloud-Orchestrierung Funktionen aktivieren. Entwickler können dann alle Umgebungen bereitstellen, um Anwendungskomponenten automatisch oder auf Abruf bereitzustellen.

Verteilte Automatisierung

Plattformen zur Automatisierung der Bereitstellung bieten eine hohe Skalierbarkeit und unterstützen die dynamische Bereitstellung geschäftskritischer Anwendungen und Services.

Qualitätskontrollen und Genehmigungen

Sich auf die Genauigkeit automatisierter Testumgebungen verlassen zu können, ist für den erfolgreichen Continuous Deployment von entscheidender Bedeutung. In einigen Umgebungen ist es jedoch erforderlich, Bedingungen zu schaffen, die manuelle Genehmigungen kennzeichnen, um sicherzustellen, dass die richtigen Informationen zur richtigen Zeit in die Produktion weitergeleitet werden. Plattformen zur Automatisierung der Bereitstellung bieten Bereitstellungsgenehmigungen und -gates, um Administratoren mehr Kontrolle, Transparenz und Auditing-Funktionen für ihre Continuous-Deployment-Prozesse zu bieten.

Getestete Integrationen

Plattformen zur Automatisierung der Bereitstellung unterstützen zwar die Verwendung eigener Skripts, bieten aber auch sofort einsatzbereite Plug-ins, um Bereitstellungsprozesse einfacher zu entwerfen und zu verwalten. Durch die Verwendung getesteter Integrationen können Entwickler vorgefertigte, bewährte Automatisierungen nutzen.

Weiterführende Lösungen
IBM DevOps Accelerate

Automatisieren Sie die Software-Bereitstellung für jede Anwendung On-Premises, in der Cloud oder auf dem Mainframe.

DevOps Accelerate erkunden
DevOps-Lösungen

Verwenden Sie DevOps-Software und -Tools, um cloudnative Anwendungen für mehrere Geräte und Umgebungen zu erstellen, bereitzustellen und zu verwalten.

DevOps-Lösungen erkunden
Cloud-Beratungsleistungen 

Schalten Sie mit IBM Cloud Consulting Services neue Funktionen frei und steigern Sie die geschäftliche Agilität. Entdecken Sie, wie Sie mit Hybrid-Cloud-Strategien und Expertenpartnerschaften gemeinsam Lösungen entwickeln, die digitale Transformation beschleunigen und die Leistung optimieren können.

Cloud-Services
Machen Sie den nächsten Schritt

Erschließen Sie das Potenzial von DevOps, um sichere cloudnative Anwendungen mit kontinuierlicher Integration und Bereitstellung zu entwickeln, zu testen und bereitzustellen.

DevOps-Lösungen erkunden DevOps in Aktion entdecken