Feature Flags

Feature Flags trennen die technische Bereitstellung einer Funktion von ihrer kontrollierten Freischaltung.

Konfigurationsschalter, die es ermöglichen, Features im laufenden Betrieb ein- und auszuschalten – ohne neues Deployment. Ermöglichen Canary Releases, A/B-Tests und sofortige Rollbacks.

Fortgeschritten2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Features können im laufenden Betrieb aktiviert/deaktiviert werden – kein Deployment nötig
  2. Ermöglichen Trunk-Based Development: Code wird gemergt, aber noch nicht aktiviert
  3. Basis für Canary Releases, A/B-Tests und sofortige Rollbacks

Sofortantwort

Feature Flags einfach erklärt

Konfigurationsschalter zum Ein-/Ausschalten von Features ohne neues Deployment.

Kurz gesagt
Features können im laufenden Betrieb aktiviert/deaktiviert werden – kein Deployment nötig
Typischer Einsatz
Canary Release, A/B-Testing, Notfall-Rollback
Wichtig zu wissen
Basis für Canary Releases, A/B-Tests und sofortige Rollbacks

Feature Flags im Überblick

Traditionelles Deployment: Code schreiben → mergen → deployen → Feature ist live. Wenn etwas schiefläuft, braucht man einen Hotfix und ein neues Deployment – das dauert.

Feature Flags trennen Deployment von Release: Der Code wird deployt, aber das Feature ist zunächst deaktiviert. Wenn alles bereit ist, wird der Flag umgelegt – in Sekunden, ohne Deployment. Bei Problemen: Flag zurückschalten, sofort.

Deployment vs. Release:

Ohne Feature Flags:
  Code fertig → Deploy → Feature live (alles auf einmal)

Mit Feature Flags:
  Code fertig → Deploy (Flag = off) → Testen → Flag = on für 5% → Flag = on für 100%

Flag-Typen:

TypLebensdauerBeispiel
Release FlagKurzfristigNeues Dashboard ausrollen
Experiment FlagKurzfristigA/B-Test Prompt-Varianten
Ops FlagMittelfristigCache aktivieren/deaktivieren
Kill SwitchLangfristigNotfall-Deaktivierung
Permission FlagLangfristigBeta-Nutzer-Zugang

Technisch betrachtet

Einfache Implementierung

// flags.ts
const flags = await fetchFlags(userId);

if (flags.isEnabled('new-llm-model')) {
  return await callGPT4o(prompt);
} else {
  return await callGPT4oMini(prompt);
}

LaunchDarkly – Targeting

import * as LaunchDarkly from '@launchdarkly/node-server-sdk';

const client = LaunchDarkly.init(process.env.LD_SDK_KEY);
await client.waitForInitialization();

const user = {
  key: userId,
  email: userEmail,
  custom: { plan: 'pro', region: 'eu' },
};

// Flag mit Targeting: nur Pro-Nutzer in EU
const useNewModel = await client.variation('new-llm-model', user, false);

if (useNewModel) {
  return await callNewModel(prompt);
}

Unleash (Open Source, selbst gehostet)

from UnleashClient import UnleashClient

client = UnleashClient(
    url="https://unleash.example.com/api",
    app_name="ki-assistent",
    custom_headers={"Authorization": "Bearer <token>"},
)
client.initialize_client()

if client.is_enabled("new-rag-pipeline", {"userId": user_id}):
    result = new_rag_pipeline(query)
else:
    result = legacy_rag_pipeline(query)

Gradual Rollout

// 10% der Nutzer bekommen das neue Feature
const rolloutConfig = {
  flagKey: 'new-chat-ui',
  percentage: 10,          // Woche 1
  // percentage: 50,       // Woche 2
  // percentage: 100,      // Woche 3 – vollständiger Rollout
};

Schritt für Schritt

Funktionen kontrolliert aktivieren

Ein Flag ist ein temporäres Steuerungsinstrument. Es braucht einen klaren Zweck, sichere Zielgruppenregeln und ein Ende.

  1. Zweck und Eigentümer definieren

    Zweck

    Das Team legt fest, ob das Flag einem Release, Experiment, Notfallabschalten oder einer dauerhaften Berechtigung dient.

    flag -> ziel + owner + ablaufdatum
  2. Funktion deaktiviert bereitstellen

    Deployment

    Der Code wird ausgeliefert, bleibt aber zunächst für alle oder für definierte Gruppen ausgeschaltet.

    release mit flag = aus
  3. Gezielt freischalten

    Rollout

    Eine klare Regel aktiviert die Funktion für ausgewählte Personen, Segmente oder einen kleinen Traffic-Anteil.

    regel -> begrenzte zielgruppe
  4. Wirkung bewerten und aufräumen

    Abschluss

    Nach der Entscheidung wird das Flag entfernt oder bewusst als dauerhafte Betriebsregel dokumentiert.

    ergebnis -> ausrollen oder entfernen

Konkretes Beispiel

Ein neues Modell schrittweise aktivieren

