Wie Sie veraltete Feature Flags verwalten können
Wenn Sie Feature Flags nicht bereinigen, kann dies ein Risiko für Ihre Codebasis darstellen. Erfahren Sie, wie der Feature Flags Removal Day zu einem besseren Feature Management führen kann. Feature Flags (auch bekannt als Feature Toggles) sind aus gutem Grund ein Goldstandard der agilen Softwareentwicklung und der kontinuierlichen Integration: Sie helfen den Teams, neue Features sicher und mit besserer Qualität an die Kunden zu liefern.


Wenn Sie Feature Flags nicht bereinigen, kann dies ein Risiko für Ihre Codebasis darstellen. Erfahren Sie, wie der Feature Flags Removal Day zu einem besseren Feature Management führen kann.
Feature Flags (auch Feature Toggles genannt) sind aus gutem Grund ein Goldstandard der agilen Softwareentwicklung und der kontinuierlichen Integration: Sie helfen Teams, neue Funktionen sicher und mit besserer Kontrolle an Kunden zu liefern. Wenn Sie schon einmal eine neue Funktionalität mit den Endbenutzern validieren, eine Änderung schnell wieder rückgängig machen oder einen A/B-Test für eine Funktion durchführenmussten, sind Sie vielleicht auch ein Fan von Feature Flags. Sie tragen dazu bei, das Risiko bei der Veröffentlichung von Funktionen und der Bereitstellung von Code zu verringern.
Aber als DevOps-Ingenieur kann Ihnen das Feature Flags Management auch Kopfzerbrechen bereiten. Wenn sie falsch verwaltet werden, kann es passieren, dass Ihre Codebasis mit alten, vergessenen Feature Flags übersät ist, die tatsächlich ein Risiko darstellen.
Ein Tag zum Entfernen von Feature Flags ist eine einfache und effektive Möglichkeit, Feature Flags verantwortungsvollzu verwalten .
Ein Feature Flag, dessen Aufgabe erledigt ist, sollte entfernt werden
Mit Feature Flags können Sie Ihren Code schnell und sicher ausrollen. Aber sobald Ihr Experiment abgeschlossen ist oder das Rollout vollständig und ohne die Möglichkeit eines Rollbacks durchgeführt wurde, sollte ein Ingenieur es als Erfolgsmethode für Feature Flags entfernen.
Wenn Sie dies nicht tun, besteht die Möglichkeit, dass Ihre Kunden die falsche Funktion oder eine Funktion, die die Codebasis verletzt, nutzen.
Abgesehen davon kann es schwierig sein, bei der Verwaltung von Feature Flags Prioritäten zu setzen, und die Eigentumsverhältnisse sind nicht immer klar. Sie können zwar Verfallsdaten für Ihre Feature Flags festlegen, aber die Entwickler können mit anderen Projekten überfordert sein, das Team verlassen oder einfach nur wiederholt sanft dazu angehalten werden, die Entfernung zu priorisieren. Der Feature Flag Removal Day kann Ihnen helfen, all dies zu vermeiden.
Warum ein Tag zum Entfernen von Feature Flags?
Der Feature Flag Removal Day ist ein Tag im Monat, an dem Entwickler ausschwärmen, um Feature Flags zu entfernen, die ihre Aufgabe erfüllt haben. Die Sitzung dauert in der Regel 4-6 Stunden - wir bestellen Donuts, um die Energie hoch zu halten! Bei Optimizely kommen einige Teams zusammen, um die Flaggen als Gruppe zu entfernen; andere beauftragen einen einzelnen Entwickler mit dieser Aufgabe.
Das Ziel ist nicht unbedingt, alle Flaggen während der Sitzung zu entfernen. Wir nutzen die Zeit, um abgelaufene Feature Flags zu prüfen, zu kontrollieren, ob die Ausstiegskriterien erfüllt sind, und Owner zuzuweisen.
Die Festlegung eines bestimmten Tages gibt den Entwicklern eine bestimmte Zeit, in der sie ausschwärmen, um die Pull Request-Änderungen zur Entfernung ihrer Feature Flags zu genehmigen.
Dies hat außerdem die folgenden Vorteile:
- Eine menschliche Prüfung: Sie können eine menschliche Überprüfung mit dem Product Owner einbauen, um sicherzustellen, dass jede Markierung auf der Liste entfernt werden soll.
- Sozialisierung der Feature Flags-Hygienepraxis: Wenn Sie zu viele Flaggen in Ihrer Codebasis belassen, kann dies zu technischen Schulden führen und die Codebasis brüchig machen. Ein öffentlichkeitswirksamer Tag kann Ihnen helfen, Ihr gesamtes Unternehmen für dieses Risiko zu sensibilisieren. Die regelmäßige Beschäftigung damit sollte Teil der Kultur Ihrer Entwicklungsteams werden.
- Leichter, zuverlässiger Prozess: Ersparen Sie sich das Hin und Her von Debatten über jede einzelne Markierung, die entfernt werden sollte, indem Sie eine Standardpraxis und einen festen Zyklus festlegen. Bei Optimizely vermeiden wir auf diese Weise die Angst, dass Feature Flags früherer Mitarbeiter wieder auftauchen und uns heimsuchen könnten.
- Klare, zeitlich begrenzte Verantwortung: Anstatt Ihre Entwickler für immer zum Eigentümer eines bestimmten Feature Flags zu machen, überlassen Sie dies dem Prozess. Weisen Sie am Tag der Entfernung von Feature Flags einem Entwickler die Verantwortung für die Entfernung dieser Flagge zu - Fall abgeschlossen.
- Transparenz: Informieren Sie Ihre gesamte Entwicklungsabteilung, dass bestimmte Feature Toggles entfernt werden. Dadurch verringert sich die Wahrscheinlichkeit, dass eine Markierung, die von einem Team verwendet wird, von einem anderen entfernt wird.
- Effiziente Nutzung der Zeit der Entwickler: Teilen Sie Ihren Entwicklern eine bestimmte Zeit zu, in der sie an der Entfernung ihrer Feature Flags arbeiten. Danach können sie sich wieder ihrer regulären Arbeit zuwenden.
Welche Flags sollten entfernt werden?
Ziel ist es, alle Feature Flags zu entfernen, die nicht mehr aktiv im Rahmen eines Experiments oder eines Rollouts verwendet werden.
An unserem ersten Feature Flag Removal Day bei Optimizely haben wir jede einzelne Flagge bewertet, die die folgenden Kriterien erfüllt:
Discover Why Forrester Recognized Optimizely as a Leader
- Flaggen, die vor 2019 erstellt wurden
- Flaggen, die seit 2019 nicht mehr aktualisiert wurden
- Flaggen, die kein spezifisches Targeting haben, d.h. sie sind für alle zugänglich
- Flaggen, die für 100% der Benutzer und 100% in der Produktionsumgebung ausgerollt werden
Wir haben 11 Flaggen identifiziert, die diese Kriterien erfüllen.
Wir haben mit den Product Ownern für jede Funktion gesprochen, um sicherzustellen, dass sie entfernt werden können. Wir fanden zwei, die nicht entfernt werden sollten (eine war ein Kill Switch, die andere behielt eine alte Funktion für bestimmte Kunden bei). Wir aktualisierten diese Flaggen mit einem Ausstiegskriterium und einem leeren Verfallsdatum.
Wir haben die verbleibenden neun untersucht.
Was wir fanden
Ein Teil des Codes war bereits entfernt worden, aber die Flaggen waren immer noch in unserem Feature Flagging System Dashboard aufgeführt. Wir haben diese archiviert und die Sache damit erledigt.
Einige Feature Flags waren schwieriger zu entfernen, da sie über die gesamte Codebasis verteilt waren und mehrere Entwickler aus verschiedenen Produktteams benötigten, um sie zu entfernen. Es dauerte länger als einen Tag und mehrere Code-Reviews, um diese zu entfernen.
Die meisten Flaggen konnten jedoch einfach und sauber entfernt werden.
Bonus: Die Praxis des Entfernens von Flaggen vermittelte den Entwicklern eine andere Sichtweise auf die Erfolgsmethoden für ihre Implementierung. Wenn man sie weiter oben in der Codebasis platziert und sie früher entfernt , lassen sie sich später leichter wieder entfernen.
Zukunftspläne für Feature Flags
Unsere Erfolgsmethoden für Feature Flags beinhalten jetzt ein Ausstiegskriterium und ein Verfallsdatum. Diese Markierungen helfen uns zu verwalten, wie und wann wir unsere Flaggen entfernen.
Das Ausstiegskriterium ist eine Bedingung, unter der die Feature Flags entfernt werden können. Wenn ein Flag beispielsweise zu 100 % für die Öffentlichkeit freigegeben wurde und keine größeren Fehler gemeldet wurden, kann es in 30 Tagen (dem Ablaufdatum) entfernt werden.
Wir legen dieses Ausstiegskriterium fest, wenn wir die Akzeptanzkriterien für ein Feature schreiben, als Vereinbarung zwischen:
- Entwickler: Der Ingenieur, der das Feature Flag implementiert.
- Product Owner: Der Projektmanager, der die Strategie für das Feature-Rollout festlegt, die anfänglichen Entfernungskriterien schreibt und das Feature den Kunden mitteilt.
- QA-Team: Die Prüfer, die sicherstellen, dass die Richtlinien korrekt ausgeführt wurden.
Unser Entfernungsprozess sieht wie folgt aus:
- Das QA-Team überprüft das Features Dashboard in Optimizely, um alle Flaggen zu identifizieren, die die Ausstiegskriterien erfüllt haben.
- Flaggen, deren Ablaufdatum vor dem nächsten Tag der Entfernung von Feature Flags liegt, werden in einem neuen Jira-Epos aufgeführt.
- QA markiert den Entwickler, der die Flagge implementiert hat, und lädt ihn zum nächsten Feature Flag Removal Day ein.
- Am Feature Flag Removal Day versammeln sich die Entwickler und schwärmen aus, um ihre Feature Flags zu entfernen und sie im Optimizely Features Dashboard zu archivieren.
Fazit
Wenn wir einmal im Monat einen Tag festlegen, an dem alle Feature Flags in der Codebasis regelmäßig überprüft werden, um sicherzustellen, dass nur die richtigen Flaggen aktiv sind, hat sich eine Praxis entwickelt. Dadurch hat unser Entwicklungsteam einen besseren Überblick über die Anzahl der im Umlauf befindlichen Flaggen und kann die laufenden Arbeiten (WIP) im Rahmen unseres agilen Produktmanagements und Entwicklungsprozesses messen. Indem wir unsere Feature Flags am Feature Flag Removal Day aktiv überprüfen, stellen wir sicher, dass Optimizely sicher und schnell Produkte veröffentlichen kann und die Codebasis sicher und sauber bleibt.
Wenn Sie mit dem Feature Management beginnen möchten, können Sie das kostenlose Feature Flaggingvon Optimizely für unbegrenzte Feature Flags und kontrollierte Rolloutsausprobieren .