Přepínání vlastností
Přepínání vlastností (anglicky feature toggle, feature switch, feature flag, feature gate, feature flipper nebo conditional feature) je technika při vývoji softwaru, která umožňuje měnit chování softwaru bez změny kódu. Umožňuje zapínat a vypínat určité funkce aplikace při běhu, bez potřeby aplikaci znovu sestavovat a nasadit. Přepínání vlastností poskytuje alternativu k udržování několika větví zdrojového kódu. Využívá podmínku nebo podmínky v kódu, které aktivují nebo obcházejí určitý softwarový rys. V agilním prostředí se přepínač používá v produkci, aby se funkce na vyžádání zapnula pro některé nebo všechny uživatele. Přepínače funkcí tak ulehčují časté vydávání nových verzí softwaru a usnadňují používání pokročilých strategií zavádění funkcí, jako je například vydávání kanárkových verzí a A/B testování.[1][2]
Přepínání vlastností poskytuje podporu pro kontinuální doručování i v případě, kdy nové verze nejsou do produkce nasazovány kontinuálně, tím, že určitá funkčnost může být zabudována do hlavní větve před svým úplným dokončením. Pokud lze novou vlastnost zapínat a vypínat, může být okamžitě zahrnuta do produktu a testována v testovacím prostředí. Cykly integrace software se zkracují a je možné poskytnut verzi připravenou k nasazení do produkce.[3]
Dalším využitím této techniky je umožnit vývojářům vydat verzi produktu, která má nedokončené funkce. Tyto nedokončené funkce jsou skryté, takže se v uživatelském rozhraní nezobrazují. Začleňování funkcí do produkční větve, případně jejich vyřazování, je méně náročné, a díky tomu je možné vydávat více malých inkrementálních verzí softwaru.[4]
Implementace
Přepínače funkcí jsou v zásadě proměnné, které se testují v podmíněných příkazech, a na základě jejich hodnot přepínat nebo obcházet funkce, které nejsou připraveny k nasazení. Blok kódu za takovou běhovou proměnnou je stále přítomen a může být podmíněně spuštěn, někdy i v rámci téhož životního cyklu aplikace; naproti tomu blok kódu, kyerý je za direktivou preprocesoru pro podmíněný překlad nebo zakomentovaný, spustit nelze. Přístup založený na přepínání funkcí dovoluje použít některou z těchto metod k vyčlenění určitých cest v kódu do různých fází vývoje.
Hlavním využitím přepínání funkcí je zabránit konfliktům, které mohou vzniknout při slučování změn v softwaru na poslední chvíli před vydáním, i když to může vést k přepínacímu dluhu. Přepínací dluh je způsoben přítomností mrtvého kódu v softwaru po trvalém zapnutí funkce a může způsobovat určité režiní náklady. Odstranit takovou část kódu je třeba opatrně, aby nedošlo k narušení zbytku kódu.
Existují dva hlavní typy přepínačů funkcí. Jedním z nich je přepínač pro vydání, o jehož zachování nebo odstranění rozhoduje vývojář před vydáním produktu podle toho, zda je funkční. Druhým je přepínač obchodní, který je ponechán, protože poskytuje jinou funkčnost, než původní kód.
Přepínání vlastností se může používat v následujících scénářích:[1]
- Přidání nového rysu do aplikace.
- Vylepšení existujícího rysu v aplikaci.
- Skrytí nebo zakázání určitého rysu.
- Rozšiřování rozhraní.
Přepínače vlastností mohou být realizována jako:[5]
- Řádkové položky v databázi.
- Vlastnosti v konfiguračním souboru.
- Položka poskytovaná externí službou poskytující příznaky rysů.
Skupiny vlastností
Skupiny vlastností (rysů) se skládají z přepínačů vlastností, které fungují dohromady. Umožňují vývojářům snadno řídit sadu příbuzných přepínačů.[6]
Kanárková verze
Kanárková verze (anglicky canary release, canary launch nebo canary deployment) umožňuje vývojářům nechat funkce postupně testovat malým počtem vývojářů. Příznaky funkcí jako alternativní způsob kanárkového spouštění[7] umožňují cílení podle geografických lokací nebo dokonce atributů uživatelů.[8] Pokud je výkon funkce neuspokojivý, pak ji lze vrátit zpět bez jakýchkoli nepříznivých dopadů.[9] Název vychází z použití kanárků v dolech a chemických provozech pro varování horníků nebo zaměstnanců před jedovatými plyny.[10]
Přijetí
Martin Fowler uvádí, že přepínač vydání, specifický typ přepínače funkcí, „by měl být vaší poslední volbou, když se zabýváte zaváděním funkcí do produkce“. Místo toho je lepší rozdělit funkci na menší části, z nichž lze každou implementovat a bezpečně zavést do dodávaného produktu, aniž by způsobila jiné problémy.[2]
Přepínání funkcí používá mnoho velkých webových sídel jako je Flickr,[11] Disqus,[12] Etsy,[13] Reddit,[14] Gmail[15] a Netflix,[16] stejně jako software jako je např. Google Chrome Canary nebo Microsoft Office.[17]
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Feature toggle na anglické Wikipedii.
- ↑ a b ALM Rangers - Software Development with Feature Toggles [online]. Červenec 2015. Dostupné online.
- ↑ a b Martin Fowler 29 October 2010. FeatureToggle [online]. Martinfowler.com, 2010-10-29 [cit. 2013-09-27]. Dostupné online.
- ↑ How GitHub Leverages Feature Flags to Ship Quickly and Safely, infoq, 2021-05-09.
- ↑ Programming JavaScript Applications. [s.l.]: [s.n.] Dostupné v archivu pořízeném dne 2016-09-15.
- ↑ ECHAGÜE, Pato, 2014. Managing Feature Flags. [s.l.]: O'Reilly Media. ISBN 9781492028598.
- ↑ ELLIOT, Eric, 2018. Programming JavaScript Applications. [s.l.]: O'Reilly Media.
- ↑ How to do Canary Release / Progressive Delivery with ConfigCat|ConfigCat Blog [online]. 2022-02-09 [cit. 2022-12-22]. Dostupné online. (anglicky)
- ↑ Canary Testing - Using Blue-Green Deployments and Feature Flags [online]. 2021-02-26 [cit. 2021-08-14]. Dostupné online.
- ↑ Canary launches – how and why to canary release [online]. 2015-04-07 [cit. 2017-01-09]. Dostupné online.
- ↑ BRÁDLOVÁ, Stanislava. Harcký kanárek sloužil jako indikátor kyslíku. Stal se členem hornických týmů v dolech [online]. 2024-12-07 [cit. 2025-06-07]. Dostupné online.
- ↑ HARMES, Ross. Flipping Out - code.flickr.com [online]. [cit. 2017-01-09]. Dostupné online.
- ↑ dcramer. Partial Deployment with Feature Switches [online]. 2010-07-09 [cit. 2013-10-10]. Dostupné v archivu pořízeném dne 2013-11-05.
- ↑ How does Etsy manage development and operations? [online]. 2011-02-04 [cit. 2017-01-09]. Dostupné online.
- ↑ reddit/reddit [online]. [cit. 2017-01-09]. Dostupné online.
- ↑ Developing Gmail's new look [online]. [cit. 2017-01-09]. Dostupné online.
- ↑ Preparing the Netflix API for Deployment [online]. [cit. 2017-01-09]. Dostupné online.
- ↑ WOLFE, Mike. Office FeatureGates: How Microsoft Can Break and Fix Their Applications in Under 24 Hours [online]. 2022-05-30 [cit. 2024-08-27]. Dostupné online.