Blau-grüne Bereitstellung

Die blau-grüne Bereitstellung ist eine Softwareentwicklungstechnik, die zwei Produktionsumgebungen (blau & grün) nutzt, um die Software-Bereitstellung einfacher und sicherer zu machen.

Was ist blau-grüne Bereitstellung?

Die blau-grüne Bereitstellung ist eine Softwareentwicklungstechnik, die zwei Produktionsumgebungen (eine „blaue Umgebung” und eine „grüne Umgebung”) nutzt, um den Softwarebereitstellungsprozess sicherer zu gestalten. Es handelt sich um eine relativ komplexe Bereitstellungsstrategie, die jedoch Ausfallzeiten beim Aktualisieren Ihrer Anwendung in der Produktion effektiv minimiert. Sie ist auch sehr nützlich für Produktexperimentierung

Die beiden Produktionsumgebungen werden so identisch wie möglich gehalten. Die neu bereitgestellten Code-Änderungen werden in die aktuell inaktive Umgebung übertragen. Sobald die neuen Änderungen in der Produktion getestet wurden, wechselt ein Router, um auf die Umgebung zu zeigen, in der die neuen Änderungen live sind, was einen reibungslosen Übergang ermöglicht.

Eine blau-grüne Bereitstellungsstrategie ermöglicht es Ihnen, Ihre Anwendung in der Produktion mit minimalen Ausfallzeiten zu aktualisieren. Sie funktioniert, indem zwei identische Kopien Ihrer Anwendung bereitgestellt werden, eine „blaue” und eine „grüne”. Die blaue Kopie ist die aktuelle Produktionsversion Ihrer Anwendung, und die grüne ist die neue Version, die Sie bereitstellen möchten. Sie weisen einigen Ihrer Server die neue Version der Anwendung und den verbleibenden Servern die vorherige Version zu.

Sobald die grüne Kopie bereitgestellt und getestet wurde, können Sie den Datenverkehr schrittweise von Blau auf Grün umleiten. Beginnen Sie schrittweise, z. B. indem Sie 20 % des Datenverkehrs zur grünen Kopie routen, und erhöhen Sie dann den Prozentsatz im Laufe der Zeit. Dies ermöglicht es Ihnen, etwaige Probleme zu überwachen, bevor Sie den Wechsel vollziehen.

Bei einem Problem können Sie schnell zur blauen Kopie zurückwechseln, indem Sie den gesamten Datenverkehr wieder dorthin leiten. Deshalb wird die blau-grüne Bereitstellung als „Zero-Downtime”-Bereitstellungsstrategie bezeichnet. 

Mit der blau-grünen Bereitstellung erhalten Sie: 

  • Keine Ausfallzeiten: Der Wechsel von Blau auf Grün erfolgt sofort. Kunden erleben während der Bereitstellungsphase keine Ausfallzeiten, da beide Umgebungen aktiv und identisch sind.  
  • Rollback-Möglichkeit: Bei Problemen können Sie problemlos zur blauen Umgebung zurückwechseln. 
  • Risikominimierung: Durch eine vollständig getestete Umgebung (grün), bevor der Live-Datenverkehr dorthin geleitet wird, wird das Risiko, fehlerhafte Updates direkt im Live-System (blau) bereitzustellen, erheblich reduziert.  

Im Wesentlichen reduziert die blau-grüne Bereitstellung Ausfallzeiten und Risiken, die mit der Bereitstellung neuer Änderungen in einem Live-System verbunden sind, erheblich. 

Vorteile der blau-grünen Bereitstellung

Bild: Optimizely

Wie wird die blau-grüne Bereitstellung eingesetzt?

