Feature Flags

Feature Flags sind eine Softwareentwicklungstechnik, die bestimmte Funktionen zur Laufzeit ein- und ausschaltet, ohne neuen Code bereitzustellen.

Was sind Feature Flags?

Feature Flags (auch bekannt als Feature Toggles oder Feature Switches) sind eine Technik der Softwareentwicklung und Produktexperimentierung, die Funktionen zur Laufzeit steuert, ohne neuen Code bereitzustellen. Dies ermöglicht eine bessere Kontrolle und mehr Produktexperimentierung über den gesamten Lebenszyklus von Funktionen.

Während einfache Feature Flags als einfache Ein/Aus-Schalter funktionieren, bieten moderne Feature-Flag-Systeme wie FX weitaus ausgefeiltere Möglichkeiten, die einem „Crawl, Walk, Run”-Ansatz folgen:

  1. Crawl (Einfache Ein/Aus-Schalter): In ihrer einfachsten Form bestimmen Feature Flags, ob Code ausgeführt wird. Ist das Flag „an”, wird neuer Code ausgeführt; ist es „aus”, wird der Code übersprungen.
  2. Walk (Dynamische Parametersteuerung): Anstatt Verhalten mit If-Else-Anweisungen fest zu kodieren, ermöglicht die SDK-Methode „decide” von FX einen parametrisierten Ansatz. Damit können verschiedene Aspekte einer Funktion über die FX-Benutzeroberfläche optimiert werden, ohne Codeänderungen vornehmen zu müssen.
  3. Run (Experimentieren und Optimierung): Mit dem Flag-First-Ansatz von FX erhält man durch die Implementierung des Flags und das Tracking von Ereignissen für Feature-Releases Experimentierungsfähigkeiten ohne zusätzliche Entwicklungsarbeit. Dazu gehören A/B-Tests und KI-gestützte Optimierungen.

Feature Flags ermöglichen die Bereitstellung neuer Funktionen, ohne sie sofort für alle Nutzer sichtbar zu machen, oder das Sichtbarmachen von Funktionen nur für bestimmte Nutzergruppen und Umgebungen. Dieser Ansatz gilt oft als Erfolgsmethode in DevOps und bietet eine beispiellose Kontrolle über den Feature-Lebenszyklus.

So nutzt das Optimizely-Team Feature Flags.

Wie funktionieren Feature Flags?

Feature Flags sind im Wesentlichen bedingte Anweisungen in Ihrem Code, die steuern, ob bestimmte Funktionen oder Codeblöcke ausgeführt werden. Hier eine einfache Erklärung:

  1. Bedingte Verzweigungen: Entwickler fügen If/Else-Anweisungen im Code ein, wo neue Funktionen implementiert werden.
  2. Flag-Status: Jedes Feature Flag hat einen Status (an oder aus), der extern gesteuert werden kann, oft über eine Konfigurationsdatei oder eine Verwaltungsoberfläche.
  3. Code-Ausführung: Der neue Funktionscode wird ausgeführt, wenn der Flag-Status „an” ist. Ist das Flag „aus”, wird der Code umgangen und das alte Verhalten (oder kein Verhalten) bleibt bestehen.

So können Teams neuen Code in die Produktion bringen, Funktionen aber verborgen halten, bis sie bereit zur Veröffentlichung sind – ohne zusätzliche Code-Deployments.

Bei der Implementierung von Feature Flags gibt es mehrere Rollout-Strategien zu berücksichtigen, die jeweils unterschiedlichen Zwecken dienen:

  • Stufenweise Rollouts: Schrittweise Freigabe mit steigenden Nutzerprozentzahlen
  • Canary-Test: Begrenzte Freigabe für eine kleine, repräsentative Gruppe
  • Gezielte Rollouts: Freigabe für bestimmte Nutzersegmente (z. B. nach Standort)
  • Beta-Testing: Freigabe für Opt-in-Nutzer für Feedback
  • Dark Launches: In der Produktion aktivieren, aber vor Nutzern verbergen
  • Prozentuale Rollouts: Schrittweise Erhöhung der Nutzerexposition

