Úvod do služby Analýza chyb
Služba Analýza chyb je určená pro testování služeb založených na Microsoft Azure Service Fabric. Pomocí služby Analýza chyb můžete vyvolat smysluplné chyby a spouštět kompletní testovací scénáře pro vaše aplikace. Tyto chyby a scénáře si procvičí a ověří množství stavů a přechodů, které služba bude mít po celou dobu ž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 účely jeho testování. Vývojář služeb je může použít jako stavební bloky k psaní složitých scénářů. Příklad:
- Restartujte uzel a simulujte libovolný počet situací, kdy se počítač nebo virtuální počítač restartuje.
- Přesuňte repliku stavové služby pro simulaci vyrovnávání zatížení, převzetí služeb při selhání nebo upgradu aplikace.
- Vyvolání ztráty kvora ve stavové službě za účelem vytvoření situace, kdy operace zápisu nemohou pokračovat, protože pro přijetí nových dat není dostatek "záloh" nebo "sekundárních" replik.
- Vyvolání ztráty dat ve stavové službě za účelem vytvoření situace, kdy je veškerý stav v paměti zcela vymazán.
Scénáře jsou složité operace složené 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žby
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, provádění testovacího scénáře a analýzu stavu.
Při spuštění akce selhání nebo testovacího scénáře se do služby Analýza chyb odešle příkaz, který spustí akci selhání nebo testovací scénář. Služba Analýza chyb je stavová, takže dokáže spolehlivě spouštět chyby a scénáře a ověřovat výsledky. Například dlouhotrvající testovací scénář může služba Fault Analysis Service spolehlivě spustit. A protože se testy spouští uvnitř clusteru, může služba prozkoumat stav clusteru a vašich služeb, aby poskytovala podrobnější informace o selháních.
Testování distribuovaných systémů
Service Fabric usnadňuje psaní a správu distribuovaných škálovatelných aplikací. Služba Analýza chyb usnadňuje testování distribuované aplikace podobně. Při testování je potřeba vyřešit tři hlavní problémy:
- Simulace nebo generování selhání, ke kterým může dojít ve scénářích reálného světa: Jedním z důležitých aspektů Service Fabric je to, že umožňuje distribuované aplikace zotavit se z různých selhání. Abychom však mohli otestovat, že se aplikace dokáže zotavit z těchto selhání, potřebujeme mechanismus pro simulaci nebo vygenerování těchto skutečných selhání v řízeném testovacím prostředí.
- Schopnost generovat korelované chyby: Základní chyby 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í, není triviální.
- Jednotné prostředí na různých úrovních vývoje a nasazení: Existuje mnoho systémů injektáže chyb, které můžou provádět různé typy selhání. Zkušenosti ve všech těchto situacích jsou ale špatné při přechodu ze scénářů pro vývojáře s jedním rámečkem na spouštění stejných testů ve velkých testovacích prostředích, aby je bylo možné použít pro testy v produkčním prostředí.
I když existuje mnoho mechanismů pro řešení těchto problémů, systém, který dělá totéž s požadovanými zárukami – úplně od vývojového prostředí s jedním rámečkem, aby se otestování v produkčních clusterech – chybí. Služba Analýza chyb pomáhá vývojářům aplikací soustředit se na testování obchodní logiky. Služba Analýza chyb poskytuje všechny možnosti potřebné k otestování interakce služby se základním distribuovaným systémem.
Simulace nebo generování scénářů selhání z reálného světa
Abychom mohli otestovat odolnost distribuovaného systému proti selháním, potřebujeme mechanismus pro generování selhání. I když se v teorii zdá, že generování selhání jako u uzlu je snadné, začne naráží na stejnou sadu problémů s konzistencí, které se Service Fabric snaží vyřešit. Pokud například chceme vypnout uzel, je požadovaný pracovní postup následující:
V klientovi vystavte požadavek na uzel vypnutí.
Odešlete požadavek na správný uzel.
a. Pokud uzel nebyl nalezen, měl by selhat.
b. Pokud se uzel najde, měl by se vrátit jenom v případě, že je uzel vypnutý.
Pokud chcete ověřit selhání z hlediska testu, musí test vědět, že když dojde k tomuto selhání, k selhání skutečně dojde. Zárukou, že Service Fabric poskytuje, je, že se uzel po dosažení uzlu vypne nebo už byl dolů. V obou případech by test měl být schopen správně zdůvodnět stav a úspěšně nebo správně selhat ve svém ověření. Systém implementovaný mimo Service Fabric, který provede stejnou sadu selhání, může dojít k mnoha problémům se sítí, hardwarem a softwarem, což by zabránilo poskytnutí 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 vyřešil, a proto bude služba Analýza chyb stále schopná poskytnout správnou sadu záruk.
Generování požadovaných událostí a scénářů
I když simulace skutečného selhání je konzistentně obtížné začít, schopnost generovat korelované selhání je ještě těžší. Například ke ztrátě dat dochází ve stavové trvalé službě, když dojde k následujícím věcem:
- Replikaci se zachytí jenom kvorum zápisu replik. Všechny sekundární repliky zaostávají za primárním serverem.
- Kvorum zápisu se z důvodu výpadku replik (kvůli balíčku kódu nebo uzlu, který se snižuje).
- Kvorum zápisu se nemůže zálohovat, protože dojde ke ztrátě dat replik (kvůli poškození disku nebo opětovnému přípravě počítače).
K těmto korelovaným selháním dochází v reálném světě, ale ne tak často jako jednotlivá selhání. Schopnost testovat tyto scénáře před tím, než dojde v produkčním prostředí, je kritická. Ještě důležitější je možnost simulovat tyto scénáře s produkčními úlohami za kontrolovaných okolností (uprostřed dne se všemi inženýry na palubě). To je mnohem lepší, než když se to stane poprvé v produkčním prostředí v 2:00.
Jednotné prostředí v různých prostředích
Tento postup byl tradičně tvořen třemi různými sadami prostředí, jednou pro vývojové prostředí, jednou pro testy a druhou pro produkční prostředí. Model byl:
- Ve vývojovém prostředí vytvořte přechody stavu, které umožňují testování jednotek jednotlivých metod.
- V testovacím prostředí vznikají chyby, které umožňují komplexní testy, které vykonávají různé scénáře selhání.
- Udržujte produkční prostředí nedotčené, abyste zabránili jakýmkoli nepřirozeným selháním a zajistili, že dojde k extrémně rychlé lidské reakci na selhání.
Ve službě Service Fabric prostřednictvím služby Analýza chyb navrhujeme obrátit se na tuto metodu a použít stejnou metodologii z vývojářského prostředí do produkčního prostředí. Existují dva způsoby, jak toho dosáhnout:
- K vyvolání kontrolovaných selhání použijte rozhraní API služby Fault Analysis Service z jednorázového prostředí až po produkční clustery.
- Pokud chcete clusteru poskytnout horečku, která způsobuje automatickou indukci selhání, použijte službu Analýza chyb k vygenerování automatických selhání. Řízení míry selhání prostřednictvím konfigurace umožňuje, aby se stejná služba testovala odlišně v různých prostředích.
S Service Fabric, i když se škála selhání v různých prostředích liší, skutečné mechanismy by byly stejné. To umožňuje mnohem rychlejší kanál pro nasazení kódu a možnost otestovat služby v reálném světě.
Použití služby Analýza chyb
C#
Funkce služby Fault Analysis Service jsou v oboru názvů System.Fabric v balíčku NuGet Microsoft.ServiceFabric. Pokud chcete použít funkce služby Analýza chyb, zahrňte do projektu balíček NuGet jako referenci.
PowerShell
Pokud chcete použít PowerShell, musíte nainstalovat sadu Service Fabric SDK. Po instalaci sady SDK se automaticky načte modul ServiceFabric PowerShell, který můžete použít.
Další kroky
Aby bylo možné vytvářet skutečně cloudové služby, je důležité zajistit, aby služby před nasazením i po něm mohly odolat skutečným chybám. V dnešním světě služeb je velmi důležitá schopnost rychle inovovat a 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í akcí selhání poskytovaných službou Analýza chyb.