Die blau-grüne Bereitstellung ist eine komplexe Bereitstellungsstrategie. Haben Sie einen klar definierten Plan, da dies teurer sein kann als andere Bereitstellungsstrategien, wie z. B. A/B-Testing. 

  • Verwenden Sie skalierbare Infrastruktur. Dies hilft Ihnen, die Gesamtkosten zu senken. 
  • Üben Sie Chaos Engineering in einer grünen Umgebung. Dadurch können Sie die Zuverlässigkeit Ihrer Anwendung testen, ohne Ihre Endbenutzer zu beeinträchtigen. 
  • Verwalten Sie den Datenbankstatus sorgfältig. Dies ist eine der größten Herausforderungen der blau-grünen Bereitstellung. 
  • Ändern Sie Load Balancer, nicht DNS. Dies gibt Ihnen mehr Kontrolle über den Datenverkehrs-Routing-Prozess. 

Phasen eines blau-grünen Bereitstellungsmodells 

Hier sind die 9 Phasen eines blau-grünen Bereitstellungsmodells:

Phasen einer blau-grünen Bereitstellung

Bild: Optimizely

  1. Umgebungen einrichten
    Erstellen Sie identische blaue und grüne Umgebungen.
  2. Updates in Grün bereitstellen
    Implementieren Sie Änderungen in der grünen Umgebung.
  3. Testen und Validierung
    Führen Sie umfassende Tests in der grünen Umgebung durch.
  4. Überprüfung und Qualitätssicherung
    Überprüfen Sie Updates auf Leistung und Kompatibilität.
  5. Umschaltung
    Leiten Sie den Live-Datenverkehr schnell von Blau auf Grün um.
  6. Überwachung (nach der Bereitstellung)
    Überwachen Sie Grün kontinuierlich auf Probleme oder Anomalien.
  7. Rollback (falls erforderlich)
    Wechseln Sie bei Problemen schnell zurück zur stabilen blauen Umgebung.
  8. Grün zu Blau befördern
    Wenn stabil, machen Sie die grüne Umgebung zur neuen Live-Produktion (blau).
  9. Bereinigen und für den nächsten Zyklus vorbereiten
    Setzen Sie eine neue grüne Umgebung für zukünftige Updates zurück und bereiten Sie sie vor. 

Dieser optimierte Prozess gewährleistet einen reibungslosen Übergang zwischen Umgebungen und minimiert Ausfallzeiten und Risiken bei Updates oder Änderungen am Live-System. 

Anwendungsfälle für die blau-grüne Bereitstellung

Rollbacks

Einer der Hauptvorteile der blau-grünen Bereitstellung ist die Disaster Recovery. Da es zwei identische Produktionsumgebungen gibt, kann ein Router, wenn neue Änderungen in einer ausgerollt werden (z. B. die blaue Version) und Probleme festgestellt werden, einfach zur anderen Umgebung (grüne Version) zurückwechseln, die die alte Codeversion ohne Ausfallzeiten enthält. 

Kontinuierliche Integration/kontinuierliche Lieferung (CI/CD-Pipeline)

Eines der Ziele der kontinuierlichen Integration (einer DevOps-Technik) ist es, Software so schnell wie möglich live zu bringen und den Entwicklungsprozess durch automatisierte Tests und häufige Code-Integration zu beschleunigen. Die blau-grüne Bereitstellung ist eine Bereitstellungsstrategie, die bei diesem Ziel helfen kann, indem sie mehr Code-Pushes in die Produktion ermöglicht und gleichzeitig das Risiko neuer Releases senkt. 

Testen in der Produktion

Oft gibt es kleine Kompatibilitätsunterschiede zwischen der Staging-Umgebung und der Produktion, egal wie viel Aufwand betrieben wird, um sie identisch zu machen. Für DevOps-Teams kann dies zu Grenzfällen und Fehlern führen, die erst entdeckt werden können, wenn der Code in die Produktion übertragen wurde. Die blau-grüne Bereitstellung ermöglicht Tests in der Produktion durch das Übertragen neuen Codes in die tatsächliche Produktionsumgebung und die Beobachtung seiner Leistung, bevor er reibungslos in den Produktions-Traffic und echte Nutzer übergeht. 

Canary-Bereitstellung