Diese Strategien können kombiniert werden, um einen maßgeschneiderten Rollout-Plan zu erstellen, der mit Ihren Zielen und Ihrer Risikobereitschaft übereinstimmt.

Anwendungsfälle und Vorteile von Feature Flags

Es gibt viele Vorteile, wenn man Produktexperimentierung und Feature Toggles in seinen Release-Prozess integriert. Im Folgenden finden Sie einige häufige Anwendungsfälle:

  1. Testen in der Produktion

    Feature Flags ermöglichen es Entwicklungsteams, neue Funktionen in der Produktion zu testen, während das Risiko eines schlechten Releases durch die Möglichkeit eines schnellen Rollbacks über einen Kill-Switch minimiert wird. Da es oft unmöglich ist, die Produktionsumgebung in der Staging-Umgebung vollständig zu simulieren, erlauben Feature Toggles die Validierung neuer Feature-Releases in der realen Welt bei minimalem Risiko. Feature Flags fördern auch die Trunk-Based Development, was Merge-Konflikte aus abweichenden Code-Pfaden verhindert.
  2. Canary Releases

    Ein weiterer Anwendungsfall für Feature Toggles ist die Möglichkeit für ein Team, eine neue Funktion an einer Untergruppe von Endnutzern zu testen, um zu sehen, wie sie sich bewährt, bevor sie für ein breiteres Publikum ausgerollt wird. Canary-Test hilft, das Risiko der Einführung einer Funktion für die gesamte Nutzerbasis zu begrenzen, und ermöglicht einen schnellen Rollback einfach durch Umschalten der Funktion, anstatt einen weiteren Deploy-Zyklus durchlaufen zu müssen.
  3. Schnellere Release-Zyklen

    Mit Feature Flags kann ein Team das Verhalten eines Systems ändern, ohne störende Codeänderungen am Live-Code vorzunehmen. Ein wesentlicher Vorteil von Feature Flags ist daher ihre einfache Bereitstellung im Entwicklungsprozess. Feature Flags entkoppeln das Feature Lifecycle Management von der Code-Bereitstellung und befreien das Engineering-Team für andere Aufgaben.
  4. Rollback / Kill-Switch

    Das Aktivieren oder Deaktivieren neuer Funktionen mit Feature Flags ist so einfach wie das Umschalten oder Bearbeiten einer Konfigurationsdatei, ohne erneut deployen und einen langen Code-Push durchlaufen zu müssen. Wenn ein Fehler in einer neuen Funktion entdeckt wird, kann sie sofort zurückgerollt werden, ohne den Quellcode anfassen zu müssen. Dies kann besonders für mobile App-Entwickler nützlich sein, die Feature Flags verwenden können, um neue Funktionen zu veröffentlichen oder zurückzurollen, ohne den langen App-Store-Überprüfungsprozess durchlaufen zu müssen.
  5. Server-seitiges A/B-Testing

    Entwickler können A/B-Tests mithilfe von Feature Flags implementieren, indem sie eine Funktion für die Hälfte eines Nutzersegments aktivieren und für die andere Hälfte deaktivieren und sehen, wie die beiden für eine bestimmte Kennzahl (z. B. App-Nutzung oder Käufe) abschneiden. Da der Test im Backend durch Code implementiert wird, gibt es keine Latenz, verglichen mit einem Test, der über clientseitiges JavaScript implementiert wird.

    Feature Flags ermöglichen es Product Managern und anderen Nicht-Entwicklern auch, verschiedene Funktionen in Produkten oder Systemen A/B-zu-testen, ohne Code-Deployment. Tests können auch auf bestimmte Segmente Ihrer Nutzerbasis abgezielt werden, zum Beispiel Nutzer, die in einem bestimmten Land leben oder einem bestimmten Nutzerprofil entsprechen. Führende Technologieunternehmen wie Google, Facebook, Amazon und Netflix testen neue Funktionen häufig per A/B-Test, bevor sie sie für ihre gesamte Nutzerbasis bereitstellen.
  6. Feature Gating

    Feature Flags können verwendet werden, um gezielte Rollouts von Funktionen für eine bestimmte Untergruppe Ihrer Nutzer zu implementieren. Dies kann für A/B-Tests von Funktionen mit bestimmten Segmenten Ihrer Zielgruppe nützlich sein, kann aber auch verwendet werden, um Funktionen nur für eine Untergruppe Ihrer Nutzer freizugeben, zum Beispiel um Nutzern in Ihrem Enterprise-Tier Zugang zu Funktionen zu gewähren, die in niedrigeren Tiers nicht verfügbar sind. Die Implementierung von Feature Gating mit Flags ermöglicht es Ihnen, Funktionen in Zukunft einfach für mehr Nutzer freizugeben, wenn sich Ihr Produkt weiterentwickelt.
  7. Continuous Deployment

    Ein weiterer wesentlicher Vorteil von Feature Flags ist ihre Fähigkeit, schnelles Lernen zu ermöglichen. Feature Flagging ermöglicht es Unternehmen, Software schneller kontinuierlich an ihre Nutzer zu liefern und zu deployen. Die Verwendung von Feature Flags ermöglicht es Unternehmen, schrittweise Feature-Rollouts durchzuführen, Fehler im Code ohne erneutes Deployment zu beheben, einen optimierten Entwicklungszyklus zu erleben und Code-Rollbacks einfacher durchzuführen.
  8. Feature-Flag-Entwicklungsprozess

    Die Implementierung von Feature Flags in Ihrem Code muss kein komplizierter Prozess sein. Mit einem Feature-Flag-Dienst wie Optimizely müssen Sie lediglich das SDK installieren, die Flags innerhalb der Feature-Flag-Plattform erstellen und dann neue Funktionen oder Code-Pfade in Ihrem Code innerhalb der Flags einschließen.

    Das ist alles, was nötig ist, um Feature Flags zu aktivieren, und jetzt kann die neue Funktion über eine Konfigurationsdatei oder sogar über eine visuelle Oberfläche innerhalb der Feature-Flagging-Plattform ein- oder ausgeschaltet werden. Dies kann nicht-technischen Nutzern wie Product Managern ermöglichen, Experimente zu neuen Funktionen durchzuführen oder Funktionen abzuschalten, ohne ausschließlich auf das Entwicklungsteam angewiesen zu sein.

    Sobald Feature Flags live sind, ist Feature-Flag-Management ein weiterer wichtiger Aspekt. Um die technischen Schulden durch Feature Flags, die nach Erfüllung ihres Zwecks im Code verbleiben, zu vermeiden, ist es wichtig, Flags regelmäßig zu überprüfen und diejenigen zu entfernen, die nicht mehr benötigt werden. Dieser Prozess kann in vielen Feature-Flagging-Plattformen automatisiert werden.
  9. Feature Flags & Continuous Delivery

    Die von dem einflussreichen Softwareentwickler Martin Fowler propagierte Continuous Delivery ist eine Softwareentwicklungsdisziplin, bei der Software jederzeit in die Produktion überführt werden kann. Sie wurde von führenden Softwareunternehmen weltweit übernommen, deren Teams nun erwartet wird, dass sie schnell stabile und fehlerfreie Software an ihre Nutzerbasis liefern.

    Feature Flagging verbessert CI/CD, indem es „kontinuierlich” erreichbarer macht. Die Feature Flags und Feature Toggles sind eine Schlüsselkomponente der Implementierung von Continuous Delivery und ermöglichen die Trennung von Feature-Rollout und Code-Deployment. Unfertige Funktionen können in die Produktionscode-Basis eingebracht, aber hinter Feature Flags verborgen werden.

    Mit Continuous Delivery und Feature-Flag-Management kann ein Team seine Funktionen in großem Maßstab starten, steuern und messen.
  10. KI-Feature-Entwicklung

    Feature Flags ermöglichen eine agile Entwicklung von KI-Funktionen, indem sie steuern, welche Modelle verwendet und wie sie konfiguriert werden, ohne Codeänderungen. Dies hilft Teams, sich im Jahr 2025 schnell anzupassen, Modelle zu wechseln, Parameter anzupassen und KI-Funktionen schrittweise einzuführen, um Qualität zu gewährleisten.
  11. Entkopplung von Deployment und Release

    Feature Flags trennen Code-Deployment von der Feature-Freigabe und ermöglichen sicherere, häufigere Deployments. Wenn Funktionen mehrere Teams mit unterschiedlichen Zeitplänen erfordern, können abgeschlossene Arbeiten zusammengeführt und hinter Flags verborgen werden, während andere Teams weiterentwickeln. Dies reduziert Merge-Konflikte aus verzögerten, massiven PRs und ermöglicht es, Funktionen unabhängig zu aktivieren, wenn sie bereit sind. Das Ergebnis ist eine schnellere Entwicklung und verbesserte Stabilität.

