Co je feature flag
Feature flag (česky přepínač funkcí, anglicky také feature toggle) je vypínač přímo v kódu, který rozhoduje, jestli se daná funkce spustí, nebo ne. Rozhodnutí padá až za běhu aplikace, takže chování změníte, aniž byste museli nasazovat novou verzi. Funkci obalíte podmínkou a hodnota v konfiguraci, kterou často spravujete mimo kód, určí, jestli podmínka platí.
Tím oddělíte dvě věci, které spolu obvykle splývají: nasazení kódu a vydání funkce uživatelům. Kód může v produkci ležet klidně týdny, vypnutý, dokud se nerozhodnete, že je připravený.
Lidsky řečeno
Feature flag funguje jako vypínač světla v místnosti. Dráty už máte ve zdi, ale světlo se rozsvítí, až když cvaknete vypínačem. Můžete tak natáhnout vedení do celého domu dopředu a rozsvěcet místnosti jednu po druhé, místo abyste kvůli každému novému světlu znovu sekali do zdi.
K čemu feature flags slouží
- Postupné nasazování. Novou funkci zapnete nejdřív pro 1 % uživatelů, sledujete metriky a chybovost a pak ji rozšíříte na 10 %, 50 % a nakonec na všechny. Když se něco rozbije, dotkne se to jen malé skupiny.
- A/B testování. Polovině uživatelů ukážete verzi A, druhé polovině verzi B, a pak porovnáte, která funguje lépe. O tom, kdo co uvidí, rozhoduje flag.
- Nouzový vypínač. Když se funkce v produkci začne chovat nečekaně, vypnete flag během pár vteřin. Žádné překotné nasazování, žádné vracení k předchozí verzi, žádné čekání, než doběhne pipeline.
- Oddělení nasazení od vydání. Tým může nedokončenou práci sloučit do hlavní větve schovanou za flag a dál posílat malé změny, místo aby kód držel v dlouhožijící větvi.
- Řízení přístupu. Funkci otevřete jen interním testerům, beta uživatelům nebo jednomu platícímu zákazníkovi, který ji potřebuje dřív.
Doporučení a úskalí
- Berte flagy jako dočasné. Flag pro nasazení má svůj úkol, a jakmile funkce naběhne naplno, flag i mrtvý kód za ním smažte. Flagy, které zůstanou ležet, se promění ve skrytou složitost, do které si nikdo netroufne sáhnout.
- Pojmenovávejte je srozumitelně.
checkout-new-payment-flowvám řekne, co dělá a kdy může pryč.flag_v2_tempvám za půl roku neřekne nic. - Hlídejte si kombinace. Každý flag zdvojnásobí počet možných stavů, ve kterých se systém může nacházet. Deset nezávislých flagů znamená přes tisíc kombinací a všechny otestovat nezvládnete. Držte jejich počet nízko a logiku jednoduchou.
- Udržujte kód a konfiguraci v souladu. Flag, na který se kód odkazuje, ale v konfiguraci chybí (nebo naopak), je tichá chyba, která čeká na svou chvíli. Vždy si určete, co je výchozí stav, když systém flag nezná.
- Neschovávejte za flagy trvalou logiku. Flag, který rozhoduje mezi placeným a bezplatným tarifem, není přepínač, který někdy smažete. To je byznysová logika a patří do vašeho datového modelu, ne do nástroje pro postupné nasazování.
Jakmile máte víc než pár přepínačů, vyplatí se sáhnout po specializované službě jako LaunchDarkly, Unleash, Flagsmith nebo PostHog. Přidávají pravidla pro cílení, historii změn a rozhraní, ve kterém flag bezpečně přepne i člověk mimo vývoj.
Související články
- Co je CI/CD? - Jak týmy automaticky sestaví, otestují a nasadí kód, aby se malé změny dostaly k uživatelům rychle a bezpečně.
- Co je sémantické verzování (SemVer)? - Pravidla pro číslování verzí, podle kterých na první pohled poznáte, jak riziková aktualizace je.
Chcete být o krok napřed?
Nenechte si utéct naše nejlepší postřehy. Žádný spam, jen praktické analýzy, pozvánky na exkluzivní eventy a shrnutí podcastů přímo do vaší schránky.