Ein Team möchte eine neue Modellversion nur einem kleinen Teil der Anfragen zeigen.

Vollständiger Wechsel

Die neue Version wird für alle aktiviert. Bei einer Auffälligkeit muss ein neues Deployment vorbereitet werden.

Flag-gesteuerter Rollout

Das Flag begrenzt die neue Version zunächst auf eine kleine, klar definierte Gruppe. Bei Problemen kann sie sofort deaktiviert werden.

Feature Flags machen Experimente und Releases steuerbar, ersetzen aber keine Qualitätsprüfung vor dem Deployment.

Einordnung

Vorteile und Grenzen

Das spricht dafür

  • Schnelles Zurückschalten: Eine problematische Funktion kann ohne neues Deployment deaktiviert werden.
  • Gezielte Einführung: Neue Funktionen lassen sich für kleine Gruppen oder Anteile kontrolliert testen.
  • Trennung von Release und Deployment: Teams können technischen Code ausliefern, bevor die Produktfreigabe erfolgt.
  • Gute Experimentbasis: Varianten lassen sich über stabile Regeln an unterschiedliche Gruppen ausspielen.

Das solltest du beachten

  • Flags erzeugen Komplexität: Jede Kombination aktiver und inaktiver Schalter vergrößert den Testumfang.
  • Vergessene Flags werden technische Schuld: Temporäre Schalter brauchen Eigentümer und ein verbindliches Aufräumdatum.
  • Zielgruppenregeln sind sensibel: Unklare oder fehlerhafte Regeln können falsche Personen oder Daten betreffen.
  • Nicht jede Änderung passt: Datenmigrationen oder irreversible Effekte lassen sich nicht allein durch einen Schalter absichern.
Vertiefung · für Fortgeschrittene

Deployment und Produktfreigabe entkoppeln

Das Flag verbindet eine ausgelieferte Funktion mit einer Regel, die ihren tatsächlichen Einsatz kontrolliert.

Wissenskarte

Schalter für kontrollierte Freischaltung

Ein Flag schafft nur dann Sicherheit, wenn Ziel, Wirkung und Lebensdauer transparent kontrolliert werden. Feature Flag gliedert sich in: Funktionscode, Flag-Konfiguration, Zielgruppenregel, Rollout-Anteil, Monitoring, Entfernungstermin.

01Einsatzbereiche

Wann ist Feature Flags sinnvoll?

Geeignet für

  • Canary ReleaseNeues KI-Modell zunächst nur für 5% der Nutzer aktivieren – bei Problemen sofort zurückschalten
  • A/B-TestingZwei Prompt-Varianten für verschiedene Nutzergruppen testen ohne Deployment
  • Notfall-RollbackFehlerhaftes Feature in Sekunden deaktivieren – ohne Hotfix und Deployment
  • Beta-ProgrammeNeue Features nur für ausgewählte Nutzer oder Teams freischalten

↑ Inhalt

02Werkzeuge

Womit Feature Flags umgesetzt wird

↑ Inhalt

Merksatz

Feature Flags sind wie Lichtschalter in einem Haus

Das Kabel (Code) ist bereits verlegt, aber das Licht (Feature) geht erst an, wenn du den Schalter umlegt. Du kannst einzelne Zimmer beleuchten, ohne das ganze Haus neu zu verdrahten.

  1. Features können im laufenden Betrieb aktiviert/deaktiviert werden – kein Deployment nötig
  2. Ermöglichen Trunk-Based Development: Code wird gemergt, aber noch nicht aktiviert
  3. Basis für Canary Releases, A/B-Tests und sofortige Rollbacks

04Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

05FAQ

Häufige Fragen zu Feature Flags

Was ist der Unterschied zwischen Feature Flags und Environment Variables?

Environment Variables werden beim Start der Anwendung gesetzt und erfordern einen Neustart zum Ändern. Feature Flags können zur Laufzeit geändert werden – ohne Deployment oder Neustart. Außerdem unterstützen Feature Flags Targeting (nur für bestimmte Nutzer aktivieren), was Environment Variables nicht können.

Wie verhindere ich, dass Feature Flags zur technischen Schuld werden?

Feature Flags sollten temporär sein. Jedes Flag bekommt ein Ablaufdatum. Nach dem vollständigen Rollout wird der Flag-Code entfernt. Ein Flag-Inventar mit Eigentümer und geplantem Entfernungsdatum hilft. Langlebige Flags (Kill Switches, Ops Flags) sind Ausnahmen und sollten explizit als solche markiert sein.

Was sind die verschiedenen Typen von Feature Flags?

Release Flags: Neues Feature schrittweise ausrollen. Experiment Flags: A/B-Tests. Ops Flags: System-Verhalten steuern (z. B. Cache aktivieren). Permission Flags: Features für bestimmte Nutzergruppen. Kill Switch: Feature bei Problemen sofort deaktivieren.

↑ Inhalt

06Weiterlernen

Was möchtest du als Nächstes verstehen?

↑ Inhalt