Feature-Flag-Lebenszyklus

1. Feature Flags erstellen und konfigurieren:

  • Das Flag in Ihrer Code-Basis definieren
  • Das Flag in Ihrem Feature-Management-System einrichten
  • Erste Regeln und Targeting-Kriterien konfigurieren

2. Flags in der Produktion deployen und aktivieren:

  • Code mit dem neuen Feature Flag in die Produktion überführen
  • Das Flag für erste Zielgruppen oder einen Prozentsatz der Nutzer aktivieren

3. Performance überwachen und Analysen sammeln:

  • Nutzerinteraktionen mit der neuen Funktion verfolgen
  • Auswirkungen auf Schlüsselkennzahlen analysieren (z. B. Conversion Rate, Nutzer-Engagement)
  • Feedback von Nutzern sammeln, die der Funktion ausgesetzt sind

4. Flags bei Nichtbedarf einstellen und entfernen:

  • Sobald eine Funktion vollständig freigegeben oder eingestellt ist, das Flag entfernen
  • Zugehörigen Code bereinigen, um technische Schulden zu vermeiden
  • Dokumentation aktualisieren, um Änderungen widerzuspiegeln

Feature Flags vs. Konfigurationsdateien

Obwohl Feature Flags Konfigurationsdateien ähneln mögen, bieten sie erhebliche Vorteile. Konfigurationsdateien erfordern in der Regel manuelle Bearbeitung und erneutes Deployment, um Einstellungen zu ändern (ein Prozess, der auf Entwickler beschränkt ist), während Feature Flags zur Laufzeit ausgewertet werden. Mit einer Feature-Management-Plattform können Sie einen Schalter umlegen und das Verhalten sofort ändern, ohne erneut zu deployen oder Ihre Anwendung neu zu starten.

