Feature Flags (auch Feature Toggles, Feature Switches) sind ein Mechanismus, mit dem Codepfade zur Laufzeit aktiviert oder deaktiviert werden können, ohne ein neues Deployment durchzuführen. Im einfachsten Fall ist ein Feature Flag eine boolesche Konfiguration; in produktiven Lösungen kommen typisierte Werte, prozentuale Rollouts, Zielgruppen-Selektion (z. B. nach Land, Plan, Account-ID), Multivariate Tests und Audit-Trails hinzu. Werkzeuge wie LaunchDarkly, Unleash, Flagsmith, ConfigCat, Optimizely und Microsoft Azure App Configuration mit Feature Management bieten diese Funktionen als verwaltete Plattformen.
Eingesetzt werden Feature Flags für mehrere Zwecke: Trunk-Based Development mit kontinuierlich integriertem, aber nur teilweise aktiviertem Code; Canary Releases, bei denen ein neues Feature zunächst nur einem kleinen Prozentsatz der Nutzer angezeigt wird; A/B-Tests; Kill Switches zum schnellen Deaktivieren fehlerhafter Funktionen; Operations Toggles zur Lastverteilung und Notabschaltung; sowie Permission-basierte Toggles zur Differenzierung zwischen Plänen oder Mandanten in SaaS-Anwendungen.
Der Einsatzzweck und das gelöste Problem liegen in der Entkopplung von "Deployment" und "Release". Klassisch werden neue Features bei einem Deployment auch sofort sichtbar; ein Rollback heißt automatisch ein erneutes Deployment. Mit Feature Flags wird Code in kleinen Schritten deployed, aber erst sichtbar, wenn der zugehörige Toggle aktiviert wird. Damit lässt sich Risiko gezielt managen: Fehler in einem neu eingeführten Feature werden über das Deaktivieren des Toggles in Sekunden zurückgerollt, ohne dass ein Code-Rollback nötig ist.
Historisch gehören Feature Flags zu den ältesten Praktiken großer Internetfirmen. Flickr beschrieb 2009 in einem viel zitierten Blogpost ("Flipping Out") die intensive Nutzung von Toggles für kontinuierliches Deployment. Facebook prägte den Begriff "Gatekeeper" für sein internes Flag-System; Etsy, GitHub, Booking.com und Microsoft entwickelten ähnliche Werkzeuge. Pete Hodgson und Martin Fowler haben den Bereich 2017 in "Feature Toggles" (martinfowler.com) systematisch eingeordnet — mit Kategorien wie Release Toggles, Experiment Toggles, Ops Toggles und Permission Toggles, die bis heute Standardvokabular sind.
Facebooks Gatekeeper-System soll auf seinem Höhepunkt mehrere zehntausend aktive Flags gleichzeitig verwaltet haben — eine Größenordnung, die ohne diszipliniertes Aufräumen schnell zur "Toggle Debt" führt. Aus dieser Erfahrung stammt die Best Practice, jeden Toggle mit einem Eigentümer und einem geplanten Ablaufdatum zu versehen.
Bei bluehands setzen wir Feature Flags in mehreren Projekten ein, um die Risiken von Releases zu minimieren und die Flexibilität bei der Aktivierung neuer Funktionen zu erhöhen. Insbesonder die Integration von Feature Flags nativ in .NET vereinfacht diesen Prozess extrem.