Ein Canary-Release ist das Ausrollen neuer Änderungen an einem kleinen Segment Ihrer Nutzerbasis, anstatt es für alle auszurollen. Ähnlich wie ein Kanarienvogel in einem Kohlebergwerk kann dieser kleine kontrollierte Test verwendet werden, um festzustellen, ob in der neuen Version Ihres Codes schwerwiegende Fehler vorliegen. Die blau-grüne Bereitstellung kann für einen solchen Canary-Test verwendet werden, indem der Router einfach einen Prozentsatz des Datenverkehrs zur neuen Codeversion leitet, um zu sehen, wie er mit Live-Traffic funktioniert, bevor die Änderung auf 100 % der Nutzer ausgerollt wird. 

A/B-Testing

Ein weiterer möglicher Anwendungsfall für blau-grüne Bereitstellungen ist A/B-Testing. In diesem Anwendungsfall laden Sie die neue Version Ihres Codes in die blaue Umgebung und leiten 50 % des Benutzerverkehrs zur blauen Version im Vergleich zur ursprünglichen grünen Version. Dann können Sie überwachen, wie die beiden Umgebungen in Bezug auf Ihre Schlüsselkennzahlen abschneiden, und statistische Analysen verwenden, um den genauen Einfluss Ihrer neuen Anwendung zu bestimmen. 

Load Balancing

Ein weiterer möglicher Anwendungsfall für die blau-grüne Bereitstellung ist das Load Balancing. Wenn die blau-grüne Bereitstellung so eingerichtet ist, dass sich die beiden Produktionsumgebungen auf separaten Servern befinden (anstatt auf einer virtuellen Maschine), kann ein Router den Datenverkehr einfach zwischen den blauen und grünen Versionen der Produktionsumgebung ausgleichen, da sie funktional identisch sind.

Was sind die Vorteile der blau-grünen Bereitstellung? 

Hier sind einige der wichtigsten Vorteile dieser Bereitstellungsmethode: 

  • Keine Ausfallzeiten: Sie können Ihre Anwendung in der Produktion ohne Ausfallzeiten aktualisieren, da zwei identische Kopien laufen. Sie können den Datenverkehr von einer zur anderen umleiten.
  • Rollback: Wenn Sie Probleme mit der neuen Version Ihrer Anwendung haben, können Sie problemlos zur vorherigen Version zurückwechseln.
  • Reduziertes Risiko: Sie können die neue Version Ihrer Anwendung in der grünen Umgebung testen, bevor Sie sie in die Produktion übertragen.
  • Kontrollierte Bereitstellung: Behalten Sie die Kontrolle über den Bereitstellungsprozess. Entscheiden Sie, wie viel Datenverkehr zur grünen Umgebung geleitet werden soll, und überwachen Sie etwaige Probleme, bevor Sie den Wechsel vollziehen.
  • Skalierbarkeit: Die blau-grüne Bereitstellung kann einfach skaliert werden, um mehr Datenverkehr aufzunehmen, indem der grünen Umgebung weitere Server hinzugefügt werden. 

Beispiel für eine blau-grüne Bereitstellung

Angenommen, Ihr Entwicklungsteam arbeitet an einer Web-App und möchte ein neues Feature veröffentlichen, dabei aber Ausfallzeiten vermeiden und einen reibungslosen Übergang zum neuen Code gewährleisten. Zusätzlich zu Ihrer Staging-Umgebung würden Sie zwei identische Produktionsumgebungen einrichten (eine „blaue Version” und eine „grüne Version”) mit einem Router, der den Datenverkehr zur grünen Version leitet.

Dann können Sie die neuen Änderungen in die blaue Version der Produktionsumgebung übertragen und beobachten, wie sie in einer tatsächlichen Produktionsumgebung funktioniert. Es kann sich herausstellen, dass es Fehler gibt, die nur in Ihrer Produktionsumgebung auftreten. In diesem Fall können Sie problemlos zur Entwicklung zurückkehren, ohne Ihre Nutzer zu beeinträchtigen.

