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:
- Nasaďte kód do produkcie s flagom vypnutým
- Zapnite pre 1% používateľov
- Monitorujte error rate a metriky
- Postupne zvyšujte na 5% → 25% → 50% → 100%
- 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.