Verwenden von Continuous Delivery, um Software schneller und mit geringeren Kosten und Risiken zu veröffentlichen

Abgeschlossen

Continuous Delivery ist eine der acht Funktionen in der DevOps-Taxonomie.

Gründe für die Notwendigkeit von Continuous Delivery

Im Jahr 2012 führte ein Softwarebereitstellungsfehler bei der Knight Capital Group, dem damals größten Händler von US-Aktien, zu einem Verlust von 460 Millionen US-Dollar.

Die Verluste begannen bei Markt-/Börsenöffnung. Der Code enthielt keine Fehler. Das Problem wurde durch einen Fehler verursacht, der bei einer manuellen Bereitstellung auf nur einem der acht Produktionsserver gemacht wurde.

Der Versuch, den Fehler zu beheben, führte schließlich dazu, dass alle acht Server falsch konfiguriert wurden, und so verlor das Unternehmen noch mehr Geld. Da die gesamte Bereitstellung manuell erfolgte, gab es keine Möglichkeit, die Änderungen automatisch zurückzusetzen.

Nachdem sie 45 Minuten lang versucht hatten, das Problem zu beheben, fuhren sie schließlich das gesamte System herunter. In dieser Zeit hatten sie 460 Millionen US-Dollar verloren.

Dies ist eine wahre Geschichte. Welche Auswirkungen hätte das in Ihrer Organisation? Führen Sie manuelle Bereitstellungen durch?

Die vielleicht wichtigste Frage, die man stellen sollte, um die Bereitstellungsleistung in einer Organisation zu verstehen, lautet wie folgt:

Wichtig

Wie groß ist Ihr Leidensdruck bei der Bereitstellung in der Produktionsumgebung?

Die Ängste und Sorgen, die Entwickler und technische Mitarbeiter empfinden, wenn sie Code in die Produktionsumgebung übertragen, können uns viel über die Softwarebereitstellungsleistung eines Teams verraten.

Was ist Continuous Delivery?

Wichtig

Continuous Delivery ist ein Softwareentwicklungsansatz, bei dem Teams Software in kurzen Zyklen entwickeln, um Folgendes sicherzustellen:

  • Die Software kann jederzeit veröffentlicht werden.
  • Die Software kann manuell veröffentlicht werden.

Continuous Delivery dient den folgenden Zwecken:

  • Schnelleres und häufigeres Entwickeln, Testen und Veröffentlichen von Software
  • Reduzieren der Kosten, des Zeitaufwands und des Risikos der Übermittlung von Änderungen durch mehr inkrementelle Updates von Anwendungen in der Produktionsumgebung

Continuous Delivery erfolgt in folgenden Fällen:

  • Software kann während des gesamten Lebenszyklus bereitgestellt werden.
  • Continuous Integration und eine umfassende Automatisierung sind in allen möglichen Phasen des Übermittlungsprozesses verfügbar, in der Regel über eine Bereitstellungspipeline.
  • Es ist möglich, bei Bedarf jede Version der Software mit einem einzigen Tastendruck in jeder beliebigen Umgebung bereitzustellen.

Im Diagramm ist der Unterschied zwischen Continuous Delivery und Continuous Deployment dargestellt. Die Phasen sind in beiden Fällen identisch: Code fertig – Komponententests – Integration – Akzeptanztest – Bereitstellung in der Produktionsumgebung. Bei Continuous Delivery erfolgt die Bereitstellung in der Produktionsumgebung manuell. Bei Continuous Deployment erfolgt sie automatisch.

Bei umfangreichen manuellen Bereitstellungen besteht ein hohes Risiko, weil die Komplexität der zu veröffentlichenden Software drastisch zunimmt, die Wahrscheinlichkeit menschlicher Fehler steigt und es schwieriger wird, Fehler bei der Bereitstellung zu identifizieren und zu beheben. Die Bereitstellungshäufigkeit ist gering, die Vorlaufzeit für Änderungen ist hoch, die durchschnittliche Wiederherstellungsdauer ist lang, und die Fehlerrate bei Änderungen ist hoch.

