Feature Flags (auch Feature Toggles oder Feature Switches) sind Schalter im Programmcode, mit denen sich Funktionen zur Laufzeit ein- und ausschalten lassen – ohne neuen Build und ohne neuen Deploy. Ein Deployment bringt den Code auf die Systeme, ein Feature Flag entscheidet erst danach, welcher Code-Pfad für die Nutzer aktiv ist. So lassen sich Deployment und Release voneinander entkoppeln.

Die vier Typen nach Pete Hodgson

Die verbreitete Einteilung stammt aus dem Artikel „Feature Toggles (aka Feature Flags)“ von Pete Hodgson auf martinfowler.com (2017):

  • Release-Toggles: neue Funktionen sind bereits ausgeliefert, werden aber erst zum gewünschten Zeitpunkt freigeschaltet.
  • Experiment-Toggles: steuern A/B-Tests und Messungen, etwa welche Variante Nutzer zu sehen bekommen.
  • Ops-Toggles: erlauben Betriebsteams, teure Sonderfunktionen oder kritische Pfade bei Problemen kurzfristig abzuschalten.
  • Permission-Toggles: geben Funktionen nur bestimmten Nutzergruppen oder Beta-Testern frei.

Vorteile und Risiken

Flags ermöglichen ein schrittweises Ausrollen wie beim Canary Deployment, ein sofortiges Zurückschalten ohne Re-Deploy und die parallele Entwicklung großer Änderungen auf dem Hauptzweig. Die Kehrseite ist technische Schuld: Flags, die nie entfernt werden, hinterlassen toten Code und veraltete Konfigurationen („Flag-Fatigue“). Sinnvoll ist daher ein klarer Lebenszyklus mit Verantwortlichkeit und regelmäßigem Aufräumen.

Umsetzung

Einfache Flags sind if-Abfragen gegen Konfigurationswerte; im Team-Betrieb kommen oft spezialisierte Dienste wie LaunchDarkly, Split oder Unleash zum Einsatz, die Flags zentral verwalten, ausrollen und auswerten. Feature Flags sind ein zentrales Werkzeug von Trunk-Based Development, weil sie lange Feature-Branches überflüssig machen.

Verwandte Grundlagen: CI/CD, Pipeline, Testing.