Blau-grüne Bereitstellung
Inhalt
Was ist die blau-grüne Bereitstellung?
Bei der blau-grünen Bereitstellung handelt es sich um eine Softwareentwicklungstechnik, bei der zwei Produktionsumgebungen (eine "blaue Umgebung" und eine "grüne Umgebung") verwendet werden, um den Softwarebereitstellungsprozess sicherer zu machen. Es handelt sich um eine relativ komplexe Bereitstellungsstrategie, die jedoch die Ausfallzeiten bei der Aktualisierung Ihrer Anwendung in der Produktion effektiv minimiert. Sie ist auch sehr nützlich für das Experimentieren mit Produkten
Die beiden Produktionsumgebungen werden so identisch wie möglich gehalten. Der neu bereitgestellte Code wird in die derzeit inaktive Umgebung verschoben. Sobald die neuen Änderungen in der Produktion getestet wurden, schaltet ein Router auf die Umgebung um, in der die neuen Änderungen live sind, so dass ein reibungsloser Übergang möglich ist.
Eine blau-grüne Bereitstellung ermöglicht es Ihnen, Ihre Anwendung in der Produktion mit minimaler Ausfallzeit zu aktualisieren. Dabei werden zwei identische Kopien Ihrer Anwendung bereitgestellt, eine "blaue" und eine "grüne". Bei der blauen Kopie handelt es sich um die aktuelle Produktionsversion Ihrer Anwendung, bei der grünen um die neue Version, die Sie bereitstellen möchten. Sie weisen einige Ihrer Server dem Hosting der neuen Version der Anwendung zu und die übrigen Server dem Hosting der vorherigen Version.
Sobald die grüne Kopie bereitgestellt und getestet ist, können Sie den Datenverkehr schrittweise von der blauen auf die grüne Version umleiten. Beginnen Sie schrittweise, indem Sie z.B. 20% des Datenverkehrs auf die grüne Kopie umleiten und den Prozentsatz im Laufe der Zeit erhöhen. Auf diese Weise können Sie vor der Umstellung auf eventuelle Probleme achten.
Wenn ein Problem auftritt, können Sie schnell wieder zur blauen Kopie zurückkehren, indem Sie den gesamten Datenverkehr dorthin zurückleiten. Aus diesem Grund wird die blau-grüne Bereitstellung auch als "Zero-Downtime"-Bereitstellungsstrategie bezeichnet.
Mit der blau-grünen Bereitstellung erhalten Sie:
- Keine Ausfallzeiten: Die Umstellung von blau auf grün erfolgt sofort. Die Kunden erleben während der Bereitstellungsphase keine Ausfallzeiten, da beide Umgebungen aktiv und identisch sind.
- Rollback-Funktionen: Im Falle von Problemen können Sie problemlos zur blauen Umgebung zurückwechseln.
- Risikominimierung: Da Sie über eine vollständig getestete Umgebung (grün) verfügen, bevor Sie den Live-Datenverkehr dorthin leiten, wird das Risiko, dass fehlerhafte oder fehlerhafte Updates direkt auf das Live-System (blau) übertragen werden, erheblich reduziert.
Im Wesentlichen reduziert die blau-grüne Bereitstellung die Ausfallzeiten und das Risiko, das mit der Bereitstellung neuer Änderungen auf einem Live-System verbunden ist, erheblich.
Bild: Optimizely
Wie verwendet man die blau-grüne Bereitstellung?
Die blau-grüne Bereitstellung ist eine komplexe Bereitstellungsstrategie. Sie sollten einen genau definierten Plan haben, da diese Strategie teurer sein kann als andere Bereitstellungsstrategien, z.B. A/B-Testing.
- Verwenden Sie eine skalierbare Infrastruktur. Das hilft Ihnen, die Gesamtkosten zu senken.
- Praktizieren Sie Chaos Engineering in einer grünen Umgebung. So können Sie die Zuverlässigkeit Ihrer Anwendung testen, ohne Ihre Endbenutzer zu beeinträchtigen.
- Verwalten Sie den Datenbankstatus sorgfältig. Das ist eine der größten Herausforderungen bei der blau-grünen Bereitstellung.
- Ändern Sie Load Balancer, nicht DNS. So haben Sie mehr Kontrolle über die Weiterleitung des Datenverkehrs.
Etappen einer blau-grünen Bereitstellung
Hier sind die 9 Stufen eines blau-grünen Bereitstellungsmodells:
Bild: Optimizely
- Umgebungen einrichten
Erstellen Sie identische blaue und grüne Umgebungen. - Bereitstellen von Updates in der grünen Umgebung
Implementieren Sie die Änderungen in der grünen Umgebung. - Testen und Validieren
Führen Sie umfassende Tests in der grünen Umgebung durch. - Verifizierung und Qualitätsprüfungen
Überprüfen Sie die Updates auf Leistung und Kompatibilität. - Switchover
Leiten Sie den Live-Datenverkehr zügig von der blauen auf die grüne Umgebung um. - Überwachung (nach der Bereitstellung)
Überwachen Sie die grüne Umgebung fortlaufend auf Probleme oder Anomalien. - Rollback (falls erforderlich)
Kehren Sie schnell zur stabilen blauen Umgebung zurück, wenn Probleme auftreten. - Promote green to blue
Sobald die grüne Umgebung stabil ist, machen Sie sie zur neuen Live-Produktionsumgebung (blau). - Aufräumen und Vorbereitung auf den nächsten Zyklus
Setzen Sie die grüne Umgebung zurück und bereiten Sie sie für zukünftige Updates vor.
Dieser rationalisierte Prozess gewährleistet einen nahtlosen Übergang zwischen den Umgebungen und minimiert Ausfallzeiten und Risiken bei Aktualisierungen oder Änderungen am Live-System.
Anwendungsfälle für die blau-grüne Bereitstellung
Rollbacks
Einer der Hauptvorteile von blau-grünen Bereitstellungen ist Disaster Recovery. Da es zwei identische Umgebungen für die Produktion gibt, kann ein Router, wenn neue Änderungen in einer der Umgebungen (z.B. der blauen Version) vorgenommen werden und Probleme auftreten, einfach auf die andere Umgebung (grüne Version) mit der alten Version des Codes zurückwechseln, ohne dass es zu Ausfallzeiten kommt.
Kontinuierliche Integration/kontinuierliche Delivery (CI/CD-Pipeline)
Eines der Ziele der kontinuierlichen Integration (eine DevOps-Technik) ist es, Software so schnell wie möglich in Betrieb zu nehmen 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-Pushs in die Produktion ermöglicht und gleichzeitig das Risiko neuer Versionen senkt.
Testen in der Produktion
Oft gibt es kleine Kompatibilitätsunterschiede zwischen der Staging-Umgebung und der Produktionsumgebung, egal wie sehr man sich bemüht, 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 überführt wurde. Die blau-grüne Bereitstellung ermöglicht das Testen in der Produktion, indem der neue Code in die tatsächliche Produktionsumgebung übertragen wird, um zu sehen, wie er sich verhält, bevor er reibungslos in den Produktionsverkehr und die tatsächlichen Benutzer übergeht.
Canary-Bereitstellung
Bei einem Canary-Release werden neue Änderungen nicht für alle Benutzer, sondern nur für ein kleines Segment Ihrer Benutzerbasis freigegeben. Ähnlich wie ein Kanarienvogel in einer Kohlenmine kann dieser kleine kontrollierte Test dazu dienen, festzustellen, ob die neue Version Ihres Codes schwerwiegende Fehler enthält. Die blau-grüne Bereitstellung kann für solche Canary-Tests verwendet werden, indem der Router einfach einen Prozentsatz Ihres Datenverkehrs auf eine neue Version des Codes umleitet, um zu sehen, wie sie sich im Live-Verkehr verhält, bevor Sie die Änderung auf 100% Ihrer Benutzer ausweiten.
A/B-Testing
Ein weiterer möglicher Anwendungsfall für blau-grüne Bereitstellungen sind A/B-Tests. In diesem Fall würden Sie die neue Version Ihres Codes in die blaue Umgebung laden und 50 % des Benutzerverkehrs auf die blaue Version im Vergleich zu Ihrer ursprünglichen grünen Version lenken. Anschließend können Sie überwachen, wie die beiden Umgebungen in Bezug auf Ihre wichtigsten Kennzahlen abschneiden, und mithilfe statistischer Analysen die genauen Auswirkungen Ihrer neuen Anwendung ermitteln.
Lastausgleich
Ein weiterer möglicher Anwendungsfall für die blau-grüne Bereitstellung ist der Lastausgleich. Wenn die blau-grüne Bereitstellung so eingerichtet ist, dass sich die beiden Produktionsumgebungen auf getrennten Servern (und nicht auf einer virtuellen Maschine) befinden, kann ein Router den Datenverkehr zwischen der blauen und der grünen Version der Produktionsumgebung problemlos ausgleichen, da sie funktional identisch sind.
Was sind die Vorteile der blau-grünen Bereitstellung?
Hier sind einige der wichtigsten Vorteile dieser Bereitstellungsmethode:
- Null Ausfallzeit: Sie können Ihre Anwendung in der Produktion ohne Ausfallzeiten aktualisieren, da zwei identische Kopien laufen. Sie können den Datenverkehr von einer auf die andere umschalten.
- Rollback: Wenn Sie mit der neuen Version Ihrer Anwendung auf Probleme stoßen, können Sie problemlos zur vorherigen Version zurückkehren.
- Geringeres Risiko: Sie können die neue Version Ihrer Anwendung in der grünen Umgebung testen, bevor Sie sie in der Produktion einsetzen.
- Kontrollierte Bereitstellung: Sie haben die Kontrolle über den Bereitstellungsprozess. Entscheiden Sie, wie viel Datenverkehr in die grüne Umgebung geleitet werden soll, und überwachen Sie eventuelle Probleme, bevor Sie die Umstellung vornehmen.
- Skalierbarkeit: Die blau-grüne Bereitstellung kann leicht skaliert werden, um mehr Datenverkehr zu bewältigen, indem mehr Server zur grünen Umgebung hinzugefügt werden.
Beispiel für die blau-grüne Bereitstellung
Nehmen wir an, Ihr Entwicklungsteam arbeitet an einer Web App und möchte eine neue Funktion freigeben, möchte aber Ausfallzeiten vermeiden und einen reibungslosen Übergang zum neuen Code gewährleisten. Zusätzlich zu Ihrer Staging-Umgebung würden Sie zwei identische Produktionsumgebungen (eine "blaue Version" und eine "grüne Version") einrichten, wobei ein Router den Datenverkehr zur grünen Version leitet.
Dann können Sie die neuen Änderungen in die blaue Version der Produktionsumgebung übertragen und sehen, wie sie sich in der tatsächlichen Produktionsumgebung verhalten. Es könnte sich herausstellen, dass es Fehler gibt, die nur in Ihrer Produktionsumgebung auftreten. In diesem Fall können Sie einfach zur Entwicklung zurückkehren, ohne dass dies Auswirkungen auf Ihre Benutzer hat.
Sobald Sie mit der Leistung der neuen Version der Anwendung zufrieden sind, können Sie damit beginnen, einen Prozentsatz Ihres Benutzerverkehrs in die blaue Umgebung zu leiten, um einen Canary-Test mit echten Benutzern durchzuführen. Wenn dabei keine Probleme festgestellt werden, können Sie 100 % Ihres Datenverkehrs in die neue Umgebung leiten, was zu einer reibungslosen Veröffentlichung der neuen Funktionen führt.
Sollten nach der Umstellung Probleme auftreten, können Sie den Datenverkehr wieder in die grüne Umgebung umleiten, in der sich die vorherige Version Ihres Codes befindet, um ein einfaches 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 Umgebung klonen, so dass Sie wieder zwei identische Produktionsumgebungen haben. Sie können dann den Entwicklungszyklus fortsetzen oder den zweiten Server bei Bedarf als Load Balancer verwenden, wenn Sie eine Nutzungsspitze feststellen.
Was sind die Nachteile der blau-grünen Bereitstellung?
Hier sind einige der wichtigsten Nachteile:
- Mehr Ressourcen: Sie müssen zwei identische Umgebungen unterhalten, was teurer sein kann als andere Bereitstellungsstrategien.
- Mehr Koordination: Sie müssen sowohl die Bereitstellung der neuen Version der Anwendung in der grünen Umgebung als auch den Wechsel von der blauen zur grünen Umgebung koordinieren.
- Langsamere Umstellung: Die Umstellung auf verschiedene 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 auf die grüne Umgebung umschalten.
- Nicht für alle Anwendungen geeignet: Die blau-grüne Bereitstellung ist nicht für alle Anwendungen geeignet. Zum Beispiel für Anwendungen, die viele Zustände verwenden, wie Datenbanken.
- Granularität auf Funktionsebene: Ein grüner Bereitstellungsprozess ermöglicht keine Granularität auf Feature-Ebene. Wenn Sie also ein Problem mit einer bestimmten Funktion haben, müssen Sie die gesamte Version zurücksetzen, nicht nur die betroffene Funktion. Wenn Sie eine große oder komplexe Anwendung bereitstellen, 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 Deployment. Bei Feature Flags werden neue Funktionen und Code in bedingten Code verpackt, der aus der Ferne ein- oder ausgeschaltet werden kann. Auf diese Weise können Entwickler neue Funktionen in die Produktion einführen und haben eine einfache Möglichkeit für ein Rollback, ohne zwei Produktionsumgebungen pflegen zu müssen.
Neben der einfachen Ein/Aus-Funktionalität können Feature Flags auch für Targeting-Rollouts verwendet werden, bei denen eine Funktion nur für ein bestimmtes Segment Ihres Benutzerverkehrs aktiviert wird. Dies ermöglicht Anwendungsfälle wie Canary-Tests und A/B-Testing, ohne dass Sie zwei separate Produktionsumgebungen unterhalten müssen.
Wenn Sie nach einem einfachen Workflow für den Einstieg in Feature Flags suchen, ist Optimizely free feature flagging eine kostenlose Lösung von Optimizely, mit der Sie Feature Toggles und A/B-Testing schnell und sicher in Ihrer App implementieren können. Optimizely Rollouts ist für die gängigsten Sprachen und Bibliotheken verfügbar, darunter JavaScript, Ruby, Node, React und Python.
Starten Sie noch heute mit dem kostenlosen Feature Flagging!