Veröffentlicht am 26. Oktober 2020

Feature Flags vs. blau-grüne Bereitstellungen: Weniger Risiko und mehr Kontrolle

Als Entwickler fragen Sie sich vielleicht, welche Vorteile die Verwendung von Feature Flags im Vergleich zu blau-grünen Bereitstellungen hat und wann Sie welches Tool verwenden sollten.

David Isquick
von David Isquick
graphical user interface, application

Eine kurze Einführung: Bei der blau-grünen Bereitstellung wird der Benutzerverkehr auf eine andere Gruppe von Servern umgeleitet, die Ihre aktualisierte Anwendung hosten. Feature Flags hingegen sind codebasiert und ermöglichen es Benutzern, ein neues Update zu sehen, indem sie Änderungen auf der Anwendungsebene vornehmen.

In diesem Blogbeitrag erhalten Sie einen Überblick darüber, wie Feature Flags ähnliche Herausforderungen wie blau-grüne Bereitstellungen lösen, jedoch mit mehr Kontrolle und weniger Zeitaufwand für die Entwicklung. Werfen wir einen Blick darauf:

Ein stumpfes Werkzeug: Blau-grüne Bereitstellungen

Bei einer blau-grünen Bereitstellung legen Sie einen Teil Ihrer Server für das Hosting einer neuen Version Ihrer Anwendung fest und einen anderen Teil Ihrer Server für das Hosting der vorherigen Version Ihrer Anwendung. In der Abbildung unten befindet sich auf der blauen Gruppe von Servern Ihre aktuelle Version, während die grüne Gruppe Ihre neue Version hostet. Um den Benutzern das Update zugänglich zu machen, müssen Sie sich mit dem Betriebsteam abstimmen, um den Datenverkehr über den Load Balancer (auch bekannt als Traffic Router) umzuleiten.

Wenn Sie ein Release durchführen, das mehrere Funktionen aktualisiert, und in einer davon einen Fehler entdecken, können Sie ganz einfach zur vorherigen Version zurückkehren, indem Sie den Datenverkehr wieder auf die vorherige Version oder die "blaue Gruppe" von Servern umleiten. Allerdings sind blau-grüne Bereitstellungen in dieser Hinsicht eine stumpfe Lösung, da sie keine Kontrolle auf Funktionsebene bieten. Sie müssen das gesamte Update zurücksetzen, um auch nur eine Funktion abzuschalten.

Vor- und Nachteile von blau-grünen Bereitstellungen

  • Pro: Einfache Rückgängigmachung einer Version durch Zurücksetzen des Datenverkehrs auf eine blaue Umgebung
  • Pro: Es muss kein zusätzlicher Code zu Ihrer Anwendung hinzugefügt werden.
  • Nachteil: Rollt die gesamte Version zurück und nicht nur die fehlerhafte Funktion
  • Contra: Ermöglicht keine Granularität auf Feature-Ebene, sondern nur Änderungen auf Release-Ebene
  • Nachteil: Teilt den Datenverkehr auf Serverebene auf und es ist schwierig, den Zugriff auf bestimmte Benutzer zu gewähren oder zu beschränken.
  • Nachteil: Oft müssen Entwickler und Betriebsleiter den Zugriff auf die Infrastruktur koordinieren.
  • Nachteil: Die Umstellung kann langsamer sein, da Load Balancer alle Verbindungen ablaufen lassen müssen.

Eine präzise Lösung: Feature Flags-Bereitstellungen

Mit Feature Flags (auch bekannt als Feature Toggles) hat jedes Feature in Ihrer Softwareaktualisierung eine eigene Flagge oder einen Toggle, der unabhängig von der Vollversion gesteuert werden kann. Mit einem Feature Flag-Service wie Optimizely Rollouts können Sie die Flags in der Benutzeroberfläche der Feature Flag-Plattform erstellen und dann neue Features oder Codepfade in den Feature Flag-Code verpacken.

Wenn Sie nun einen Fehler in einem Ihrer Features bemerken, müssen Sie nicht die gesamte Version zurücksetzen. Sie können die fehlerhafte Funktion einfach abschalten, indem Sie die Funktion in Ihrem Feature Management Dashboard deaktivieren, ohne dass Code bereitgestellt werden muss. Auf diese Weise bieten Feature Flags mehr Kontrolle, sind reaktionsschneller und sparen Zeit bei der Entwicklung im Vergleich zu blau-grünen Bereitstellungen, die eine teamübergreifende Zusammenarbeit und die Pflege mehrerer Set-Versionen auf Ihren Servern erfordern.

