Was ist ein "Feature Flag Toggle" und wann werden sie verwendet (oder nicht)?

17

Es gibt einige Fragen zu feature flag toggles:

Meine Fragen :

  • Was ist eigentlich ein "Feature Flag Toggle" (im Kontext von DevOps)?
  • Warum werden sie verwendet?
Pierre.Vriens
quelle
3
Referenzinfo, keine direkte Antwort - martinfowler.com/articles/feature-toggles.html
Ken Mugrage
1
Ich weiß, dass es nicht allgemein akzeptiert wird, nach Downvote-Erklärungen zu fragen. Aber wer diese Frage anonym runtergestimmt hat, weiß einfach, dass solche Downvotes für mich wertlos sind, da diese Downvotes billig sind (der Downvoter verliert dabei nicht -1). Anonyme Abstimmungen von Antworten sind jedoch unterschiedlich ... ein solcher Abstimmer hinterlässt eine Spur ...
Pierre.Vriens
2
Und ich würde wirklich gerne wissen, warum jemand der Meinung ist, dass diese Frage wegen "zu weitem" geschlossen werden sollte, obwohl dies tatsächlich eine großartige Frage ist, die gute Antworten verdient.
Evgeny
Merci @Evgeny, es sieht so aus, als wären wir auf derselben Seite ... aber haben Sie bemerkt, dass 1 enge Abstimmung zurückgezogen wurde? Möglicherweise wegen meiner letzten Bearbeitung.
Pierre.Vriens

Antworten:

13

Ohne den Inhalt von https://martinfowler.com/articles/feature-toggles.html zu wiederholen , da es eine erstaunliche ausführliche Erklärung darüber gibt, was das Umschalten von Feature-Flags ist. Ich werde mich nur auf die DevOps-Aspekte konzentrieren.

Laut dem 2014 von PuppetLabs erstellten State of DevOps-Bericht gibt es vier wichtige Metriken, um die IT-Leistung zu messen:

  • Vorlaufzeit für Änderungen
  • Frequenz freigeben
  • Es ist Zeit, den Dienst wiederherzustellen
  • Fehlerrate ändern

Diese tragen auch zur Gesamtleistung der Organisation bei. Das bedeutet, dass Ihre IT-Abteilung mehr Geld verdient, wenn sie diese Kennzahlen optimal nutzt.

Continuous Delivery wird durch diese Metriken aktiviert und im Buch Continuous Delivery: Zuverlässige Softwareversionen durch Build-, Test- und Deployment-Automatisierung von Jez Humble ausführlich beschrieben .

Im Zusammenhang mit Continuous Delivery , gibt es eine wichtige Unterscheidung , die es von unterscheidet Continuous Deployment . Und das ist die Entscheidung, wann eine Freigabe von Funktionen (an Kunden) erfolgen soll.

Durch das Verringern der Größe von Änderungen und das Bereitstellen (Kopieren von Code) von halbgebackenen Features auf Produktionssystemen, bei denen das Feature-Flag deaktiviert ist , kann die Vorlaufzeit für Änderungen verkürzt werden .

Wenn Merkmale endlich fertig sind, eine tun Veröffentlichung ist eine Entscheidung für das Geschäft verlassen. Möglicherweise muss eine Veröffentlichung eines neuen Features mit einem gewissen Marketing abgeglichen werden, oder eine Veröffentlichung in einem anderen Teil des Geschäfts wie ein Feature in der mobilen App.

Funktionen können mithilfe von A / B-Tests nur für einen Teil des Kundenstamms oder für bestimmte Personen oder sogar direkt für die allgemeine Verfügbarkeit (GA) freigegeben werden. Obwohl die Freigabe für GA oft erst erfolgt, wenn genügend Gewissheit besteht, dass die Funktion wie erwartet funktioniert. Man könnte argumentieren, dass dies tatsächlich die Freisetzungsfrequenz beeinflusst , um höher zu sein.

Diese Entkopplung von Release und Deployment ist ohne Feature-Flag-Toggles kaum zu erreichen.

Natürlich , wenn kein Einsatz erforderlich ist , eine Funktion zum Umschalten aus , dann die Zeit Dienst wiederherzustellen wird erheblich gesenkt.

