Feature -Toggle-Management und SDKs… Wie funktioniert das eigentlich?

Wilhelm von Wiesel
Wilhelm von Wiesel 2020-12-15T07:10:09

Feature Toggle Management und SDKs… Wie funktioniert das eigentlich?

Möchte man Feature Flags über ein Feature Toggle Management System in seine Anwendung einbauen, kommt man um die Nutzung von SDKs (Software Development Kits) nicht herum. Doch was sind diese SDKs und wie helfen sie mir in meiner Software?

Um diese Frage zu beantworten, müssen wir als Erstes etwas hinter das Grundkonzept von Feature Flag getriebener Entwicklung blicken und verstehen, was diese Art der Entwicklung von anderen Vorgehen unterscheidet. Wie überall in unserer Welt unterliegt auch das Themenfeld der Softwareentwicklung Trends. War es bis vor einigen Jahren noch „State of the art“ Webanwendungen in schwergewichtigen monolithischen Programmen zu entwickeln und galt Java als die Programmiersprache im Enterprise-Umfeld, so liegt der Fokus inzwischen vor allem auf der Entwicklung von kleineren, leichtgewichtigeren Anwendungen.

Wer heute ein Softwareprojekt beginnt, wird sich nicht mehr mit der Bereitstellung von Tomcat-Servern oder Oracle-Datenbanken beschäftigen, sondern vielmehr mit den Fragen, ob die Entwicklung „testdriven“ ablaufen soll und welche Form des agilen Projektmanagements für die Zusammenarbeit die beste Option darstellt. Frameworks und Sprachen, die gestern noch hip waren, sind morgen auf einmal out und als Verantwortlicher verliert man schnell den Überblick, welchem Trend man nun folgen sollte und welcher auch getrost an einem vorüberziehen kann.

Feature Toggle Management ist einer dieser Trends. Schaut man jedoch hinter die Fassade, stellt man schnell fest, dass dieser „Trend“ schon immer da war. Wenngleich nicht über externe Management-Tools, gab es auch schon zu „Tomcat-Zeiten“ den Wunsch, eine Anwendung in einem bestimmten Kontext laufen zu lassen und das Verhalten in der Applikation benutzerspezifisch zu gestalten. Dabei war es der Fantasie der Entwickler überlassen, wie komfortabel die Steuerung in der jeweiligen Anwendung ausgestaltet wurde. Sofern das Budget stimmte, natürlich.

Die Bearbeitung einfacher Konfigurationsdateien bis hin zur Steuerung der Anwendung über komplexe Dashboards mit verschiedenen Berechtigungsebenen waren die Folge. Eines war jedoch klar: Im Enterprise-Umfeld gab es kein einheitliches Vorgehen und für den Anwender bedeutete das häufig zig Zugänge zu unterschiedlichen „Admin-Tools“ ohne einheitliche Benutzerführung sowie den Aufbau des nötigen Expertenwissens für diese Anwendungen. Auf Codeebene innerhalb der jeweiligen Applikationen gab es nur selten Wiederverwendung, die Problemstellung wurde häufig von jedem Team neu beleuchtet.

Feature Toggle Management über SaaS-Lösungen wie Switchover versuchen genau an diesen Punkten anzusetzen. Neben einem einheitlichen Admin-UI liefern diese Lösungen auch die Client Frameworks, die über einfache Integrationen sehr schnell in die Anwendungen eingebunden werden können.

Doch wie funktioniert das nun genau? Werfen wir dazu einen Blick auf die grundlegende Architektur.

Feature-Toggle-Management-Systeme sind im Regelfall aufgeteilt in eine Serveranwendung für die Verwaltung der Toggles und in eine passende Clientschicht in Form von SDKs in der entsprechenden Programmiersprache der Anwendung. Um Daten schnell zum Client zu bringen, nutzen die Systeme zusätzlich noch CDN-Anbieter, sodass die Aufrufzeiten minimiert werden können.

Zumeist wird die Kommunikationstrecke dabei lesend implementiert. Das heißt: Der Client liest die für ihn nötige Konfiguration vom Server, schreibt jedoch keine Daten zurück zur Feature-Toggle-Anwendung. Abhängig vom Client SDK wird dieser Abruf der Konfiguration im Client für eine bestimmte Nutzungsdauer gecacht. Die Logik liegt also im Client, alle Kundendaten verbleiben in diesem und gehen nicht zur Serveranwendung, womit der Schutz möglicher personenbezogener Daten gewährleistet wird.

Dieser Ansatz wird jedoch nicht bei allen Feature-Toggle-Management-Systemen verfolgt. Es empfiehlt sich also vor der Integration zu prüfen, welche Daten tatsächlich verwendet werden.

Der Client selbst verarbeitet nun die per Konfiguration erhaltene Information und wendet diese an der im Client implementieren Stelle an. Dabei ist die Umsetzung der Basisfunktionalitäten unabhängig von der jeweiligen Programmiersprache im Grundsatz immer gleich. Das Feature Toggle, also die Konfiguration, wird vom Client SDK evaluiert. Der Entwickler muss hierbei keine besonderen Kenntnisse über die internen Vorgänge des SDKs haben, sondern entsprechende Bedingungen nur in den Aufruf mitgeben. Auch bei komplexeren Bedingungen muss der Entwickler diese nicht einzeln überprüfen, sondern kann diese Aufgabe dem Feature Toggle SDK überlassen.

Sollte der Feature Toggle Server nicht erreichbar sein, lässt sich am Toggle clientseitig ein Default-Verhalten konfigurieren, sodass auch eine Nicht-Erreichbarkeit der Server-Anwendung nicht zu einem Fehler führt.

Fazit: Auch wenn Feature-Toggle-Management Lösungen auf den ersten Blick wie ein Trend wirken der schnell vorbei ziehen kann, lohnt ein zweiter Blick hinter die Arbeitsweise dieser Systeme um umständliche alte Admin UIs und eigene Implementierungen über Board zu werfen. Dabei ist es wichtig einen genaueren Blick hinter die Arbeitsweise der entsprechenden Frameworks zu richten, denn nicht alle Systeme arbeiten gesetzeskonform und so manches SDK schickt Kundendaten zum Server

Photo by Christina @ wocintechchat.com on Unsplash