Darüber hinaus erfordern Konfigurationsdateien ein Self-Hosting, das in großem Maßstab riskant und teuer wird. Opti hostet Datendateien auf einem CDN für schnelle Lesevorgänge und konsistente Verfügbarkeit. Feature Flags ermöglichen auch präzises Targeting und Kontrolle, sodass Sie spezifische Änderungen für spezifische Zielgruppen basierend auf Nutzerattributen, Segmenten oder Prozentwerten ausrollen können, im Gegensatz zu Konfigurationsdateien, die als grobe Ein/Aus-Schalter für alle Nutzer wirken.

Feature Flags und technische Schulden

Da Feature Flags innerhalb einer Organisation immer häufiger eingesetzt werden, können sie potenziell technische Schulden verursachen, wenn sie nicht ordnungsgemäß verwaltet werden. Diese „Flag-Schulden” entstehen, wenn Ihre Code-Basis mit Flags und alten Code-Pfaden überladen wird, die nicht mehr nützlich sind, weil Funktionen vollständig ausgerollt wurden.

Erfolgsmethoden für die Verwaltung von Feature-Flag-Schulden umfassen:

  • Klare Namenskonventionen verwenden, die den Zweck und die erwartete Lebensdauer von Flags angeben
  • Aktive Flags regelmäßig überprüfen und die zuletzt geänderten Daten prüfen, um veraltete zu identifizieren
  • Den Zweck und den erwarteten Entfernungszeitraum jedes Flags dokumentieren
  • Bereinigungsprozesse wo möglich automatisieren
  • Dedizierte Zeit für die Flag-Bereinigung in Ihre Entwicklungszyklen einplanen
  • SDK-Benachrichtigungs-Listener verwenden, um Ereignisse bei Entscheidungs- oder Conversion-Ereignissen an Drittanbietersysteme zu senden

