Nová funkce je hotová, ale product owner chce rollout jen pro 10 % uživatelů. Bez feature flags to znamená branch, merge hell, dva deployment pipeline. S feature flags to je jeden if v kódu a config change.
Co jsou feature flags¶
Podmínka v kódu, která aktivuje nebo deaktivuje funkci. Toggle se spravuje externě — config soubor, databáze, dedikovaný service. Kód jde do produkce, ale funkce je „vypnutá” dokud ji nezapnete.
if (featureFlags.isEnabled("new-dashboard", currentUser)) {
return renderNewDashboard();
} else {
return renderOldDashboard();
}
Use cases¶
- Canary release: Zapnout pro 5 % uživatelů, sledovat metriky
- A/B testing: Varianta A vs. B, měření konverze
- Kill switch: Okamžité vypnutí problematické funkce
- Trunk-based development: Všichni pracují na main, WIP za flagem
Správa technického dluhu¶
Feature flags jsou technický dluh. Když je funkce stabilně zapnutá pro všechny, odstraňte flag a starý kód. Jinak skončíte se stovkami mrtvých podmínek. Pravidlo: flag starší než 30 dnů = ticket na odstranění.
Feature flags mění deployment kulturu¶
Deploy ≠ release. Kód jde do produkce kontinuálně, funkce se aktivují kontrolovaně. Méně stresu, více kontroly, rychlejší iterace.