Wie kann man Entwickler davon überzeugen, Feature-Flag-Schalter zu verwenden?

20

Angenommen, das Umschalten der Feature-Flags ist eine gute Idee und sollte in Code implementiert werden, den Entwickler schreiben. Zum Beispiel schwört Etsy auf sie als einen wichtigen Teil ihrer Kultur .

Was ist ein guter Weg, um Entwickler davon zu überzeugen (und zu erzwingen), Feature-Flag-Schalter zu verwenden?

Weitere Informationen zum Umschalten von Feature-Flags finden Sie in F: Verwendung von Feature-Flags , F: Was sind Feature-Flags und was ist sehr ausführlich in Pete Hodgsons Artikel zu diesem Thema in Martin Fowlers Blog .

Evgeny
quelle
Eine schmale Version für die Frage devops.stackexchange.com/questions/4/… .
Evgeny
1
Oeps, ich sehe dich erst jetzt als neuen Kommentar (und Update). Nachdem ich gerade eine neue Frage dazu gestellt habe. Vielleicht möchten Sie eine Antwort auf meine neue Frage posten (wo Sie viel mehr Platz haben, um diese Dinge tatsächlich zu erklären)? Wenn Sie dies tun, stellen Sie sicher, dass es sich nicht um eine reine Linkantwort handelt (ich vertraue darauf, dass Sie wissen, was dies auf SE-Sites bedeutet, oder?).
Pierre.Vriens

Antworten:

18

Feature-Toggles sind eine gängige Praxis in der Hochgeschwindigkeitsentwicklung, da sie die Entwicklung von der Freigabe entkoppeln. Entwicklerteams können ein neues Feature für die Produktion in einem deaktivierten Zustand "soft-release". Dadurch kann die Funktion jederzeit freigegeben werden. Wenn die Funktion von anderen Arbeiten oder Vorbereitungen abhängig ist, muss sie nicht auf die Serienreife einer Hauptversion warten.

Soweit Entwickler davon überzeugt werden, sie zu verwenden, ist dies eine Übung, um die Freiheit, die sie bieten, geltend zu machen. Ich habe die Erfahrung gemacht, dass es für Entwickler kein schwerer Verkauf ist. Das Management neigt dazu, neue Dinge nur ungern auszuprobieren. Versuche dies:

  • Suchen Sie ein Feature-Toggle-Framework. Das Management / das Unternehmen ist möglicherweise eher dazu geneigt, etwas auszuprobieren, das von einem gemeinsamen System unterstützt wird
  • Fangen Sie klein an. Stellen Sie das Umschaltsystem auf Probebasis für eine Funktion vor, die seine Nützlichkeit demonstriert.
  • Demonstrieren Sie die Fähigkeit des Toggles, A / B-Tests durchzuführen. Aktivieren Sie das Umschalten für eine Teilmenge Ihrer Webfarm, und erfassen Sie dann Kennzahlen zum Verhalten. Es hat sich gezeigt, dass winzige Unterschiede im Seitenlayout enorme Auswirkungen auf den Umsatz von Einzelhandelsanwendungen haben (z. B. Ebay, Amazon).
Dave Swersky
quelle
2
+1 für das Framework-Bit. Ich habe zu viele Leute gesehen, die ihre eigenen Feature-Toggles rollen und es ist immer böser, böser Code.
Jduv
Über das Framework-Bit gibt es ein interessantes OSS von Intuit namens Wasabi github.com/intuit/wasabi
Evgeny
Buchempfehlung zur Überzeugung anderer Entwickler - Driving Technical Change von Terrence Ryan
Liath
8

In einer idealen Welt, denke ich, bringen Sie einen neuen Build heraus und überraschen Sie! Nichts verändert sich. Dies liegt daran, dass sich alle Ihre neuen Funktionen hinter Schaltern befinden, die bei ausgeschaltetem Schalter ausgehen.

Nach der Bereitstellung stellen Sie sicher, dass Ihr ausgerollter Dienst weiterhin funktioniert, die Telefone nicht mehr klingeln (es sei denn, das Klingeln ist Ihr Zweck) usw. Sobald Sie zu einem bekannten stabilen Betrieb zurückgekehrt sind, beginnen Sie mit der Aktivierung und Überprüfung Ihre neu bereitgestellten Funktionen.

