Úvod do služby Fault Analysis Service

Služba Fault Analysis Service je určená pro testování služeb, které jsou založené na Microsoft Azure Service Fabric. Se službou Fault Analysis Service můžete vyvolat smysluplné chyby a spouštět pro své aplikace kompletní testovací scénáře. Tyto chyby a scénáře procvičují a ověřují řadu stavů a přechodů, které služba bude mít po celou dobu své životnosti, a to vše řízeným, bezpečným a konzistentním způsobem.

Akce jsou jednotlivé chyby, které cílí na službu pro jejím testování. Vývojář služeb je může použít jako stavební bloky pro psaní složitých scénářů. Příklad:

  • Restartováním uzlu můžete simulovat libovolný počet situací, kdy se počítač nebo virtuální počítač restartuje.
  • Přesuňte repliku stavové služby a simulujte vyrovnávání zatížení, převzetí služeb při selhání nebo upgrade aplikace.
  • Vyvolání ztráty kvora ve stavové službě za účelem vytvoření situace, kdy operace zápisu nemohou pokračovat, protože není k dispozici dostatek "záložních" nebo "sekundárních" replik pro příjem nových dat.
  • Vyvolání ztráty dat ve stavové službě za účelem vytvoření situace, kdy se veškerý stav v paměti zcela vymaže.

Scénáře jsou složité operace, které se skládají z jedné nebo více akcí. Služba Analýza chyb poskytuje dva předdefinované kompletní scénáře:

  • Scénář chaosu
  • Scénář převzetí služeb při selhání

Testování jako služba

Služba Analýza chyb je systémová služba Service Fabric, která se automaticky spouští s clusterem Service Fabric. Tato služba funguje jako hostitel pro injektáž chyb, spuštění testovacího scénáře a analýzu stavu.

Služba Analýza chyb

Když je inicializována akce selhání nebo testovací scénář, odešle se do služby Fault Analysis Service příkaz, který spustí akci selhání nebo testovací scénář. Služba Fault Analysis Service je stavová, takže může spolehlivě spouštět chyby a scénáře a ověřovat výsledky. Například dlouhotrvající testovací scénář může být spolehlivě spuštěn službou Fault Analysis Service. A protože se testy provádějí uvnitř clusteru, může služba zkoumat stav clusteru a vašich služeb a poskytovat podrobnější informace o selháních.

Testování distribuovaných systémů

Service Fabric výrazně usnadňuje psaní a správu distribuovaných škálovatelných aplikací. Podobně usnadňuje testování distribuované aplikace služba Fault Analysis Service. Při testování je potřeba vyřešit tři hlavní problémy:

  1. Simulace nebo generování selhání, ke kterým může dojít v reálných scénářích: Jedním z důležitých aspektů Service Fabric je, že umožňuje zotavení distribuovaných aplikací z různých selhání. Abychom však mohli otestovat, že se aplikace dokáže z těchto selhání zotavit, potřebujeme mechanismus pro simulaci/vygenerování těchto skutečných selhání v řízeném testovacím prostředí.
  2. Schopnost generovat korelovaná selhání: Základní selhání v systému, jako jsou selhání sítě a selhání počítačů, se dají snadno vytvořit jednotlivě. Generování významného počtu scénářů, ke kterým může dojít v reálném světě v důsledku interakcí těchto jednotlivých selhání, je netriviální.
  3. Jednotné prostředí napříč různými úrovněmi vývoje a nasazení: Existuje mnoho systémů injektáže chyb, které můžou provádět různé typy selhání. Ve všech těchto scénářích je ale špatné prostředí při přechodu od scénářů pro vývojáře s jedním polem, ke spouštění stejných testů ve velkých testovacích prostředích k jejich použití pro testy v produkčním prostředí.

I když existuje mnoho mechanismů pro řešení těchto problémů, chybí systém, který provádí totéž s požadovanými zárukami – z jedno krabicového vývojářského prostředí pro testování v produkčních clusterech. Služba Fault Analysis Service pomáhá vývojářům aplikací soustředit se na testování obchodní logiky. Služba Fault Analysis Service poskytuje všechny možnosti potřebné k otestování interakce služby se základním distribuovaným systémem.

Simulace a generování scénářů selhání z reálného světa

K otestování odolnosti distribuovaného systému proti selháním potřebujeme mechanismus generování chyb. I když se teoreticky zdá, že generování selhání, jako je mimo provoz uzlu, je snadné, začne narážení na stejnou sadu problémů s konzistencí, které se Service Fabric snaží vyřešit. Pokud chceme například vypnout uzel, požadovaný pracovní postup je následující:

  1. Z klienta vyžádejte žádost o vypnutí uzlu.

  2. Odešlete požadavek na správný uzel.

    a. Pokud uzel není nalezen, měl by selhat.

    b. Pokud je uzel nalezen, měl by se vrátit pouze v případě, že je uzel vypnutý.

