Ein Feature Flag (Feature Toggle) ist ein Schalter im Code, der eine Funktion ohne neues Deployment ein- und ausschaltet. Die Funktion ist dann schon ausgeliefert und wartet darauf, freigegeben zu werden.
- Feature Flag (Feature Toggle)
Ein Schalter im Code, der eine Funktion ohne neues Deployment ein- und ausschaltet.
Beispiel: „Das Feature Flag für den neuen Kassenweg stand zwei Wochen auf aus.“Auch Feature Toggle; auf Deutsch Funktionsschalter. Der Wert kommt aus der Konfiguration, aus der Datenbank oder von einem Dienst, der die Schalter verwaltet.
Abgrenzung zum Canary Release: Dieses verteilt einen ganzen Stand an einen Teil der Nutzer. Ein Flag schaltet eine einzelne Funktion.
Wofür ein Feature Flag gebraucht wird
Für die Trennung von Ausliefern und Freigeben. Der Code geht in kleinen Schritten nach außen, die Funktion erscheint erst, wenn Inhalt, Schulung und Termin stimmen; im Fehlerfall genügt ein Schalter statt eines Deployments.
Außerdem macht es die Arbeit im Hauptzweig möglich. Halbfertiges liegt abgeschaltet im ausgelieferten Stand, siehe Trunk-Based Development.
Welche Arten von Feature Flags es gibt
Vier, nach Lebensdauer und Zweck. Der Release-Schalter begleitet eine Einführung und verschwindet danach; der Versuchsschalter teilt Nutzer für einen Test; der Berechtigungsschalter gibt einzelnen Kunden etwas frei; der Betriebsschalter nimmt unter Last Teile vom Netz.
Die Unterscheidung lohnt sich, weil sie die Frage beantwortet, wann der Schalter wieder herauskommt. Beim Release-Schalter ist das in Wochen, beim Berechtigungsschalter gar nicht.
Warum ein Feature Flag ein Ablaufdatum braucht
Weil jeder Schalter den Code verdoppelt. Zwei Pfade heißen zwei Fälle in jedem Test, und bei zwanzig Schaltern weiß niemand mehr, welche Kombination tatsächlich läuft.
Deshalb gehört zu jedem Schalter beim Anlegen eine Notiz, wann er entfernt wird, und nach der Einführung das Aufräumen. Ein Projekt mit alten Schaltern ist schwerer zu ändern als eines ohne.