Mein Verständnis einer kanarischen Version ist, dass es sich um eine Teilfreigabe für eine Teilmenge von Produktionsknoten handelt, bei denen Sticky Sessions aktiviert sind. Auf diese Weise können Sie die Anzahl der Benutzer / Kunden steuern und minimieren, die betroffen sind, wenn Sie einen fehlerhaften Fehler veröffentlichen.
Mein Verständnis einer blau / grünen Version ist, dass Sie zwei gespiegelte Produktionsumgebungen ("blau" und "grün") haben und Änderungen gleichzeitig auf alle Knoten von blau oder grün übertragen und dann mithilfe von Netzwerkmagie steuern Zu welcher Umgebung werden Benutzer über DNS weitergeleitet?
Bevor ich anfange, korrigieren Sie mich bitte, wenn etwas, was ich bisher gesagt habe, falsch ist!
Angenommen, ich bin mehr oder weniger auf dem richtigen Weg, dann ein paar Fragen zu den beiden Strategien:
- Gibt es Szenarien, in denen Kanarienvogel Blau / Grün vorgezogen wird und umgekehrt?
- Gibt es Szenarien, in denen ein Bereitstellungsmodell beide Strategien gleichzeitig implementieren kann?
quelle
Antworten:
Die blaugrüne Freigabe ist einfacher und schneller.
Sie können eine blaugrüne Version erstellen, wenn Sie die neue Version in einer Testumgebung getestet haben und sehr sicher sind, dass die neue Version in der Produktion ordnungsgemäß funktioniert. Die Verwendung von Feature-Umschaltern ist eine gute Möglichkeit, das Vertrauen in eine neue Version zu stärken , da die neue Version genau wie die alte funktioniert, bis jemand einen Feature-Umschalter umlegt. Die Aufteilung Ihrer Anwendung in kleine, unabhängig voneinander freigebbare Dienste ist eine weitere Möglichkeit, da weniger getestet werden muss und weniger Probleme auftreten können.
Sie müssen eine kanarische Version erstellen, wenn Sie nicht sicher sind, ob die neue Version in der Produktion ordnungsgemäß funktioniert. Selbst wenn Sie ein gründlicher Tester sind, ist das Internet ein großer und komplexer Ort und bringt immer wieder unerwartete Herausforderungen mit sich. Selbst wenn Sie Feature-Toggles verwenden, ist eines möglicherweise falsch implementiert.
Die Automatisierung der Bereitstellung ist mühsam, sodass die meisten Unternehmen planen, jedes Mal die eine oder andere Strategie zu verwenden.
Führen Sie eine blaugrüne Bereitstellung durch, wenn Sie sich zu Praktiken verpflichten, mit denen Sie sich darauf verlassen können. Andernfalls senden Sie den Kanarienvogel aus.
Die Essenz von Blaugrün wird auf einmal bereitgestellt, und die Essenz der kanarischen Bereitstellung wird schrittweise bereitgestellt. Daher kann ich mir angesichts eines einzelnen Benutzerpools keinen Prozess vorstellen, den ich als beides gleichzeitig beschreiben würde. Wenn Sie mehrere unabhängige Benutzerpools hatten, z. B. mit unterschiedlichen regionalen Rechenzentren, können Sie in jedem Rechenzentrum und Kanarienvogel über Rechenzentren hinweg blaugrün arbeiten. Wenn Sie keine kanarische Bereitstellung in einem Rechenzentrum benötigen würden, würden Sie sie wahrscheinlich nicht in allen Rechenzentren benötigen.
quelle
Ich habe hier einen ausführlichen Aufsatz zu diesem Thema geschrieben: http://blog.itaysk.com/2017/11/20/deployment-strategies-defined
Meiner Meinung nach besteht der Unterschied darin, ob die neue "grüne" Version echten Benutzern ausgesetzt ist oder nicht. Wenn ja, dann würde ich es Kanarienvogel nennen. Eine übliche Methode zur Implementierung von Canary ist reguläres Blau / Grün mit dem Hinzufügen eines intelligenten Routings bestimmter Benutzer zur neuen Version. Lesen Sie den Beitrag für einen detaillierten Vergleich
Blau Grün:
Kanarienvogel:
quelle
Obwohl beide Begriffe ziemlich nahe beieinander liegen, weisen sie subtile Unterschiede auf. Einer vertraut auf Ihre Funktionsfreigabe und der andere auf Ihre Freigabe.
Kanarienvogel
Die kanarische Version ist eine Technik, um das Risiko der Einführung einer neuen Softwareversion in der Produktion zu verringern, indem die Änderung langsam auf eine kleine Teilmenge von Benutzern übertragen wird, bevor sie auf die gesamte Infrastruktur übertragen wird.
Es wird eine Vorstellung davon bekommen, wie die neue Version funktionieren wird (Integration in andere Apps, CPU, Speicher, Festplattennutzung usw.).
Blau Grün:
quelle
Hier sind einige Inline-Definitionen -
Blaugrüne Bereitstellung - Beim Bereitstellen einer neuen Version einer Anwendung wird eine zweite Umgebung erstellt. Sobald die neue Umgebung getestet wurde, übernimmt sie die alte Version. Die alte Umgebung kann dann ausgeschaltet werden.
quelle
Ein guter Anfang der Definitionen. Ich denke, es hilft auch bei der Entscheidung für Ihre Strategie, wenn Sie Ihre "Release" -Definition in "Deploy" und "Release (Funktionalität)" aufteilen.
Bereitstellen (Binärdateien)
Die Aktion der binären Bereitstellung Ihres Produkts auf einem (Produktions-) System.
Release (Funktionalität)
Die Aktion zum Verwalten der Verfügbarkeit von Funktionen für (Gruppen von) Benutzern.
Warum? Sie haben normalerweise (mehrere) zwei Probleme beim "Freigeben": 1) Fehler / Abwärtskompatibilität / usw. 2) Überprüfen der Gültigkeit / Verwendbarkeit neuer Funktionen
Fragen Sie sich dann, bevor Sie sich für eine kanarische oder blau / grüne oder eine andere grau / gemischte Strategie entscheiden: Welche Bedenken haben wir bei der Veröffentlichung / Bereitstellung der neuen Version? Und nur dann, wenn Sie Ihre Bedenken kennen, wählen Sie Ihre Strategie.
Darüber hinaus ist es möglich, komplexere Bereitstellungs- / Freigabestrategien durchzuführen. In einigen Clouds / Infrastrukturen ist es beispielsweise möglich, mehrere Produktionsserver zu haben und die Last in unterschiedlichen Anteilen an verschiedene Server und Versionen Ihres Produkts weiterzuleiten und die Solidität zu überwachen, bevor eine Version / Bereitstellung für alle Benutzer skaliert wird.
Feature-Flagging
Die Aktion "Konfigurieren" (kalt oder sogar heiß), welche Funktionalität für welche (Gruppe) Benutzer (nicht) verfügbar ist
Wenn Sie auch so etwas wie "Feature-Flagging" ausführen, können Sie zuerst bereitstellen, die Solidität Ihrer Version in Abwärtskompatibilitäts- / Fehlerperspektive messen und neue Funktionen schrittweise für verschiedene Benutzer freigeben oder umgekehrt (verkleinern oder sogar Rollback-Funktionen und / oder Binärdateien) ). Das Feature-Flagging ermöglicht die Aufteilung der Verfügbarkeit von Funktionen von der Bereitstellung von Binärdateien und bietet eine viel feinere Entscheidungsfindung als nur "Bereitstellen / Rollback".
quelle