Wie Feature Flags den Continuous-Delivery-Prozess mit Atlassian-Systemen unterstützen

Feature Flagging kann ein wichtiger Baustein der Produktentwicklung sein. Setzt ein Software-Team Feature Flags richtig ein, bieten sie großen Mehrwert. Es gibt einige bewährte Praktiken, sie im Zusammenhang mit Atlassian-Systemen wirklich zielführend zu nutzen.

Die Funktion von Feature Flags verstehen

Für Feature Flags gibt es diverse potenzielle Einsatzszenarien. Entwicklungsteams nutzen sie im Rahmen ihres Continuous-Delivery-Prozesses, in dem Feature-Releases reibungslos an die Kunden ausgeliefert werden müssen. Sie dienen dazu, Code-Deployments von Feature-Releases zu trennen, und in vielen Teams landet gar der Großteil der Code-Änderungen hinter Flaggen.

Dank dieser Praxis können die Entwickler das Risiko senken, das Nutzererlebnis der Kunden zu beeinträchtigen. Sie hilft auch dabei, ein Feature vom anderen zu separieren, was bedeutet, dass man individuelle Features zurück- und vorrollen kann, ohne andere zu beeinflussen.

Features einfach „einschalten“ und sie progressiv an Nutzer ausrollen zu können, verleiht dem Team mehr Kontrolle über das ausgelieferte Nutzererlebnis. Diese Möglichkeit führt auch zu strafferen Feedback-Schleifen und versetzt das Team in die Lage, Kundenwert schneller ins Live-System bringen.

Wenn das Team releast, kann es den Erfolg eines Features messen und Feedback einholen, ehe es auf breiterer Ebene ausgerollt wird. Funktioniert ein Feature nicht gemäß der Intention – es gibt negative Rückmeldungen, etwas geht kaputt, ein Bug tritt auf –, dann lässt die Funktion sich mithilfe der Feature Flags per Not-Aus abstellen, und zwar ganz ohne irgend welche Code-Rollbacks.

Den Erfolg des Features messen

Aus operativer Sicht stellt sich die Frage: Führt das Feature zu Problemen, wenn die Flagge an ist? Größere Fehler lassen sich durch das Monitoring der Logs erkennen. Sind Fehler sichtbar, kann das Team die Flagge abstellen, das Problem beheben und den Rollout anschließend wiederholen.

Aus strategischer Sicht muss das Team beobachten, ob die Funktion sich so verhält, wie sie sich verhalten soll. Wenn ein Feature eine Performance-Verbesserung bewirken soll, kann man genau überwachen, ob der neu eingeführte Code die Performance tatsächlich verbessert. Das gilt auch für Usability-Optimierungen am Produkt: Die richtige Metrik muss sich in die richtige Richtung bewegen.

Leitprinzipien für die Arbeit mit Feature Flags etablieren

Wenn nicht gewissen Prinzipien gelten, besteht die Gefahr, dass das Team mehr technische Schulden in das Produkt einführt, was Support und Debugging erschwert. Bestimmte Praktiken können helfen, dies zu vermeiden – beispielsweise eine Namenskonvention, die es ermöglicht, eine Änderung stets mit den folgenden Informationen zu verknüpfen:

  • Das Produkt, das von der Änderung betroffen ist
  • Der Teil des Produkts, den die Änderung berührt
  • Das neue Feature oder Verhalten, das eingeführt wird

Darüber hinaus könnte das Team bestimmte Faustregeln für die Lebenszeit von Feature Flags etablieren – beispielsweise, dass eine Flagge gelöscht wird, wenn das Feature an 100 Prozent der Kunden ausgerollt ist. Es ist nicht empfehlenswert, Feature Flags länger als nötig im System zu behalten, da sie (unter anderem) die Komplexität erhöhen und es schwieriger machen können, künftige neue Funktionen zu implementieren.

