Einführung in Feature Toggles

Abgeschlossen

Featureflags ermöglichen es Ihnen, die Funktionsweise unseres Systems zu ändern, ohne bedeutende Änderungen am Code vorzunehmen. Nur eine kleine Änderung der Konfiguration ist erforderlich. In vielen Fällen gilt diese auch nur für einige wenige Benutzer.

Featureflags bieten eine Lösung für die Notwendigkeit, neuen Code in den Trunk zu pushen und bereitzustellen, aber sie ist noch nicht funktionsfähig.

Die Flags werden in der Regel als Wert von Variablen implementiert, die bedingte Logik steuern.

Stellen Sie sich vor, Ihr gesamtes Team arbeitet im Trunkbranch einer Bankanwendung.

Sie haben beschlossen, dass es sich lohnt, die gesamte Arbeit im Hauptbranch zu erledigen, um spätere chaotische Vorgänge beim Merge zu vermeiden.

Dennoch müssen Sie sicherstellen, dass wesentliche Änderungen an den Zinsberechnungen möglich sind, denn die Benutzer verlassen sich jeden Tag auf diesen Code.

Schlimmer noch, die Änderungen werden Sie Wochen kosten. Sie können den Hauptcode für diesen Zeitraum nicht unbrauchbar lassen.

Ein Featureflag kann Ihnen helfen, dieses Problem zu umgehen.

Sie können den Code so ändern, dass andere Benutzer, die das Featureflag nicht gesetzt haben, den ursprünglichen Zinsberechnungscode verwenden.

Die Mitglieder Ihres Teams, die an den neuen Zinsberechnungen arbeiten und festlegen, dass das Featureflag angezeigt werden soll, verfügen über den neuen Zinsberechnungscode.

Dies ist ein Beispiel eines geschäftlichen Featureflags, das zur Bestimmung von Geschäftslogik verwendet wird.

Der andere Typ von Featureflag ist ein Releaseflag. Stellen Sie sich nun vor, dass Sie nach Abschluss der Arbeit am Code für die Zinsberechnung nervös sind, weil Sie einen neuen Code für alle Benutzer auf einmal veröffentlichen sollen.

Sie haben eine Gruppe von Benutzern, die besser mit neuem Code und Problemen umgehen können, wenn diese auftreten. Diese Leute werden oft „Canaries“ (Kanarienvögel) genannt.

Der Name geht auf den alten Einsatz von Kanarienvögeln in Kohlengruben zurück.

Sie ändern die Konfiguration so, dass für die Canary-Benutzer auch das Featureflag festgelegt ist, und sie beginnen, den neuen Code ebenfalls zu testen. Falls Probleme auftreten, können Sie das Flag für sie schnell wieder deaktivieren.

Ein anderes Releaseflag kann für AB-Tests verwendet werden. Angenommen, Sie möchten herausfinden, ob Benutzer eine Aufgabe dank eines neuen Features schneller erledigen können.

Sie können die Hälfte der Benutzer mit der ursprünglichen Version des Codes und die andere Hälfte mit der neuen Version arbeiten lassen.

Sie können dann das Ergebnis direkt vergleichen und entscheiden, ob es sich lohnt, das Feature beizubehalten. Featureflags werden mitunter auch als „Feature Toggles“ bezeichnet.

Dadurch, dass wir neue Features verfügbar machen, indem wir zur Laufzeit „einfach einen Schalter umlegen“, können wir neue Software bereitstellen, ohne dem Endbenutzer neue oder geänderte Funktionen zur Verfügung zu stellen.

Die Frage ist, welche Strategie Sie beim Freigeben eines Features für einen Endbenutzer umsetzen möchten.

  • Freigeben des Features für ein Segment von Benutzern, damit Sie sehen können, wie das neue Feature angenommen und genutzt wird
  • Freigeben des Features für einen zufällig ausgewählten Prozentsatz der Benutzer
  • Freigeben des Features für alle Benutzer gleichzeitig

Die unternehmensbesitzende Person spielt eine wichtige Rolle im Prozess, und Sie müssen eng mit ihr zusammenarbeiten, um die richtige Strategie zu wählen.

Wie bei allen anderen in der Einleitung erwähnten Bereitstellungsmustern kommt es stets darauf an, wie sich das System verhält.

Die Idee, das Bereitstellen von Features vom Verfügbarmachen von Features zu trennen, ist überzeugend und etwas, das wir in unser Continuous-Delivery-Verfahren aufnehmen möchten.

Es hilft uns dabei, stabilere Versionen zu entwickeln und bessere Möglichkeiten zu finden, um ein Rollback durchzuführen, wenn wir auf Probleme mit einem neuen Feature stoßen.

Wir schalten es wieder aus und erstellen dann ein Hotfix. Indem Sie die Bereitstellung von der Freigabe eines Features trennen, haben Sie die Möglichkeit, die Software jederzeit freizugeben, da die neue Software keine Auswirkungen auf das bereits funktionierende System haben wird.

Was sind Feature Toggles?

Feature Toggles werden auch als Featureflags, Featureschalter, bedingte Features usw. bezeichnet.

Neben der Leistungsfähigkeit, die sie Ihnen auf geschäftlicher Seite verschaffen, bieten sie auch einen Vorteil auf Entwicklungsseite.

Feature Toggles sind auch eine gute Alternative zum Branchen. Branchen ist das, was wir in unserem Versionskontrollsystem tun.

Um Features isoliert zu halten, unterhalten wir einen eigenen Branch.

Wenn wir die Software in der Produktion einsetzen möchten, führen wir sie mit dem Releasebranch zusammen und stellen sie bereit.

Mit Feature Toggles entwickeln Sie neue Features mit einem Schalter. Ihr Feature ist „Aus“, wenn ein Release stattfindet und es nicht für die Produktionssoftware verfügbar gemacht werden oder diese beeinflussen soll.

Implementieren eines Feature Toggles

In der reinsten Form ist ein Feature Toggle eine IF-Anweisung.

Feature Toggle.

Wenn der Schalter „Aus“ ist, wird der Code in der IF-Anweisung, andernfalls der in der ELSE-Anweisung ausgeführt.

Sie können den Code wesentlich intelligenter gestalten, indem Sie die Feature Toggles über ein Dashboard steuern oder Funktionen für Rollen, Benutzer usw. entwickeln.

Wenn Sie Feature Toggles implementieren möchten, stehen verschiedene Frameworks als kommerzielle oder Open-Source-Lösung zur Verfügung.

Weitere Informationen finden Sie auch unter Erkunden, wie Sie Ihre Features für einige oder alle Benutzer progressiv in der Produktion verfügbar machen.