#48 - Feature Flags: When theory meets reality
Pe 19 iunie 2025 la cea de-a 48-a ediție, la Casa Teutsch, Mihai Cotu a susținut o prezentare captivantă despre Feature Flags, cunoscute și sub denumirea de Feature Toggles.

Mihai Cotu, un fost dezvoltator și actual Product Owner, a abordat subiectul Feature Flags dintr-o perspectivă practică, invitând publicul la o conversație interactivă. Prezentarea a pornit de la întrebarea fundamentală: "Ce este un feature flag?", descriindu-l simplist ca un "if" – un boolean care setează o valoare sau o preia dintr-un alt loc, iar în funcție de aceasta, se realizează o acțiune sau alta în cod. El a menționat că feature flags permit echipelor să modifice comportamentul sistemului fără a schimba codul.
Avantajele și Aplicațiile Feature Flags
Mihai a evidențiat diverse avantaje și aplicații ale feature flags, prezentând o "călătorie" a utilizării toggle-urilor:
- Trunk-Based Development: Unul dintre principalele avantaje subliniate a fost suportul pentru dezvoltarea bazată pe trunchi (trunk-based development). Această abordare permite dezvoltatorilor să lucreze direct pe ramura principală de cod, asigurându-se că orice funcționalitate nouă este protejată de un toggle. Astfel, chiar și în cazul în care codul este livrat în producție, acesta rămâne sigur, iar conflictele la fuzionare sunt minimizate.
- Testare și Lansare Graduală (Canary Release): Feature flags permit testarea diferitelor variante de cod în funcție de mediu (User Acceptance Test, Integration, Staging, Production). Ele facilitează lansările pas cu pas, permițând, de exemplu, ca 10% dintre utilizatori să experimenteze o nouă funcționalitate, iar dacă totul decurge bine, rollout-ul să fie extins. Mihai a făcut referire la "Canary Release", explicând conceptul prin analogia cu păsările canar din mine, care indicau siguranța mediului. Această abordare permite livrarea de cod pe bucăți și asigurarea că o mică parte din utilizatori experimentează feature-ul, iar dacă merge, se iterează și se livrează mai departe.
- A/B Testing și Experimentare: Feature flags sunt esențiale pentru experimentare, permițând divizarea utilizatorilor în grupuri pentru a testa diferite versiuni ale unei funcționalități și a decide, pe baza datelor, care este cea mai eficientă. Această abordare se aliniază conceptelor de Lean Startup și MVP-uri (Minimum Viable Products).
- Modele de Prețuri și Drepturi (Entitlement & Pricing Models): Toggle-urile pot fi utilizate pentru a controla accesul la anumite funcționalități în funcție de pachetul de servicii achiziționat de utilizator (ex: Free, Paid, Bronze, Gold, Platinum). Contextul toggle-ului poate fi legat de pachetul deținut de client.
- Toggle-uri de Operare (Ops Toggles): Acestea permit controlul comportamentului sistemului în funcție de încărcare sau evenimente specifice, cum ar fi Black Friday, când anumite funcționalități (ex: recomandări) pot fi dezactivate pentru a asigura stabilitatea sistemului.
- Permisiuni și Roluri: Partea de permisiuni și drepturi poate fi gestionată prin toggle-uri, chiar dacă un sistem de roluri și permisiuni este, în general, mai complex.
Dimensiunile Toggle-urilor și Managementul Complexității
Mihai a subliniat că, deși feature flags sunt puternice, ele vin la pachet cu o anumită complexitate. De aceea, a recomandat "Constrain the number of toggles in your system" (limitați numărul de toggle-uri din sistem), pentru a evita acumularea de "technical debt". Două dimensiuni cheie în alegerea implementării corecte sunt longevitatea și dinamismul toggle-urilor:
- Longevitatea: Cât timp ar trebui să trăiască un toggle.
- Release toggle: Câteva zile până la câteva săptămâni, apoi ar trebui șters.
- Ops toggle: Pot dura mai mult, scopul lor fiind de a închide funcționalități în caz de stres.
- Experimentare: Poate dura câteva luni, în funcție de necesitatea de a colecta feedback.
- Permission toggle: Ar trebui să fie pe termen lung.
- Dinamismul: Cât de mare este dinamicitatea necesară.
- Trunk-based development: Cel mai puțin dinamic, deoarece schimbarea se face prin deploy.
- Release toggle și altele: Pot fi foarte dinamice, contextul depinzând de utilizator sau alți parametri.
Mihai a menționat, de asemenea, că articolul lui Martin Fowler despre Feature Toggles vorbește despre pattern-uri și modalități de abordare a complexității. El a recomandat ca "temă" să fie evaluate și numărate toggle-urile existente în sisteme.
Dezbaterea cu publicul a atins și aspecte precum:
- Gestionarea dependențelor între toggle-uri.
- Necesitatea de a șterge toggle-urile vechi pentru a reduce complexitatea codului.
- Provocarea testării, deoarece prezența toggle-urilor dublează efortul de testare.
- Diferențele în gestionarea feature flags între aplicațiile web și cele mobile, unde UI-ul este "ars" în aplicație și necesită aprobări de la magazinele de aplicații.
Concluzie
Ediția #48 a Sibiu Web Meetup a oferit o perspectivă valoroasă și pragmatică asupra modului în care feature flags pot fi folosite pentru a îmbunătăți procesele de dezvoltare, testare, lansare și monetizare a produselor software. Prezentarea lui Mihai Cotu a subliniat importanța de a gestiona cu atenție complexitatea adusă de toggle-uri, recomandând o abordare lean și conștientă pentru a maximiza beneficiile acestei tehnici puternice.