Kanarische Release-Strategie gegen Blau / Grün

125

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?
IAmYourFaja
quelle
5
Ihr Verständnis ist solide, aber ich würde eine blaugrüne Strategie nicht so formulieren, dass sie auf allen Knoten gleichzeitig bereitgestellt werden muss. Sie können sie so gemächlich einsetzen, wie Sie möchten - der einzige Druck sind Ihre eigenen Fristen. Darüber hinaus können Sie Blau-Grün verwenden, um Änderungen nur für eine Teilmenge Ihrer Knoten freizugeben (z. B. nur einen von vielen API-Endpunktpools zu ändern).
Patrick M
1
Sehr schöne Zusammenfassung dieser Konzepte, die ich überall sehe, ohne vorher eine klare Definition zu haben!
Kheraud

Antworten:

94

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.

Dave Schweisguth
quelle
Ein paar Worte zur Bedeutung von Farben: - Die alte Umgebung könnte das Blau sein, die neue das Grün. - In der nächsten Version wird das alte das grüne sein. Wiki:> Viele Sprachen unterscheiden nicht zwischen dem, was im Englischen als "blau" und "grün" beschrieben wird, und verwenden stattdessen einen
Titelbegriff
Kanarienvogel ist nicht immer schneller als blau / grün. Es hängt alles von den CI- und CD-Workflows ab!
Ligemer
81

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: Geben Sie hier die Bildbeschreibung ein

Kanarienvogel: Geben Sie hier die Bildbeschreibung ein

itaysk
quelle
4
Ihre Illustrationen sind großartig. Ich könnte in Betracht ziehen, sie hier in Ihre Antwort einzubetten, aber den Link für einen tieferen Tauchgang mit Erklärungen beizubehalten.
Quickshiftin
Vielen Dank.
Fügte
4
Sehr gute Erklärung. Es ist jedoch besser, die prozentuale Stichprobe der Benutzerlast auf der kanarischen Illustration anzuzeigen.
Nikli
Was ist der Unterschied zwischen "während" und "nach" im kanarischen Release-Diagramm? Ich erwartete, dass "nach" wie das der blau / grünen Veröffentlichung
aussehen würde
Beide Methoden sollen das Risiko durch die Evaluierung der neuen Version reduzieren. Während bedeutet, dass die neue Version bereitgestellt wird, aber noch keine Entscheidung getroffen wurde, wie fortgefahren werden soll. nach Mitteln nach einer positiven Entscheidung wurde fortgefahren.
Itaysk
5

Obwohl beide Begriffe ziemlich nahe beieinander liegen, weisen sie subtile Unterschiede auf. Einer vertraut auf Ihre Funktionsfreigabe und der andere auf Ihre Freigabe.

Kanarienvogel

  1. 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.

  2. Es wird eine Vorstellung davon bekommen, wie die neue Version funktionieren wird (Integration in andere Apps, CPU, Speicher, Festplattennutzung usw.).

Blau Grün:

  1. Es geht mehr um die vorhersehbare Version ohne Ausfallzeit.
  2. Einfache Rollbacks im Fehlerfall.
  3. Vollständig automatisierter Bereitstellungsprozess
Rahul Garg
quelle
4

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.

     

  • A / B-Tests - Zwei Versionen einer Anwendung werden gleichzeitig ausgeführt. Ein Teil der Anfragen geht an jeden. Entwickler können dann die Versionen vergleichen.  
  • Canary Release - Eine neue Version eines Microservice wird zusammen mit den alten Versionen gestartet. Diese neue Version kann dann einen Teil der Anforderungen übernehmen und das Team kann testen, wie diese neue Version mit dem Gesamtsystem interagiert.
Ajay Kumar
quelle
2

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".

Roland Roos
quelle