Feature Flags / Feature Toggles
Feature Flagging verwijst in softwareontwikkeling naar het in- en uitschakelen van softwarefuncties of features die nog in ontwikkeling zijn tijdens runtime.
Feature Flags beschrijven daarmee een programmeertechniek waarmee je met je team nog sneller en veiliger software kunt opleveren en teamoverstijgend kunt integreren. Omdat een tijdsonafhankelijke deployment van applicaties een steeds vaker voorkomende vereiste is, bieden Feature Flags hiervoor een passende oplossing. Bovendien helpen de Flags om de werkprocessen van een ontwikkelteam te optimaliseren.
Veelgebruikte synoniemen voor Feature Flags en Feature Flagging zijn:
- Feature Toggles / Feature Toggling
- Feature Switches
- Feature Flippers
- Feature Bits
- Conditional Features (in de context van User Targeting)
Doelen en voordelen van Feature Flags in detail
Dankzij Feature Flags kunnen jij en je team:
- sneller en daarmee stapsgewijs software opleveren en nieuwe functies voor de klant uitrollen (Continuous Integration en Continuous Delivery worden sneller en eenvoudiger)
- nieuwe Features teamoverstijgend integreren
- nieuwe vereisten op de productieomgeving testen (zonder dat klanten het merken)
- reeds ontwikkelde Features alleen voor bepaalde gebruikersgroepen vrijgeven
- door regelmatig testen stap voor stap functionaliteit en UX verbeteren
- Applicaties in productie stabiel houden door het uitschakelen van foutieve functies
- tijdrovende Bugfix-Deployments minimaliseren
- Software Releases en Deployment van applicaties van elkaar ontkoppelen
- grote en daarmee riskante Deployments vermijden, door vaker met de hoofd-branch te mergen in plaats van zelden lange Feature Branches te mergen
- flexibel reageren op gewijzigde klantvereisten zonder extra deployment
Wanneer en hoe worden Feature Flags toegepast?
In de praktijk blijven afgeronde features vaak liggen, omdat ze nog niet productief ingezet mogen worden. De betreffende feature branches mogen dan nog niet gemerged worden.
Dankzij Feature Toggles / Flags kan gefinaliseerde code direct samengevoegd en gedeployed worden, zodat de nieuwe functies op de achtergrond al aanwezig zijn, zonder zichtbaar te zijn. Dit voorkomt dat er bij het latere mergen grote problemen ontstaan, wanneer er in de tussentijd aan andere delen van de software is doorgewerkt.
De inzet van Feature Flags loont zich daarnaast in de volgende toepassingsgevallen:
- Continuous Integration en Continuous Delivery (CI / CD)
- Kill-Switch
- A/B Tests met klanten in de productieomgeving
- Configuratiemanagement
- Autorisatiesturing in de applicatie
- Procentuele uitrol van functies
Er zijn 3 manieren om Feature Flags te implementeren:
- Feature Toggles direct in de code implementeren
- Integratie via een configuratiebestand (config)
- Inbedding via een Feature Flag Management Software
Tips:
Om de complexiteit van de code zo laag mogelijk te houden, zouden jij en je team:
- Feature Flags zo spaarzaam mogelijk moeten inzetten
- niet meer gebruikte Flags uit de Software Lifecycle moeten verwijderen
4 Soorten Feature Flags
Afhankelijk van hoe lang Feature Flags in de code moeten blijven en welke taak ze hebben, kun je ze in de volgende 4 categorieën indelen:
Release Toggle
Release Toggles maken een Code Deployment van ongeteste en onvoltooide code op de productieomgeving mogelijk, zonder de code te activeren. Op deze manier kunnen bijvoorbeeld productmanagers nieuwe functies naar behoefte vrijschakelen.
Experiment Toggle
Met Experiment Toggles kun je het gebruikersspecifieke gedrag binnen een applicatie sturen. Hiervoor worden de gebruikers binnen het softwaresysteem geïdentificeerd, om ze vervolgens gericht aan te sturen. Op deze manier kunnen nieuwe functies snel bij bepaalde doelgroepen getest worden, om inzichten mee te nemen in de verdere ontwikkeling.
Ops Toggle
Via Ops Toggles kunnen operationele teams het applicatiebeheer via Feature Toggles aansturen. Dit maakt snelle rollbacks van functies en het testen van de systeembelasting van nieuwe functies bij kleine groepen mogelijk. Daarnaast staan Ops Toggles toe om niet-noodzakelijke functies in productie te deactiveren ("Kill-Switches").
Permission Toggle
Via Permission Toggles kun je het gebruikersspecifieke gedrag van bekende users binnen een applicatie sturen. Zo kun je via deze Toggles bijvoorbeeld functies voor VIP- of premiumklanten vrijschakelen. A/B Tests vormen een verdere toepassingsmogelijkheid.
Conclusie over Feature Toggles / Flags
Feature Toggles respectievelijk Flags ondersteunen teams om nieuwe functies en features sneller en gemakkelijker op te leveren, te integreren en te testen.
Verschillende Toggle-soorten dienen daarbij verschillende doelen, zoals het testen van nieuwe functies bij kleine groepen, het vrijschakelen van specifieke autorisaties of het controleren van systeembelasting. Feature Flags en Toggles kunnen volledige onderdelen van een softwareapplicatie in- of uitschakelen of slechts kleine codeblokken aansturen. Omdat ze zowel in de backend, frontend als applicatiebreed ingezet kunnen worden, zijn ze flexibel toepasbaar.
Belangrijk: Zodra Feature Flags niet meer nodig zijn in de code, zou jij of je team deze weer moeten verwijderen. Op deze manier voorkom je dat de code te complex wordt.