Mit Feature Switches (Feature Toggles) kann man einzelne Features (de)aktivieren, ohne dafür eine Änderung im Code machen zu müssen. Gestern hatten wir besprochen, wie hilfreich sie sind, um Probleme im Produktivbetrieb abzufangen. Sie helfen aber auch schon in der Phase vor einem Release: Statt alle Features nach dem Motto “Alles oder Nichts” herausbringen zu müssen, können wir Features einzeln auswählen.
Haben Sie sich schon mal gefragt, was passiert, wenn die Release-Zyklen so kurz werden, dass man ein Feature gar nicht mehr innerhalb eines Zyklus fertig stellen kann? Richtig, man nutzt Feature-Switches, um unfertige Features zu verbergen.
Feature Switches sind also ein wichtiges Mittel auf dem Weg zu häufigeren Releases. Man kann hier ein Prinzip aus dem Lean Thinking erkennen: das Arbeiten in kleinen Batches. Je kleiner die Releases sind, desto häufiger kann man sie machen, desto schneller wird das Feedback usw. Wenn man mich nach einer zentralen Metrik für DevOps fragen würde, wäre es diese: Anzahl Releases pro Woche. Verbesserungen dieser Metrik gehen nur, indem die Organisation eine höhere “DevOps-Reife” erlangt.
Wenn man den Umgang mit Feature Switches erst einmal beherrscht, kann man sie noch anderswo nutzbringend einsetzen:
Schrittweises Rollout eines Releases. Dazu aktiviert man das Feature zunächst nur intern, dann vielleicht für 1% der User, dann für 50% und schließlich für alle. Wenn es ernsthafte Probleme gibt, bemerkt man sie hoffentlich schon an einer kleinen User-Population und kann das Rollout stoppen.
A/B-Tests. Man kann den Besucherstrom auf zwei Varianten aufteilen und dann statistisch bestimmen, welche besser ist (z.B. mehr Umsatz produziert).
Premium Features. Statt eine separate Variante des Codes für die Premium-Kunden zu machen, werden Features dynamisch zugeschaltet.
User-spezifische Features. Ebenso für Features, die z.B. landesspezifisch sind – man aktiviert den Feature Switch automatisch für Kunden aus dem jeweiligen Land. Darüber hinaus kann ein Tester leicht in die Rolle eines speziellen Users schlüpfen, indem er sich die passenden Feature Switches konfiguriert.
Not-Abschaltungen. Wenn zum Beispiel der Webshop stark belastet ist, kann man gezielt Features zeitweise abschalten, um Kapazitäten für die Kernfunktionalität freizumachen.
Allein Feature Switches einzuführen reicht natürlich nicht, um zu immer kürzeren Release-Zyklen zu kommen. Man muss vor allem auch die Fixkosten für ein Release drastisch verringern. Wie das geht, beschreiben wir in unserer Anleitung Schritt für Schritt zu häufigeren Software-Releases.
Matthias Berth