Pokud chce test ověřit selhání z hlediska testu, musí vědět, že když dojde k této chybě, ve skutečnosti k chybě dojde. Zárukou, kterou Service Fabric poskytuje, je, že uzel přestane být nebo už byl mimo provoz, když příkaz dosáhl uzlu. V obou případech by test měl být schopen správně zdůvodnění stavu a při ověřování by měl být úspěšný nebo neúspěšný. Systém implementovaný mimo Service Fabric, který provádí stejnou sadu selhání, může dojít k mnoha problémům se sítí, hardwarem a softwarem, což by mu zabránilo v poskytování předchozích záruk. V případě dříve uvedených problémů Service Fabric překonfiguruje stav clusteru tak, aby tyto problémy obcházal, a proto bude služba Analýza chyb stále schopna poskytnout správnou sadu záruk.

Generování požadovaných událostí a scénářů

I když simulace reálného selhání konzistentně je obtížné začít, schopnost generovat korelované chyby je ještě těžší. Ke ztrátě dat například dochází ve stavové trvalé službě, když dojde k následujícím věcem:

  1. Replikace se zachytí pouze kvorum pro zápis replik. Všechny sekundární repliky zaostávají za primární replikou.
  2. Kvorum zápisu přestane fungovat kvůli výpadku replik (kvůli výpadku balíčku kódu nebo uzlu).
  3. Kvorum zápisu se nemůže vrátit zpět, protože dojde ke ztrátě dat pro repliky (kvůli poškození disku nebo opětovnému nastavení počítače).

K těmto korelačním selháním dochází v reálném světě, ale ne tak často jako individuální selhání. Schopnost otestovat tyto scénáře před tím, než k nim dojde v produkčním prostředí, je kritická. Ještě důležitější je schopnost simulovat tyto scénáře s produkčními úlohami za kontrolovaných okolností (uprostřed dne se všemi techniky na palubě). To je mnohem lepší, než když se to stane poprvé v produkčním prostředí ve 2:00.

Jednotné prostředí v různých prostředích

Tradičně bylo zvykem vytvořit tři různé sady prostředí, jednu pro vývojové prostředí, jednu pro testy a jednu pro produkční prostředí. Model byl:

  1. Ve vývojovém prostředí vytvořte přechody stavu, které umožňují testování jednotek jednotlivých metod.
  2. V testovacím prostředí vytvořte chyby, které umožňují kompletní testy, které se chytnou různé scénáře selhání.
  3. Udržujte produkční prostředí nedotčené, aby se zabránilo případným nepřirozenému selhání a zajistilo se, že na selhání dojde k extrémně rychlé lidské reakci.

Ve Službě Service Fabric prostřednictvím služby Fault Analysis Service navrhujeme tuto metodu změnit a použít stejnou metodiku z vývojářského prostředí do produkčního prostředí. Existují dva způsoby, jak toho dosáhnout:

  1. Pokud chcete vyvolat řízené chyby, použijte rozhraní API služby Fault Analysis Service z jednorázového prostředí až po produkční clustery.
  2. Pokud chcete clusteru dát horečku, která způsobuje automatickou indukci selhání, použijte službu Fault Analysis Service k vygenerování automatických selhání. Řízení míry selhání prostřednictvím konfigurace umožňuje, aby se stejná služba testovala různě v různých prostředích.

V případě Service Fabric by se sice škála selhání v různých prostředích lišila, ale skutečné mechanismy by byly stejné. To umožňuje mnohem rychlejší kanál od kódu k nasazení a možnost otestovat služby v reálném zatížení.

Použití služby Fault Analysis Service

C#

Funkce služby Analýza chyb jsou v oboru názvů System.Fabric v balíčku NuGet Microsoft.ServiceFabric. Pokud chcete používat funkce služby Fault Analysis Service, zahrňte balíček nuGet jako referenci do projektu.

PowerShell

Pokud chcete používat PowerShell, musíte nainstalovat sadu Service Fabric SDK. Po instalaci sady SDK se automaticky načte modul Prostředí PowerShell serviceFabric, který můžete použít.

Další kroky

Aby bylo možné vytvářet skutečně cloudové služby, je důležité zajistit, aby před nasazením i po nasazení mohly služby odolat selháním z reálného světa. V dnešním světě služeb je velmi důležitá schopnost rychle inovovat a rychle přesunout kód do produkce. Služba Fault Analysis Service pomáhá vývojářům služeb přesně to udělat.

Začněte testovat aplikace a služby pomocí předdefinovaných testovacích scénářů nebo vytvořte vlastní testovací scénáře pomocí chybových akcí poskytovaných službou Fault Analysis Service.