Cloud Republic

Waar moet een feature management systeem aan voldoen voor een webapp met 10000 dagelijkse gebruikers?

Feature Management Systeem

Als je betrokken bent bij het beheer van een webapp met een flink aantal gebruikers, kan je bijna niet om een feature management systeem heen. Maar wat is dit precies en waar moet zo’n systeem aan voldoen? Dat deel ik graag met je in dit blog.

Wat is een feature management systeem?

Feature management, ook wel bekend als feature toggling of feature flagging, is een techniek die ontwikkelaars in staat stelt om specifieke functionaliteiten in een applicatie aan of uit te zetten zonder code te hoeven herschrijven of een nieuwe versie uit te rollen. Een goed feature management systeem versnelt het uitrollen van nieuwe functionaliteiten en dus de waarde voor gebruikers.

Voordelen:

  • Granulariteit: Met feature management kun je functies per gebruiker, per groep of per regio aanpassen. Dit maakt het eenvoudiger om nieuwe functionaliteiten te testen of specifieke functies voor bepaalde gebruikers aan te passen.
  • Risicobeheersing: Door nieuwe functies achter een feature flag te zetten, kun je deze gradueel uitrollen naar gebruikers, waardoor je problemen vroegtijdig kan identificeren en beperken.

Nadelen:

  • Complexiteit: Het toevoegen van feature flags aan code kan de complexiteit verhogen. Je moet niet alleen de logica van de feature zelf beheren, maar ook de logica van wanneer de feature aan of uit moet zijn.
  • Technical debt: Als feature flags niet worden verwijderd, leiden ze tot technical debt. Dit komt doordat oude, niet meer gebruikte, feature flags in de code blijven staan.
  • Testuitdagingen: Hoewel feature management het makkelijker kan maken om nieuwe functies te testen, kan het ook leiden tot testproblemen. Dit komt doordat je nu voor elke combinatie van aan/uit van je feature flags moet testen, wat het aantal testcases aanzienlijk kan verhogen.

Criteria

Op basis van de kenmerken van onze applicatie en hoe onze release processen zijn ingericht, zijn we op deze eisen uitgekomen:

  • Gradueel kunnen uitrollen van features: Op deze manier kunnen wij eerst voor 1% een feature aanzetten een periode wachten of er problemen optreden en dan verhogen naar 10% en dan opnieuw wachten of er problemen en zo door totdat we op een 100% uitrol zitten.
  • Overzicht van de huidige status van de feature flags voor elke omgeving: Welke feature flags staan aan op welke omgeving en welke kunnen er verwijderd worden. Vooral in het geval er een productie probleem optreed, willen wij graag in één snel overzicht zien wat de status is van de feature flags.
  • Granulair: Op basis van specifieke eigenschappen van de klant functionaliteit aan of uitzetten (target on attribute). Hiermee kunnen we op basis van een identifier (bij ons de ID van een shop) een feature flag aanzetten voor alle gebruikers van die shop, zodat iedereen binnen die shop dezelfde ervaring krijgen
  • Inzichtelijk welke en wanneer feature flags zijn aangepast en door wie. Voornamelijk voor legal compliance
  • Betrouwbaar: De service moet 100% up zijn, feature flags zijn een essentieel onderdeel van onze applicatie, als dit niet werkt dan kan niet de juiste configuratie voor de gebruikers geladen worden. Het moet een bestaande en bewezen oplossing zijn.
  • Schaalbaarheid: Onze applicatie heeft wereldwijd meer dan 10.000 dagelijkse gebruikers
    de service moet met deze getallen om kunnen gaan.

Selectie

Met deze requirements hebben we een selectie gemaakt van feature management services die voldoen aan onze criteria:

  • Launchdarkly: een van de meest gebruikte en complete feature management systemen
  • Growthbook: open source en keuze om het zelf te hosten
  • DevCyce: heel makkelijk om gebruikers zelf toegang te geven om feature flags aan of uit te zetten

Conclusie

Naarmate een applicatie groter wordt ontkom je er niet aan om degelijk feature management systeem te gaan gebruiken. De belangrijkste functie van een feature management systeem is om betrouwbaar en ordelijk nieuwe functionaliteiten uit te rollen voor gebruikers. Dit kan per use-case verschillen, voor ons is dat gradueel uitrollen en op basis van een custom attribute. Dus denk hier goed over na bij het kiezen van een systeem, wat je wil bereiken, want het implementeren van een feature management systeem doe je niet zomaar binnen een sprint.

Meer tips & nieuws van onze developers

Cloud Solutions Architect
Aan het woord

Cloud Developer aan het woord: Daan

Cloud Solution Architect Daan startte twee jaar geleden bij Cloud Republic. Hoewel hij niet per se op zoek was naar een nieuwe uitdaging, is hij

Altijd de laatste .NET trends en development nieuws in je inbox?

Schrijf je in voor Dev News, onze nieuwsbrief. Zo weet je zeker dat altijd op de hoogte blijft van de laatste trends & ontwikkeling die voor jou relevant zijn.

Cloud Republic

Janssoniuslaan 80

3528 AJ Utrecht

 

info@cloudrepublic.nl