🟡 Intermediate

Feature Flags — Postupné nasadzovanie funkcionalít

Feature flags (feature toggles) umožňujú zapínať a vypínať funkcionality bez nasadzovania nového kódu. Sú kľúčovým nástrojom pre bezpečné releasy a experimentovanie.


Čo sú Feature Flags

Feature flag je podmienka v kóde, ktorá rozhoduje, či sa používateľovi zobrazí nová funkcionalita:

if (featureFlags.isEnabled('new-checkout', user)) {
  renderNewCheckout();
} else {
  renderOldCheckout();
}

Hodnotu flagu riadi externý systém — nie deployment, nie kód. To umožňuje oddeliť release (nasadenie kódu) od launch (sprístupnenie funkcionality používateľom).

Typy feature flags:

  • Release flags — skrytie nedokončenej funkcionality
  • Experiment flags — A/B testing
  • Ops flags — kill switch pre problémové features
  • Permission flags — funkcionalita len pre konkrétnych používateľov

Nástroje pre Feature Flags

Nástroj Typ Popis
LaunchDarkly SaaS Enterprise leader, real-time, targeting
Unleash Open-source Self-hosted, flexibilný, GDPR friendly
Flagsmith Open-source/SaaS Remote config + flags
Split SaaS Feature flags + metriky
PostHog Open-source Feature flags + product analytics
ConfigCat SaaS Jednoduchý, cenovo dostupný

LaunchDarkly je štandard v enterprise prostredí — ponúka targeting podľa atribútov, percentuálny rollout, multivariate flags a integráciu s observability nástrojmi.

Unleash je najlepšia open-source alternatíva — môžete ho hostovať sami, má SDK pre všetky jazyky a podporuje gradual rollout stratégie.

Postupný Rollout a A/B Testing

Canary release s feature flags:

  1. Nasaďte kód do produkcie s flagom vypnutým
  2. Zapnite pre 1% používateľov
  3. Monitorujte error rate a metriky
  4. Postupne zvyšujte na 5% → 25% → 50% → 100%
  5. Ak niečo zlyhá — okamžitý rollback vypnutím flagu

A/B testing:

  • Rozdeľte používateľov do skupín (control/variant)
  • Každá skupina vidí inú verziu
  • Merajte konverzie, engagement, performance
  • Rozhodnutie na základe dát, nie odhadov

Praktické použitie

  • Trunk-based development — všetci commitujú do main, nedokončené features sú za flagmi
  • Beta programy — sprístupnenie pre vybraných používateľov
  • Kill switch — okamžité vypnutie problémovej funkcionality
  • Gradual migration — postupný presun na nový backend

Best Practices

  • Každý flag musí mať vlastníka a expiration date
  • Pravidelne čistite staré flagy — technical debt rastie rýchlo
  • Testujte obe cesty (flag on aj off)
  • Logujte stav flagov pri každom requeste pre debugovanie
  • Nepoužívajte feature flags ako konfiguračný systém
  • Implementujte flag závislosti opatrne — príliš veľa flagov vytvára kombinatorickú explóziu

Feature flags sú most medzi rýchlym deploymentom a bezpečným launchom. Správne použité dramaticky znižujú riziko nasadzovania.