Feature Flag Management

Funktionen, die Teams in der täglichen Arbeit unterstützen

Moderenes Entwicklungsvorgehen

Switchover ist eine Software As A Service Solution (SaaS), mit der Unternehmen jeder Branche Ihre Softwareentwicklungsprozese beschleunigen können. Modernes Entwicklungsvorgehen bedeutet schnelle Release-Zyklen. Um diese gewährleisten zu können, müssen Teams jederzeit in der Lage sein Ihren Entwicklungsstand zurück in den Hauptbranch zu mergen. Doch was wenn Teile des Codes noch nicht funktional oder unfertig sind? Die Lösung - Feature Toggles!

faster development with feature toggles
continuous integration feature toggle

Release on Demand

Dank Switchover erhalten die Teams volle Kontrolle im Einsatz mit Feature Toggels inkl. Framework Support für eine einfache Integration in Ihre Software. Dadurch kann eine Software auf bedarf veröffentlicht werden, ganz gleich in welchem Zustand sich die Funktion bereits befindet. Lang offene Feature-Branches und schwieriges Mergen in den Hauptbranch zum Integrationszeitpunkt gehören der Vergangenheit an. Toogeln Sie die Funktion einfach aus!

"Unsere Teams nutzen die normalen git-Flows für die Entwicklung, warum brauchen wir hier noch ein Tool?"

Diese Frage hören wir oft. Der Unterschied liegt primär im Projektvorgehen. Stellen Sie sich die aktuelle Arbeitsweise Ihrer Teams vor. Der Kunde möchte mehrere neue Features entwickelt bekommen. Jedes Team startet nun vom Hauptentwicklungszweig und erstellt sich einen Branch für die Entwicklung der Features.

Je nach Feature Schnitt können die gewünschten Funktionen sehr groß und damit langwierig zu entwickeln sein, auf der anderen Seite natürlich auch klein und sehr schnell integrierbar. Sie als Anforderer wollen die neuen Features natürlich schnellst möglich dem Endkunden zur Verfügung stellen. Team A, ist mit dem Feature nun fertig, integriert daher den neuen Code in den Hauptentwicklungsstrang und deployt diesen vor Kunde.

Team B, welches leider noch nicht fertig ist, hält den Branch weiter offen. Das wäre kein Problem, würde Team A nicht schon wieder weitere neue Features entwickeln. Je länger Team B nun den Branch offen hält, desto weiter entfernt es sich vom Hauptentwicklungszweig.

Die Folge - Merge Konflikte, doppelte Entwicklung von Code und fehlende Paketabhängigkeiten. Die Integration entwickelt sich zum Albtraum und birgt zudem das Problem, dass Code-Anpassungen von Team B sich negativ auf Funktionen von Team A auswirken.

"Feature Toggling ist eine leistungsstarke Technik, mit der Teams das Systemverhalten ändern können, ohne den Code anzupassen."

Try it! Its free 😊

Vorteile von Feature Toggles

Feature Flags unterstützen die Teams Funktionen beliebig an und aus zu schalten ohne dazu Code-Anpassungen durchführen zu müssen. Bereits zur Entwicklungszeit werden Funktionen in schaltbare Blöcke geschrieben, welche zur Laufzeit dann beliebig geschaltet werden können. Das Vorgehen ersetzt das Branching Modell natürlich nicht, unterstützt jedoch die Teams die Branches in deutlich kürzeren Abständen zurück in den Master zu integrieren. Damit reduzieren sich die Integrationsaufwände deutlich und fertige Funktionen müssen nicht auf andere noch unfertige Funktionen warten, da sie einfach ausgeschaltet werden können.

faster software lifecyle with feature switches

"Feature Toggles und Branching, die perfekte Kombination?"

Die fast perfekte Kombination! Warum? Code-Blöcke in if/else-Blöcke zu setzen, löst das Problem nur tendenziell. Was fehlt ist ein System, welches auf die Konfiguration von außen Einfluss nehmen kann. Dies kann über mehrere Wege geschehen - im einfachsten Fall über ein Konfigurationsfile welches zusammen mit der Anwendung deployt wird. Dieses Vorgehen löst in kleineren Projekten das Problem.

Doch je mehr Feature Flags zum Einsatz kommen, desto schwieriger und fehleranfälliger wird die Pflege der Konfiguration und setzt zudem die Fähigkeit der Team Mitglieder voraus komplexe Konfigurationen "korrekt" zu bedienen.

Ein Fehler in der Konfiguration, bspw. ein vergessenes Anführungszeichen, kann schwere Folgen für die Anwendung bedeuten. Mithilfe von Switchover lassen sich die Konfigurationen bequem per Weboberfläche anlegen und Feature Flags, sowie die dazu gehörenden Bedingungen, komfortabel per Webfrontend steuern. Eine fehlerhafte Bedienung ist dadurch nahezu ausgeschlossen, wodurch die Konfiugration auch von Nicht-Entwicklern problemlos gesteuert werden kann.

Will ein Product Owner eine neue Funktion bspw. "mal schnell" zeigen, kann er ohne Code-Anpassungen die Funktion in echtzeit aktivieren und diese ebenfalls mit wenigen Klicks bei bedarf wieder deaktivieren.