Ein bestimmtes Betriebsteam führt die manuelle Bereitstellung außerhalb der Geschäftszeiten durch. Sie benötigen ein Dokument mit den manuellen Schritten und Zeit, um die dokumentierten Schritte manuell zu testen. Die Durchführung umfangreicher Bereitstellungen dauert auch länger, es ist schwieriger, ein Rollback auszuführen, wenn die Bereitstellung fehlgeschlagen ist, und es sind umfassendere Tests nach der Bereitstellung erforderlich. Die Anzahl der Änderungen pro Bereitstellung ist größer, und die Implementierung von Feedback erfordert mehr Zeit.

Durch die Automatisierung des Prozesses und die Möglichkeit, Software jederzeit für die Produktionsumgebung freizugeben, sind die Vorteile von Continuous Delivery erheblich und zahlreich:

  • Weniger Verschwendung
  • Schnellere Rendite
  • Geringeres Risiko
  • Höhere Qualität
  • Frühes Feedback
  • Bessere Planung
  • Schnellere Zusammenarbeit
  • Alle sind beteiligt
  • Weniger Produktionsprobleme
  • Shift-Left-Ansatz für die Sicherheit
  • Schnellere Anpassung und höhere Reaktionsfähigkeit
  • Viel besser vorhersagbare Veröffentlichungen
  • Bereitstellung während der Geschäftszeiten
  • Schnellere Reaktion auf Marktänderungen
  • Übermittlung von Änderungen ohne beträchtliche Verzögerung
  • Alle Teammitglieder können Bereitstellungen initiieren
  • Schnelle, wiederholbare und konfigurierbare Bereitstellungen

Diagramm des Continuous Delivery-Kreislaufs. Der Kreislauf geht von der Planung und Nachverfolgung über die Entwicklung, die Erstellung und das Testen, die Bereitstellung, den Betrieb, die Überwachung und das Lernen und zurück zur Planung.

Laut dem State of DevOps Report 2019 verzeichnen leistungsstarke DevOps-Organisationen im Vergleich zu leistungsschwachen Organisationen Folgendes:

  • Mehr als 200-mal häufigere Bereitstellungen
  • Mehr als 100-mal kürzere Vorlaufzeiten für Änderungen
  • Mehr als 2600-mal kürzere durchschnittliche Wiederherstellungszeit
  • Siebenmal niedrigere Fehlerrate bei Änderungen

Laut einer globalen Studie von CA Technologies erzielen Organisationen darüber hinaus eine bis zu 20-prozentige Verbesserung der Markteinführungszeit und eine Umsatzsteigerung.

Diagramm mit den Vorteilen, von denen leistungsstarke DevOps-Organisationen dank Continuous Delivery im Vergleich zu leistungsschwachen Organisationen profitieren

Hinweis

Continuous Delivery wird manchmal mit Continuous Deployment verwechselt. Continuous Deployment bedeutet, dass jede Änderung die Pipeline durchläuft und automatisch in die Produktionsumgebung implementiert wird, was zu vielen Produktionsbereitstellungen pro Tag führt. Continuous Delivery bedeutet lediglich, dass Sie häufige Bereitstellungen durchführen können, aber möglicherweise davon absehen, weil Unternehmen in der Regel eine langsamere Bereitstellungsrate bevorzugen. Die Durchführung von Continuous Delivery ist die Voraussetzung dafür, Continuous Deployment durchführen zu können.

Continuous Integration ist eine Voraussetzung für Continuous Delivery. Mithilfe bewährter Methoden können Sie die Anwendung jederzeit und mit hoher Qualität über die Quellcodeverwaltung erstellen und (zuverlässig) bereitstellen.

Diagramm, in dem die Beziehung zwischen Continuous Integration, Continuous Delivery und Continuous Deployment dargestellt ist