Feature Flags in Optimizely Feature Experimentation

Optimizely Feature Experimentation bietet leistungsstarke Feature-Management-Funktionen, die die Zusammenarbeit von Produkt- und Engineering-Teams transformieren. Diese Lösung bringt die gleiche Flexibilität, auf die Produktteams für das Experimentieren setzen, in den Feature-Deployment-Prozess und ermöglicht es Teams, Hypothesen vor vollständigen Markteinführungen zu validieren.

Mit Optimizely können Engineering- und Produktteams gemeinsam mit Continuous-Integration- und Continuous-Delivery-Praktiken arbeiten.

Organisationen profitieren von beschleunigten Entwicklungszyklen und gleichzeitiger Risikominimierung durch strategische Feature-Flag-Implementierung.

Dem Ansatz von Branchenführern wie Amazon, Google und Facebook folgend ermöglicht Optimizelys Omnichannel-Experimentierplattform Teams:

  • Neue User Experiences zu entwickeln
  • A/B-Tests zur Identifizierung optimaler Variationen durchzuführen
  • Feature Flags zur Steuerung des Rollouts zu verwenden

Durch das anfängliche Testen von Funktionen mit kleinen Traffic-Segmenten können Teams sicher feststellen, ob neue Funktionen die User Experience wirklich verbessern, bevor sie breiter eingesetzt werden.

Für Teams, die eine einfachere Lösung suchen, bietet Optimizely Rollouts vollständig kostenlose Feature Flags, im Gegensatz zu Wettbewerbern wie LaunchDarkly. Rollouts unterstützt beliebte Programmiersprachen und Frameworks über GitHub SDKs, einschließlich Node.js, Python, Ruby, Go, React, Swift und C#.

Erste Schritte mit Feature Flags

Berücksichtigen Sie die folgenden Schritte:

  • Ziele definieren: Definieren Sie, was Sie mit Feature Flags erreichen möchten (schnellere Releases, sicherere Deployments, Feature Management usw.)
  • Ansatz wählen: Entscheiden Sie, ob Sie eine selbst entwickelte Lösung aufbauen, Open-Source-Tools verwenden oder eine umfassende Feature-Experimentierungsplattform einsetzen möchten.
  • Klein anfangen: Beginnen Sie mit einigen wenigen kritischen Funktionen, bevor Sie Ihre Nutzung ausweiten.
  • Team schulen: Stellen Sie sicher, dass Entwickler wissen, wie Feature Flags zu implementieren sind und dass Product Manager wissen, wie sie zu verwenden sind.
  • Governance etablieren: Erstellen Sie Prozesse für Flag-Erstellung, -Testing, -Rollout und -Bereinigung.
  • Auswirkungen messen: Verfolgen Sie, wie Feature Flags Ihre Entwicklungsgeschwindigkeit, Release-Qualität und Geschäftskennzahlen beeinflussen.

Bereit, mit Feature Flags zu experimentieren?

Optimizely Feature Experimentation kann Ihnen helfen, Feature Flags zu implementieren, Experimente durchzuführen und Funktionen mit Zuversicht bereitzustellen. Alles, was Sie benötigen, um den gesamten Feature-Lebenszyklus zu verwalten, von der Entwicklung über den Release bis hin zur Messung.

Optimizely Feature Experimentation entdecken →