Nun zu Ihrer Antwort: Wie möchten Sie in einem Team arbeiten, in dem Bereitschaft praktisch ein Kinderspiel ist und unsere Benutzer uns lieben, weil unsere Websites und Dienste absolut stabil sind?

Daran möchte ich arbeiten.

Sie können hier aufhören zu lesen, wenn Sie möchten.

Wenn Sie alles hinter einen Funktionsschalter stellen, kann dies überall zu Spaghetti-Code führen. Wenn Sie IoC verwenden und in der Lage sind, zwischen vNow / vNext / vPrevious zu wählen, kommt es darauf an, Ihre Konfiguration beizubehalten. Ja, mehr Check-Ins, ja, mehr Klassen (KomponenteV1, KomponenteV2, KomponenteV3 usw.), aber Sie haben tatsächlich ein stabileres System? Wie? vWeiter ist Wonky? Wechseln Sie mit Ihrem Kontrollturm zurück zu vNow. Schon eine Woche und vNow hat einen subtilen Fehler? Das Gleiche gilt - kehren Sie genauso einfach zu vPrevious zurück.

Kein Ärger, keine Sorgen, kein Schlafverlust, kein Stress.

Das ist kein Wunschtraum. Ich habe dort gearbeitet. Ich wünschte, ich könnte dies an mein aktuelles Team verkaufen.

Keine Rückerstattung Keine Rückgabe
quelle
4

Eine erfolgreiche Hochgeschwindigkeits-Entwicklungsumgebung basiert in der Regel auf einem recht strengen automatisierten System, das Qualitätsprüfungen mit Erkennung und Zurückweisung fehlerhafter Änderungen, die zu Regressionen führen, umfasst.

Feature-Toggles bieten die Möglichkeit, selbst in Bearbeitung befindliche, nicht getestete Änderungen festzuschreiben, ohne dass sie aufgrund von Regressionen im Integrationszweig abgelehnt werden. Dies ist ein sehr guter Anreiz , die Funktionsumschaltungen sehr früh im Leben der Funktion einzuführen.

Einer der Nachteile der Abweichung von der tatsächlichen CI und der Entwicklung sich bewegender Merkmale in Merkmalzweigen ist das Fehlen eines solchen Anreizes. Das spätere Hinzufügen des Feature-Toggles beim Zusammenführen des Feature-Zweigs mit dem Integrationszweig ist normalerweise schwieriger, wie bei jeder späten Integration.

Dan Cornilescu
quelle
2

Entwickler (und normalerweise Entwicklungsmanager) suchen in der Regel nach zwei mit dem Framework verbundenen Ergebnissen: Einfachheit der Verwaltung und Geschwindigkeit der Bereitstellung. Sie möchten Code schneller und einfacher versenden.

Den Nachweis erbringen, dass der Ansatz funktioniert; Versuchen Sie, einen kleinen POC mithilfe von Feature-Flags im Vergleich zur alten Methode zu erstellen. Fallstudien sind für taktische Leute (Entwickler / Ingenieure) weniger wichtig als für strategische Leute (mittleres Management / Produktdesigner).

Stuart Ainsworth
quelle
0

Die Begründung für das Umschalten von Funktionen liegt nicht bei den Entwicklern. Dies ist etwas, das den Produktbesitzern wichtig ist. Entwickler ermöglichen diese Änderung auf die nachhaltigste und sicherste Weise. Ich kritisiere genau diese Frage.

Sudharsan S
quelle
Ich war in Organisationen, in denen die Entwickler die Produktbesitzer sind. Ich habe ein paar Mal gesehen, wie sich das Produktmanagement wie ein Produktbesitzer verhält. Und ich war an Orten, an denen niemand etwas zu besitzen scheint. Ihre Aussage passt also zu ungefähr einem Drittel meiner Erfahrung. Die Entwickler zu ermutigen, Dinge so zu schreiben, dass sie in der Produktion besser funktionieren, scheint mir im Allgemeinen eine gute Sache zu sein. Können Sie irgendwelche Behörden anführen, die Ihre Ansicht unterstützen?
Küken