Blue Green Deployment: Mit der Entwicklung der DevOps-Kultur tauchen auch neue Konzepte auf. Dies gilt insbesondere für den Blue/Green-Einsatz, der voll und ganz mit dieser Arbeitsphilosophie verbunden ist. Was ist also Blue/Green DevOps? Was sind die Vorteile? Und was sind die Herausforderungen? Wie kann man dieses Pattern nutzen? Die Antworten findest du hier.
Was ist Blue Green Deployment DevOps?
Blue Green Deployment und die DevOps-Kultur
Blue Green Deployment wurde 2010 durch das Buch „Continuous Delivery“ von Jez Humble und David Farley eingeführt. Mit anderen Worten, kurz nach dem Aufkommen und der Demokratisierung des DevOps-Konzepts.
Aus gutem Grund wird dieses Bereitstellungsmuster voll und ganz mit der DevOps-Kultur in Verbindung gebracht.
Bei dieser Arbeitsphilosophie geht es darum, eine qualitativ hochwertige Softwarelösung schnell bereitzustellen. Und das alles, ohne die Dienste zu unterbrechen.
Aber um dieses Ziel der kontinuierlichen Verbesserung zu erreichen, brauchen DevOps eine optimale Produktionsumgebung. An dieser Stelle kommt das Blue Green Deployment ins Spiel.
Ein Konzept für DevOps
Wenn Entwickler eine neue Version einer Anwendung entwerfen, brauchen sie ein Routing-Tool, das zwischen verschiedenen Umgebungen (sei es Webserver, Microservice-Plattformen oder Datenbanken) wechseln kann.
Dazu wird eine Green-Umgebung gegenüber der ursprünglichen Version dupliziert. Gleichzeitig werden die Entwickler auf eine Blue-Umgebung verwiesen, die es ihnen ermöglicht, nahtlos an der neuen Version zu arbeiten. Dies ist die Version N.
Sobald die Verbesserungen überprüft und freigegeben sind, können sie in der Green-Umgebung implementiert werden. Dies ist die Version N+1.
Diese beiden Versionen werden gleichzeitig in der Produktionsumgebung ausgeführt, um eine kontinuierliche Bereitstellung zu fördern und Unterbrechungen zu minimieren. Dies wird auch als Zero Downtime Deployment (ZDD) bezeichnet.
Gut zu wissen: Nur weil der Transfer abgeschlossen ist, heißt das nicht, dass die N-Version verschwindet. Du kannst die Version N behalten (z. B. für eine zukünftige Wiederherstellung oder für Updates) oder endgültig entfernen.
💡Auch interessant:
ELK DevOps 3 Tools in 1 |
DevSecOps vs. DevOps |
DevOps Definition |
DataOps |
Datadog |
Was sind die Vorteile von Blue Green DevOps?
Das Blue Green Deployment bietet eine Vielzahl von Vorteilen für die Nutzer:
- Schnelle Bereitstellung: Mit Blue Green kann Software jederzeit (oder fast jederzeit) gestartet werden. Denn eine einfache Änderung des Routings genügt, um die Software in Produktion zu bringen.
- Die Verbesserung der Benutzererfahrung: Durch die Verwendung von Blue Green Deployments können Änderungen sehr schnell und regelmäßig veröffentlicht werden. Dadurch haben die Nutzer immer Zugang zu den neuesten Aktualisierungen. Und das ohne Unterbrechung des Dienstes.
- AB-Testing: Diese Blue Green DevOps-Techniken ermöglichen auch die Durchführung von A/B-Tests. In diesem Fall reicht es, 50 % der Nutzer auf Green und 50 % auf Blue zu lenken. Anschließend können in jeder Umgebung unterschiedliche Änderungen vorgenommen werden. Am Ende des Tests können DevOps leicht feststellen, welche Änderungen am effektivsten sind.
Was sind die Herausforderungen beim Blue Green Deployment?
Das Blue/Green Deployment ermöglicht es DevOps, ihre Arbeit zu vereinfachen, aber die Verwendung dieses Patterns bringt auch eine Vielzahl von Herausforderungen mit sich.
Blue Green Deployment - Die User Sessions
Es geht darum, den Benutzer zwischen verschiedenen Umgebungen hin- und herzuschicken, ohne dass er ausgeloggt wird. Um dies zu erreichen, kann man die Sitzung in einem Cookie ablegen oder ein unabhängiges Repository verwenden.
Beide Techniken ermöglichen dann einen sofortigen Wechsel zwischen den Umgebungen, ohne dass der Nutzer es merkt.
Mangel an Ressourcen
Blue Green Deployment ist zwar in der DevOps-Welt bekannt, aber immer noch zu wenige Unternehmen nutzen diese Methode der kontinuierlichen Bereitstellung. Einige haben nicht genügend interne Ressourcen, um die CI/CD-Prozesse durchzuführen.
Daher ist Blue Green Deployment DevOps noch nicht weit verbreitet. Mit der Digitalisierung von Organisationen entwickeln sich jedoch auch die Anwendungen weiter. Dadurch werden sie in die Lage versetzt, die kontinuierliche Verteilung zu unterstützen.
Datenbanken für Blue Green Deployment
Abgesehen von den Benutzersitzungen stellt das Blue Green Deployment auch ein Problem für die Verwaltung von Datenbanken dar. Damit diese Technik funktioniert, ist es wichtig, dass die in der SQL-Datenbank begonnenen Transaktionen von einer Umgebung auf die andere übertragen werden. Aber wie macht man das? Das hängt von der Art der Datenbank ab.
- Unabhängige Datenbanken: In diesem Rahmen ist es nicht notwendig, die Blue-Datenbank und die Green-Datenbank zu synchronisieren. Es gibt also keine Unterbrechung des Dienstes. Allerdings bedeuten diese unabhängigen Datenbanken einen Wechsel des Modells. Um dies zu vermeiden, können noSQL-Datenbanken eingesetzt oder die Datenbanken in Bezug auf die beiden Umgebungen getrennt werden.
- Datenbanken, die in den blau/grünen Einsatz eingefügt werden: Hier gibt es kein Problem mehr mit dem Modellwechsel. Stattdessen ist es von entscheidender Bedeutung, die Datenbanken in beide Richtungen zu synchronisieren. Dieses Modell ist viel komplexer zu implementieren. Aber es ist dasjenige, bei dem das Fehlerrisiko am geringsten ist.
Wie nutzt man Blue Green DevOps?
A/B-Tests
Dies ist ein Muster, das für den Blue Green Deployment verwendet wird. In diesem Framework wählst du einen kleinen Teil der Bevölkerung aus, der die Version N verwendet, und einen anderen Teil, der die Version N+1 verwendet. Die Trennung der beiden ermöglicht es, die Funktionalität zu testen und sicherzustellen, dass es keine Fehler gibt.
Diese Methode ist besonders effektiv und wird vor allem von Facebook verwendet, wenn es die Einführung neuer Funktionen plant. So wird vor der Einführung ein erster Einsatz bei den Angestellten des Unternehmens gestartet. Diese werden dann beauftragt, die neue Version der Anwendung zu testen.
Die schrittweise Einführung
Hier geht es vor allem um einen schrittweisen Übergang von einer Umgebung zur anderen. So werden die in der Version N verbesserten Funktionen nicht alle gleichzeitig in der Version N+1 implementiert, sondern schrittweise.
Dadurch können mögliche Fehler bei jeder Funktion einzeln entdeckt werden.
Das ist nützlich, wenn du viele Änderungen an deinen Softwarelösungen vornimmst.
Blue Green Deployment: Die Tools
Für den Blue Green Deployment werden die DevOps leistungsfähige Werkzeuge benötigen.
Ein Beispiel ist HAProxy, der das Routing zwischen Blue und Green vereinfacht. Nicht zu vergessen die Openshift-Plattform von Red Hat, die den Betrieb von Containern automatisiert und CI/CD-Funktionen integriert. Oder F5 für den Lastausgleich und die Konsolidierung nativer Dienste.