Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Návod
Tento obsah je výňatek z elektronické knihy Architektura cloud-native .NET aplikací pro Azure, která je k dispozici na .NET Docs nebo jako bezplatné PDF ke stažení, které si můžete přečíst offline.
V kapitole 1 jsme potvrdili, že nativní cloud je hodně o rychlosti a flexibilitě. Uživatelé očekávají rychlou odezvu, inovativní funkce a nulový výpadek.
Feature flags jsou moderní technika nasazení, která pomáhá zvýšit flexibilitu pro aplikace nativní pro cloud. Umožňují nasadit nové funkce do produkčního prostředí, ale omezit jejich dostupnost. Při rychlém pohybu přepínače můžete aktivovat novou funkci pro konkrétní uživatele bez restartování aplikace nebo nasazení nového kódu. Oddělují vydání nových funkcí od nasazení kódu.
Příznaky funkcí jsou založené na podmíněné logice, která řídí viditelnost funkcí pro uživatele za běhu. V moderních cloudových nativních systémech je běžné nasazovat nové funkce do produkčního prostředí dříve, ale testovat je s omezenou cílovou skupinou. S nárůstem spolehlivosti je možné tuto funkci postupně zavádět širším cílovým skupinám.
Mezi další případy použití příznaků funkcí patří:
- Omezit prémiové funkce na konkrétní skupiny zákazníků, které jsou ochotné platit vyšší poplatky za předplatné.
- Stabilizovat systém rychlým deaktivováním problémové funkce, vyhnout se rizikům vrácení zpět nebo okamžitého hotfixu.
- Zakažte volitelnou funkci s vysokou spotřebou prostředků během období využití ve špičce.
- Proveďte testování na malých uživatelských segmentech a ověřte proveditelnost a popularitu.
Přepínače funkcí také usnadňují trunk-based vývoj. Jedná se o model větvení správy zdrojového kódu, ve kterém vývojáři spolupracují na funkcích v jedné větvi. Přístup minimalizuje riziko a složitost sloučení velkého počtu dlouhotrvajících větví funkcí. Funkce nejsou dostupné, dokud nebudou aktivovány.
Implementace funkčních příznaků
V podstatě je vlajka funkce odkazem na jednoduchý decision object. Vrátí logickou hodnotu on nebo off. Příznak obvykle zabalí blok kódu, který zapouzdřuje funkci. Stav příznaku určuje, jestli se daný blok kódu pro daného uživatele spustí. Obrázek 10–11 znázorňuje implementaci.
if (featureFlag) {
// Run this code block if the featureFlag value is true
} else {
// Run this code block if the featureFlag value is false
}
Obrázek 10–11 – jednoduchá implementace "feature flag"
Všimněte si, jak tento přístup odděluje rozhodovací logiku od kódu funkce.
V kapitole 1 jsme probírali Twelve-Factor App. Pokyny doporučují udržovat nastavení konfigurace mimo spustitelný kód aplikace. V případě potřeby je možné nastavení číst z externího zdroje. Hodnoty konfigurace příznaku funkce by také měly být nezávislé na základu kódu. Externí konfigurací příznaku v samostatném úložišti můžete změnit stav příznaku beze změny a opětovného nasazení aplikace.
Azure App Configuration poskytuje centralizované úložiště pro příznaky funkcí. Díky tomu můžete definovat různé druhy vlajek funkcí a rychle a s jistotou manipulovat s jejich stavy. Přidáním klientských knihoven App Configuration do aplikace umožníte funkci řízení funkčnosti. Podporují se různé architektury programovacích jazyků.
Příznaky funkcí je možné snadno implementovat ve službě ASP.NET Core. Instalace knihoven pro správu funkcí .NET a poskytovatele konfigurace aplikací umožňuje deklarativní přidávání příznaků funkcí do kódu.
FeatureGate Umožňují atributy, abyste nemuseli ručně zapisovat příkazy if v rámci základu kódu.
Po nakonfigurování ve třídě Startup můžete přidat funkcionalitu vlajek funkcí na úrovni kontroleru, akce nebo prostřednictvím middlewaru. Obrázek 10–12 představuje implementaci kontroleru a akce:
[FeatureGate(MyFeatureFlags.FeatureA)]
public class ProductController : Controller
{
...
}
[FeatureGate(MyFeatureFlags.FeatureA)]
public IActionResult UpdateProductStatus()
{
return ObjectResult(ProductDto);
}
Obrázek 10–12 – Implementace příznaku funkce v kontroleru a akci
Pokud je příznak funkce zakázaný, uživatel obdrží stavový kód 404 (Nenalezena) bez textu odpovědi.
Příznaky funkcí lze také vložit přímo do tříd jazyka C#. Obrázek 10–13 ukazuje injektáž příznaků funkcí:
public class ProductController : Controller
{
private readonly IFeatureManager _featureManager;
public ProductController(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
}
Obrázek 10-13 – injekce funkčního příznaku do třídy
Knihovny správy funkcí spravují životní cyklus příznaků funkcí na pozadí. Například pokud chcete minimalizovat počet volání do úložiště konfigurace, knihovny ukládají stavy příznaků do mezipaměti po zadanou dobu. Během volání žádosti můžou zaručit neměnnost stavů příznaků. Nabízejí také Point-in-time snapshot. Historii libovolné hodnoty klíče můžete rekonstruovat a poskytnout její předchozí hodnotu v libovolném okamžiku během předchozích sedmi dnů.