Beispiele im Zusammenhang mit Feature Flags

In unserem Beispiel für die Verwendung von Feature Flags haben wir eine Webseite ähnlich zu airbnb über die Kunden Unterkünfte suchen können.

Usecases Feature Flags

Neben der Frontend Anwendung gibt es auch zwei Backend Services, die über Feature Flags gesteuert werden können. Die Umsetzung des Beispiels wurde mithilfe von Switchover realisiert. Dieses Feature-Flag-Management-System bietet neben kostenpflichtigen Plänen auch einen "free" Plan an, so dass problemlos getestet werden kann. Das dazu passende Code Beispiel befindet sich in Github.

Architektur Übersicht

Usecases Feature Flags

In unserem fiktiven Beispiel kommen nun gleich mehrere Flags zum Einsatz:

Release Toggle

Um ein neues Feature (Dark-Mode) freizuschalten wird in der Anwendung über einen Release Toggle nach dem Deployment die Funktion freigeschaltet. Dies kann zu einem beliebigen Zeitpunkt nach dem Deployment erfolgen.

Des weiteren wurde auch die Anbindung einer neuen API für Reviews über diese Toggle Art realisiert.

Experimental Toggle

Neben dem Release Toggle soll in der Anwendung auch verprobt werden, wie das Design eines neuen Features vom Kunden aufgenommen wird. Dazu kommt ein Experiment Toggle für die Aussteuerung eines Banners zum Einsatz, der je nach verwendeten Browser des Kunden zu einer unterschiedlich Anzeige führt. Über passende Analytics Methoden kann damit schnell Feedback gewonnen werden um die Entwicklung passend zu steuern.

Ops Toggle

Neben Feature Flags im Frontend gibt es auch im Backend sehr gute Verwendungsmöglichkeiten für Flags. Im hier aufgeführten Beispiel kommen Ops Toggles zum Einsatz mithilfe dieser die Review Funktionalität kurzfristig an oder aus geschaltet werden kann. In unserem Beispiel gibt es Probleme mit der Datenbank des Microservice bei ansteigenden Request Zahlen. Anstelle nun den ganzen Service abschalten zu müssen (was zwangsläufig auch zu einer Fehlfunktion im Frontend führen würde), kann mithilfe von Feature Flags die Response des Backend Service so konfiguriert werden, dass anstelle von echten Werten eine leere Liste zurück gegeben werden kann. Im Frontend fehlen damit zwar die Reviews, doch andere Funktionen sind nicht beeinträchtigt, so dass im Backend der Fehler gefixt werden kann ohne direkte Auswirkungen auf die umliegende Umgebung zu produzieren.