Durch die Verwendung von Feature-Flags, die Features für einen kleinen Teil des Kundenstamms freigeben, kann die Messgröße für die Änderungsfehlerrate ebenfalls erheblich verbessert werden.


Ein einfacher Mechanismus mit der Bezeichnung Feature-Flag-Toggles sorgt für eine deutlich bessere IT-Leistung und verbessert die Gesamtleistung des Unternehmens.

Ein gutes Beispiel dafür, wie dies in echten Unternehmen gemacht wird, finden Sie bei Flickr (einem der frühesten öffentlichen Beiträge zu diesem Thema) und bei Etsy . Aber viele andere haben die Praxis übernommen und ausführlich darüber gesprochen, zum Beispiel die berühmte Ingenieurskultur bei Spotify-Videos .

Etsy zeigt sein internes Tool zur Verwaltung von Feature-Flags namens Catapult in mehreren Präsentationen im Internet. Und Intuit veröffentlicht ein Open-Source-Tool namens Wasabi , mit dem Feature-Flags verwaltet werden können.

Evgeny
quelle
Merci für diese interessante / ausgearbeitete Antwort ... Nur zwei Dinge: In dem verlinkten Artikel geht es um "Feature toggles", nicht um "Feature Flag Toggles" (wie Sie in Ihrem ersten Absatz geschrieben haben). Würden Sie zustimmen, dass es sich um Synonyme handelt? Wenn nicht, was ist der Unterschied? Außerdem: Was sind "A / B-Experimente" (A = Nachher und B = Vorher? Wahrscheinlich nicht ...).
Pierre.Vriens
1
Ich bin damit einverstanden, dass dies Synonyme sind. Ich versuche nur lieber, mir den Namen klar zu machen, damit es keine Unklarheiten gibt. Ich denke, dass "Was sind A / B-Experimente" eine Frage für sich ist ... aber die kurze Antwort ist, dass es zwei Variationen sind, die gegeneinander gemessen werden, wie im Link "Etsy Angeberei". Oder erklärt unter en.wikipedia.org/wiki/A/B_testing
Evgeny
OK, das ist der letzte Schliff, auf den ich gewartet / gehofft habe, also "akzeptiere".
Pierre.Vriens
@ Pierre.Vriens "Also: Was sind" A / B-Experimente "(A = After und B = Before?" - das können Sie wahrscheinlich auf dieser super coolen DevOps SE-Site fragen;)
Dan Cornilescu
1

Ken Mugrage hat unter meiner Frage einen interessanten Kommentar gepostet, mit einem Link zu einer aufschlussreichen Erklärung von " Feature toggles ", mit einer Zusammenfassung davon wie folgt:

Feature-Toggles sind eine leistungsstarke Technik, mit der Teams das Systemverhalten ändern können, ohne den Code zu ändern. Sie fallen in verschiedene Verwendungskategorien, und es ist wichtig, diese Kategorisierung bei der Implementierung und Verwaltung von Umschaltungen zu berücksichtigen. Schaltet Komplexität ein. Wir können diese Komplexität unter Kontrolle halten, indem wir intelligente Umschalt-Implementierungsmethoden und geeignete Tools zum Verwalten unserer Umschaltkonfiguration verwenden. Wir sollten jedoch auch versuchen, die Anzahl der Umschaltvorgänge in unserem System zu beschränken.

Die obige Zusammenfassung hilft nicht nur zu verstehen, worum es geht, sondern enthält auch einige Beispiele, die erklären, warum sie verwendet werden . Und nachdem wir es ein bisschen weiter verdaut haben, scheinen "Feature Toggles" und "Feature Flag Toggles" so ziemlich ein Synonym voneinander zu sein.

Aber die Lösung (Antwort) des Problems (Frage) ändert das Problem ... man könnte verwandte Fragen stellen wie:

  • Was sind die Vor- und Nachteile bei der Verwendung? Es ist ein mächtiges Konzept, aber auch ein beängstigendes, wenn es nicht mit Bedacht eingesetzt (und angemessen gesichert) wird ...
  • Welche Beispiele (gute und schlechte) können verwendet werden? Ich kann mir einige vorstellen, einige davon habe ich vor einiger Zeit selbst benutzt (bevor DevOps überhaupt eine Sache war).
Pierre.Vriens
quelle