Vor- und Nachteile von Feature Flags-Bereitstellungen

  • Pro: Einfaches Abschalten einer einzelnen fehlerhaften Funktion
  • Pro: Ermöglicht Granularität auf Funktionsebene
  • Pro: Sie können einzelnen Benutzern, bestimmten Zielgruppen oder einem bestimmten Prozentsatz Ihrer Benutzer problemlos Zugriff auf Funktionen gewähren.
  • Pro: Softwareingenieure können Änderungen vornehmen, ohne IT/DevOps einzubeziehen.
  • Nachteil: Erfordert das Hinzufügen von zusätzlichem Code in Ihre Anwendung und kann zu technischen Schulden führen, wenn Sie keine bewährten Verfahren zum Entfernen vorhandener Flags haben.

Rollout eines Updates nur für eine Untergruppe von Benutzern

Die Vorteile der Verwendung von Feature Flags für die Veröffentlichung von Funktionen werden noch deutlicher, wenn Sie über Canary-Releases oder die Veröffentlichung von Funktionen für eine minimale Teilmenge Ihrer Benutzerbasis nachdenken, bevor Sie sie für alle Benutzer ausrollen. Wenn Sie eine neue Version mit Funktionsaktualisierungen herausbringen, werden Sie die Änderungen wahrscheinlich mit einer kleinen Gruppe testen wollen, um sicherzustellen, dass alles korrekt funktioniert. In der Softwareentwicklung wird dies als Canary-Tests/Deployments oder stufenweise/phasenweise Rollouts bezeichnet.

Canary-Tests ermöglichen es, neuen Code oder neue Funktionen für eine kleine Gruppe von Benutzern freizugeben, um eventuelle Probleme mit dem Code zu überprüfen, bevor er für ein größeres Publikum freigegeben wird. Indem Sie die Freigabe auf einen ausgewählten Personenkreis beschränken, können Sie den Aktionsradius neuer Versionen minimieren, und die Teams können Funktionalität und Leistung überprüfen, bevor sie sie an alle Benutzer ausrollen. Dieser Ansatz hilft auch bei der Erkennung von Problemen, die erst beim Wechsel von der Entwicklungs- oder Staging-Umgebung in die Produktion sichtbar wurden.

Canary-Tests können sowohl durch blau-grüne Bereitstellungen als auch durch Feature Flags durchgeführt werden, obwohl die gleichen Herausforderungen bei der Steuerung des Datenverkehrs auf Serverebene bestehen.

Canary-Tests durch blau-grüne Bereitstellungen: Anstatt den gesamten Datenverkehr von der blauen Gruppe von Servern, die die aktuelle Version Ihrer Anwendung hosten, auf die grüne Gruppe von Servern zu leiten, können Sie auch nur einen bestimmten Prozentsatz auf die neue Version umleiten. Allerdings haben Sie dann immer noch keine Kontrolle über die einzelnen Funktionen und müssen die gesamte Version zurücksetzen, wenn eine Funktion nicht funktioniert. Wenn Sie außerdem mehr Kontrolle darüber haben möchten, welche Kunden Zugang zu einer Funktion erhalten, ist es kompliziert, Regeln auf Serverebene zu definieren.

Canary-Tests durch Feature-Flag-Einsätze: Mit Feature Flags können Sie einen Canary-Test mit jeder Funktion durchführen, die über einen Ein-/Ausschalter verfügt, indem Sie den Teil des Datenverkehrs auswählen, den Sie für eine bestimmte Funktion freigeben möchten. Wenn eine bestimmte Funktion mit einem Fehler behaftet ist, können Sie sie einfach abschalten, anstatt zur vorherigen Version zurückzukehren. Sie können auch Targeting verwenden, um Funktionen für bestimmte Kunden oder Kundensegmente zu aktivieren (z.B. nur für Kunden mit einem kostenlosen Abonnement).

Zusammenfassung

  • Feature Flags bieten eine detailliertere, benutzerfreundliche Lösung zur Verringerung des Risikos bei der Freigabe neuer Funktionen
  • Feature Flags versetzen Software-Entwicklungsteams in die Lage, ihre Releases zu verwalten und den Bedarf an operativem Support zu reduzieren
  • Feature Flags können zur Durchführung von Canary-Tests auf Benutzerebene verwendet werden und bieten mehr Kontrolle als auf Serverebene

Wenn Sie mit Feature Flags arbeiten möchten, sollten Sie sich unsere kostenlose Lösung ansehen: Optimizely Rollouts.