Zusätzlich ist es ratsam, die Anzahl der Stellen in der Code-Basis, an denen eine Flagge Verhalten ändern kann, zu begrenzen – idealerweise auf eine. Statt über die Code-Basis hinweg diverse Schalter einzuführen, könnte eine gute Praxis darin bestehen, den Code auf beiden Seiten der Flagge zu duplizieren und ihn dann auf der inaktiven Seite der Flagge zu löschen, wenn der Rollout abgeschlossen ist.

Klare Prozesse mithilfe von Workflows schaffen

Um einen klaren Prozess dahingehend aufzubauen, wie Flaggen ausgerollt, verwaltet und abgeschlossen werden, ist ein Kanban-Board mit einem Workflow, der jeden Status einer Feature Flag abbilden kann, eine geeignete Methode. Auf diese Weise lassen sich beispielsweise die Stadien Feature-Flag-Erstellung, Feature-Rollout für interne Instanzen, Feature-Rollout für Kunden, Feature-Rollout 100% sowie Prozess abgeschlossen effektiv visualisieren.

Ein automatisierter Mechanismus kann das unterstützen: Jedesmal, wenn im Feature-Management-Tool eine Flagge erstellt wird, legt die Automatisierung einen Jira-Vorgang an. Anschließend bewegt sich der Vorgang, der die Flagge repräsentiert, automatisch durch die spezifischen Stadien des Prozesses, der somit stets transparent ist.

Feature Flags Kanban-Board

Ein exemplarisches Kanban-Board zur Visualisierung des Feature-Flagging-Prozesses

Regelmäßig eng abstimmen und für Sichtbarkeit sorgen

Feature Flags ermöglichen es, dass unterschiedliche Nutzergruppen unterschiedliche Versionen des Produkts sehen. Dafür ist eine Tool- und Kommunikationsstrategie erforderlich, die sicherstellt, dass alle beteiligten Teams imstande sind, sich adäquat um Support, Marketing und Debugging der jeweiligen Produktvarianten zu kümmern. Ein Ansatz, um dieser Herausforderung zu begegnen, ist wiederum die Integration eines Feature-Management-Tools mit Jira-Vorgängen, um zu gewährleisten, dass jeder, der einen Vorgang ansieht, den richtigen Kontext hat.

In regelmäßigen und häufigen Meetings zwischen Site-Reliability-Fachleuten und Entwicklern erfolgt die enge Abstimmung zum Ausrollen neuer Flaggen. Vor einem solchen Meeting bereitet jedes Entwicklerteam, das für das Ausrollen eines neuen Features verantwortlich ist, eine Confluence-Vorlage mit allen grundlegenden Informationen vor: die Änderungen, die vorgenommen werden sollen, die erwarteten Ergebnisse, Kontaktdetails, Links zu relevanten Dashboards.

Diese Seiten werden in einem gemeinsamen Confluence-Bereich erstellt und nach Datum gepflegt. Für die ständige Abstimmung, aktuelle Diskussionen und dringende Fragen bietet eine Gruppenchat-Lösung einen geeigneten Kanal.

Feature Flags Dokumentation

Eine beispielhafte Vorlage für die Dokumentation von Feature Flags

Mit Praktiken und Prinzipien wie den beschriebenen können Software-Teams viel aus Feature Flags herausholen und sie zielführend so einsetzen, dass sie spezifische Rollout-Strategien für neue Features und Funktionen effektiv unterstützen.

Wir sind Ihr Atlassian-Partner

Interessieren Sie sich für Entwickler-Tools von Atlassian? Wir sind Atlassian Platinum Solution Partner und unterstützen Sie gerne bei allen Aspekten einer Einführung: Beratung, Lizenzierung, Konfiguration, produktive Nutzung. Melden Sie sich bei uns!

Weiterführende Infos

Individuelle Software-Entwicklung: Workflows, Branching-Modelle und Continuous Delivery
Jira und Bitbucket integrieren: Mehr Transparenz, effizientere Workflows, besserer Kontext
Moderne Software-Entwicklung: Deployment-Projekte mit Bamboo