Anwendungsfälle für Feature Flags

Überblick

Es gibt eine ganze Reihe von Anwendungsfällen in denen die Verwendung von Feature Flags nützlich sein kann. Nachfolgende Tabelle zeigt einen Auszug:

Usecases overview


Beispiele im Detail

Continuous Integration, Continuous Delivery

Vorgehen A, der Git-Flow

Usecases overview

Oberes Beispiel zeigt ein normales Vorgehen nach dem Git-Flow. Hierbei werden neben einem Master und Development Branch zusätzliche Feature Branches für die Entwicklung durch die Teams angelegt. Grundsätzlich ist gegen dieses Verfahren nichts einzuwenden, jedoch fördert es eine schnelle Integration in den Masterbranch und damit die grundsätzliche Idee hinter einem Continuous Integration Vorgehen nur bedingt.

Hierzu stellen wir uns vor wir haben 2 Teams. Beide Teams starten zu Beginn ihres Sprints mit der Entwicklung eines neuen Features. Aufgrund von Unklarheiten, unvollständigen Anforderungen oder falscher Spezifikationen kann aber nur Team A am Ende des Sprintes ein Ergebnis abliefern welches "reif" ist in den Hauptbranch zurück geführt zu werden.

Team B hat zwar Teile der Funktion fertig, jedoch so unvollständig, dass die Funktion nicht live vor Kunde gestellt werden sollte.

Grundsätzlich ist das kein Problem. Es führt nun aber dazu, dass Team B ihren Feature Branch deutlich länger offen halten muss als Team A. Je später die Integration erfolgt, desto größer ist die Wahrscheinlichkeit eines Integrationsfehlers.

Vorgehen B, trunk based

Usecases overview

Im Gegensatz zum Git-Flow wird bei Trunk-basierter Entwicklung versucht so oft wie möglich in den Development Branch zu integrieren, Feature Branches werden vermieden. Infolge sinkt der Integrationsaufwand und Integrationsfehler können schneller aufgelöst werden. Allerdings führt dieses Vorgehen auch dazu, dass unfertige Software zurück in den Hauptbranch überführt wird. Damit diese Änderungen im Endkundensystem nicht zu Fehlern führen werden diese per Feature Toggle ausgeschaltet und erst dann aktiviert, wenn die Software dazu bereit ist.

Weiter führende Infos zu Trunk based development


A/B Testing, Multivarianz

Feature Flags werden häufig auch in Verbidung mit User-Tests eingesetzt. Ein Beispiel dafür könnte ein Webseite sein auf der ein neues Feature getestet werden. Die Kunden werden dazu mithilfe eines Merkmals in 2 oder mehr Gruppen eingeteilt. Jede Zielgruppe erhält eine andere Ausprägung der Webseite. Durch Messung der Conversion Rate (durch geeignetes Tracking) kann nun bestimmt werden welche Variante für den Kunden die angenehmere ist. Langwierige Entwicklungen von Features "die keiner braucht" können dadurch vermieden werden.

Usecases A B Testing


Kill-Switch für Operations

In diesem Beispiel werden Feature Flags als Kill-Switch bei ansteigenden Fehlerraten eines Backend Services verwendet. Man stelle sich dazu folgendes Szenario vor. Für eine in Betrieb befindliche Applikation wird ein neue Schnittstelle angebunden. Mit steigenden Zugriffen wird eine steigende Fehlerrate festgestellt. Anstelle nun einen Rollback der Anwendung durchzuführen wird das neue Feature per Kill-Switch abgeschaltet. An die Frontend Anwendung wird anstelle der Daten ein Default-Wert zurück gegeben.

Usecases Killswitch