Feature Flags / Feature Toggles

Foto von Sohrab Salimi
Sohrab Salimi
3 Min. Lesezeit

Feature Flagging bezeichnet in der Softwareentwicklung das Ein- und Ausschalten von in der Entwicklung befindlichen Software-Funktionen oder Features zur Laufzeit.

Damit beschreiben Feature Flags eine Programmiertechnik, über die du mit deinem Team noch schneller und sicherer Software ausliefern und teamübergreifend integrieren kannst. Da ein zeitlich unabhängiges Deployment von Anwendungen eine immer häufigere Anforderung ist, bieten Feature Flags dafür eine passende Lösung. Zudem helfen die Flags dabei, die Arbeitsabläufe eines Entwickler-Teams zu optimieren.

Synonym verwendete Begriffe für Feature Flags und Feature Flagging sind:

  • Feature Toggles / Feature Toggling
  • Feature Switches
  • Feature Flippers
  • Feature Bits
  • Conditional Features (in Zusammenhang mit User Targeting)

Ziele und Vorteile von Feature Flags im Detail

Dank Feature Flags können du und dein Team:

  • schneller und damit sukzessive Software bereitstellen und neue Funktionen für den Kunden ausrollen (Continuous Integration und Continuous Delivery werden schneller und einfacher)
  • neue Features teamübergreifend integrieren
  • neue Anforderungen auf produktiver Umgebung testen (ohne, dass Kunden es mitbekommen)
  • bereits entwickelte Features nur für bestimmte Nutzergruppen freigeben
  • durch regelmäßiges Testen nach und nach Funktionalität und UX verbessern
  • Anwendungen im Betrieb stabil halten durch das Abschalten fehlerhafter Funktionen
  • zeitaufwendige Bugfix-Deployments minimieren
  • Software Releases und Deployment von Anwendungen voneinander entkoppeln
  • große und damit riskante Deployments vermeiden, indem öfter mit dem Haupt-Branch gemerged wird anstatt selten lange Feature Branches zu mergen
  • flexibel auf Anforderungsänderungen von Kunden reagieren ohne zusätzliches Deployment

Wann und wie werden Feature Flags angewendet?

In der Praxis bleiben oft fertig entwickelte Features liegen, da sie noch nicht produktiv eingesetzt werden dürfen. Die jeweiligen Feature-Branches dürfen dann noch nicht gemerged werden.

Dank Feature Toggles / Flags kann finalisierter Code sofort zusammengeführt und deployed werden, so dass die neuen Funktionen im Hintergrund schon vorhanden sind, ohne sichtbar zu sein. Das verhindert, dass es zu massiven Problemen beim späteren Mergen kommt, wenn in der Zwischenzeit an anderen Teilen der Software weitergearbeitet wurde.

Der Einsatz von Feature Flags lohnt sich zusätzlich in folgenden Anwendungsfällen:

  • Continuous Integration und Continuous Delivery (CI / CD)
  • Kill-Switch
  • A/B Tests mit Kunden in der Produktivumgebung
  • Konfigurationsmanagement
  • Berechtigungssteuerung in der Anwendung
  • Prozentualer Rollout von Funktionen

Es gibt dabei 3 Arten, Feature Flags zu implementieren:

  1. Feature Toggles direkt in den Code implementieren
  2. Integration über eine Konfigurationsdatei (config)
  3. Einbindung über eine Feature Flag Management Software

Tipps:

Um die Komplexität des Codes so gering wie möglich zu halten, sollten du und dein Team:

  • Feature Flags möglichst sparsam einsetzen
  • nicht mehr genutzte Flags aus dem Software Lifecycle entfernen

4 Arten von Feature Flags

Je nachdem, wie lange Feature Flags im Code verbleiben sollen und welche Aufgabe sie haben, kann man sie in die folgenden 4 Kategorien einteilen:

Release Toggle

Release Toggles ermöglichen ein Code Deployment von ungetesteten und unvollständigen Code auf der produktiven Umgebung, ohne den Code zu aktivieren. Auf diese Weise können z. B. Produktmanager neue Funktionen nach Bedarf freischalten.

Experiment Toggle

Mit Experiment Toggles lässt sich das benutzerspezifische Verhalten innerhalb einer Anwendung steuern. Zu diesem Zweck werden die Nutzer innerhalb des Software Systems identifiziert, um sie dann gezielt zu steuern. Auf diese Weise können neue Funktionen schnell an bestimmten Personengruppen getestet werden, um Rückschlüsse in die weitere Entwicklung einfließen zu lassen.

Ops Toggle

Über Ops Toggles können Betriebsteams den Anwendungsbetrieb über Feature Toggles steuern. Das ermöglicht schnelle Rollbacks von Funktionen und das Erproben der Systemlast neuer Funktionen an kleinen Gruppen. Zusätzlich erlauben Ops Toggles, nicht notwendige Funktionen im Betrieb zu deaktivieren ("Kill-Switches").

Permission Toggle

Über Permission Toggles lässt sich das benutzerspezifische Verhalten bekannter User innerhalb einer Anwendung steuern. Beispielsweise kannst du über diese Toggles Funktionen für VIP- oder Premium-Kunden freischalten. A/B Tests stellen eine weitere Anwendungsmöglichkeit dar.

Fazit zu Feature Toggles / Flags

Feature Toggles bzw. Flags unterstützen Teams dabei, neue Funktionen und Features schneller und leichter auszuliefern, zu integrieren und zu testen.

Verschiedene Toggle Arten dienen dabei unterschiedlichen Zielen, wie das Testen neuer Funktionen an kleinen Gruppen, das Freischalten spezifischer Berechtigungen oder das Prüfen von Systemlast. Feature Flags und Toggles können ganze Bereiche einer Software ein- oder ausblenden oder nur kleine Code-Blöcke steuern. Da sie sowohl am Backend, Frontend und applikationsweit eingesetzt werden können, sind sie flexibel nutzbar.

Wichtig: Sobald Feature Flags nicht mehr im Code benötigt werden, solltest du bzw. dein Team diese wieder entfernen. Auf diese Weise verhinderst du, dass der Code zu komplex wird.

Mehr zu diesem Thema

Lean Software Development (LSD)

Lean Development oder schlanke Entwicklung konzentriert sich auf die Reduzierung von Waste und Verschwendung. Wie es funktioniert, erklären wir im Lexikon!

Was bedeutet Velocity für dein Team? - Definition und wie du sie berechnen kannst!

Erfahren Sie, was Velocity im Kontext von Scrum bedeutet und wie es Ihrem Team helfen kann, die Leistung zu optimieren.

Mission & Vision: So formulierst du dein Mission-Statement

Unterschiede zwischen Mission und Vision, Bedeutung für Organisationsentwicklung. Besuchen Sie Agile Academy für mehr Infos.