Sobald Sie mit der Leistung der neuen Anwendungsversion zufrieden sind, können Sie damit beginnen, einen Prozentsatz des Benutzerverkehrs zur blauen Umgebung zu leiten, um einen Canary-Test mit echten Nutzern durchzuführen. Wenn keine Probleme festgestellt werden, können Sie 100 % des Datenverkehrs zur neuen Umgebung leiten, was zu einer reibungslosen Feature-Veröffentlichung führt.

Wenn nach der Umschaltung Probleme festgestellt werden, können Sie den Datenverkehr erneut problemlos zur grünen Umgebung zurückleiten, die die vorherige Version Ihres Codes enthält, um einen einfachen Rollback durchzuführen.

Sobald Sie sicher sind, dass es keine Probleme mit dem neuen Code gibt, können Sie die blaue Umgebung in die grüne klonen, sodass Sie wieder zwei identische Produktionsumgebungen haben. Sie können dann den Entwicklungszyklus fortsetzen oder den zweiten Server bei Bedarf als Load Balancer nutzen, wenn Sie einen Nutzungsanstieg verzeichnen.

Was sind die Nachteile der blau-grünen Bereitstellung?

Hier sind einige der wichtigsten Nachteile:

  • Mehr Ressourcen: Es erfordert die Pflege von zwei identischen Umgebungen, was teurer sein kann als andere Bereitstellungsstrategien.
  • Mehr Koordination: Sie müssen die Bereitstellung der neuen Anwendungsversion in der grünen Umgebung sowie die Umschaltung von Blau auf Grün koordinieren.
  • Langsamere Umschaltung: Der Wechsel zu verschiedenen Untergruppen kann langsamer sein als bei anderen Bereitstellungsstrategien wie A/B-Testing. Sie müssen den gesamten Datenverkehr aus der blauen Umgebung ableiten, bevor Sie zur grünen wechseln.
  • Nicht für alle Anwendungen geeignet: Die blau-grüne Bereitstellung ist nicht für alle Anwendungen geeignet. Zum Beispiel Anwendungen, die viele Zustände verwenden, wie Datenbanken.
  • Feature-Level-Granularität: Ein grüner Bereitstellungsprozess ermöglicht keine Feature-Level-Granularität. Wenn Sie also ein Problem mit einem bestimmten Feature feststellen, müssen Sie das gesamte Release zurücksetzen, nicht nur das betroffene Feature. Bei der Bereitstellung einer großen oder komplexen Anwendung kann es schwierig sein, diese Methode anzuwenden. 

Feature Flags vs. blau-grüne Bereitstellung

Ein alternativer Entwicklungsansatz zur blau-grünen Bereitstellung ist die Verwendung von Feature Flags oder Feature Toggles als Rolling Deployments. Mit Feature Flags werden neue Features und Code in bedingtem Code verpackt, der remote ein- oder ausgeschaltet werden kann. Dies ermöglicht es Entwicklern, neue Features in die Produktion zu bringen und einen einfachen Rollback durchzuführen, ohne zwei Produktionsumgebungen pflegen zu müssen. 

Neben einfacher Ein-/Aus-Funktionalität können Feature Flags auch für gezielte Rollouts verwendet werden, bei denen ein Feature nur für ein bestimmtes Segment des Benutzerverkehrs aktiviert wird. Dies ermöglicht Anwendungsfälle wie Canary-Deployments und A/B-Testing, ohne zwei separate Produktionsumgebungen pflegen zu müssen.

Wenn Sie einen einfachen Workflow für den Einstieg mit Feature Flags suchen, ist Optimizely Free Feature Flagging eine kostenlose Feature-Flagging-Lösung von Optimizely, mit der Sie schnell und sicher Feature Toggles und A/B-Testing in Ihrer App implementieren können. Optimizely Rollouts ist für die beliebtesten Sprachen & Bibliotheken verfügbar, darunter JavaScript, Ruby, Node, React und Python. 

Starten Sie noch heute mit kostenlosem Feature Flagging