Průběžné ověřování s využitím zátěžového testování Azure a nástroje Azure Chaos Studio
S tím, jak jsou aplikace a služby nativní pro cloud složitější, může být nasazení změn a nových verzí pro ně náročné. Výpadky jsou často způsobeny vadným nasazením nebo vydáním. K chybám ale může dojít i po nasazení, když aplikace začne přijímat skutečný provoz, zejména v složitých úlohách, které běží v vysoce distribuovaných cloudových prostředích s více tenanty a které spravuje několik vývojových týmů. Tato prostředí vyžadují větší odolnost proti chybám, jako je logika opakování a automatické škálování, které se obvykle obtížně testují během procesu vývoje.
Proto je průběžné ověřování v prostředí, které je podobné produkčnímu prostředí, důležité, abyste mohli najít a opravit všechny problémy nebo chyby co nejdříve ve vývojovém cyklu. Týmy úloh by se měly testovat v rané fázi procesu vývoje (posun doleva) a zajistit, aby vývojáři mohli testovat v prostředí, které je blízko produkčnímu prostředí.
Klíčové úlohy mají požadavky na vysokou dostupnost s cíli 3, 4 nebo 5 devítky (99,9 %, 99,99 % nebo 99,999 %). Pro dosažení těchto cílů je zásadní implementovat důkladné automatizované testování .
Průběžné ověřování závisí na jednotlivých úlohách a na vlastnostech architektury. Tento článek obsahuje průvodce přípravou a integrací zátěžového testování Azure a nástroje Azure Chaos Studio do běžného vývojového cyklu.
1 – Definování testů na základě očekávaných prahových hodnot
Průběžné testování je složitý proces, který vyžaduje správnou přípravu. Co se bude testovat a očekávané výsledky musí být jasné.
V PROSTŘEDÍ PE:06 – Doporučení pro testování výkonu a RE:08 – Doporučení pro návrh strategie testování spolehlivosti doporučí architektura Azure Well-Architected Framework, abyste mohli začít identifikací klíčových scénářů, závislostí, očekávaného využití, dostupnosti, výkonu a cílů škálovatelnosti.
Pak byste měli definovat sadu měřitelných prahových hodnot pro kvantifikaci očekávaného výkonu klíčových scénářů.
Tip
Mezi příklady prahových hodnot patří očekávaný počet přihlášení uživatelů, žádosti za sekundu pro dané rozhraní API a operace za sekundu pro proces na pozadí.
Prahové hodnoty byste měli použít k vývoji modelu stavu pro vaši aplikaci, a to jak pro testování, tak pro provoz aplikace v produkčním prostředí.
Dále pomocí hodnot definujte zátěžový test , který generuje realistický provoz pro testování výkonu standardních hodnot aplikací, ověřování očekávaných operací škálování atd. V předprodukčním prostředí je potřeba trvalý umělý uživatelský provoz, protože bez použití je obtížné odhalit problémy s modulem runtime.
Zátěžové testování zajišťuje, že změny provedené v aplikaci nebo infrastruktuře nezpůsobí problémy a systém stále splňuje očekávaná kritéria výkonu a testu. Neúspěšné testovací spuštění, které nesplňuje kritéria testu, značí, že potřebujete upravit směrný plán nebo že došlo k neočekávané chybě.
I když automatizované testy představují každodenní využití, měli byste pravidelně spouštět ruční zátěžové testy, abyste ověřili, jak systém reaguje na neočekávané špičky.
Druhou částí průběžného ověřování je injektáž selhání (chaos engineering). Tento krok ověří odolnost systému tím, že otestuje, jak reaguje na chyby. Navíc, že všechny míry odolnosti, jako je logika opakování, automatické škálování a další, fungují podle očekávání.
2. Implementace ověřování pomocí zátěžového testování a chaos studia
Microsoft Azure poskytuje tyto spravované služby pro implementaci zátěžového testování a chaosu:
- Zátěžové testování Azure vytváří syntetické uživatelské zatížení aplikací a služeb.
- Azure Chaos Studio poskytuje možnost provádět experimentování chaosu tím, že systematicky vloží chyby do komponent aplikací a infrastruktury.
Chaos Studio a zátěžové testování můžete nasadit a nakonfigurovat prostřednictvím webu Azure Portal, ale v kontextu průběžného ověřování je důležitější, že máte rozhraní API k nasazení, konfiguraci a spouštění testů programovým a automatizovaným způsobem. Díky těmto dvěma nástrojům můžete společně sledovat, jak systém reaguje na problémy a jak se dokáže samostatně léčit v reakci na selhání infrastruktury nebo aplikace.
Následující video ukazuje kombinovanou implementaci chaosu a zátěžového testování integrovaného v Azure DevOps:
Pokud vyvíjíte kritickou úlohu, využijte referenční architektury, podrobné pokyny, ukázkové implementace a artefakty kódu poskytované jako součást projektu Azure Mission-Critical a architektury Azure Well-Architected Framework.
Implementace Mission-Critical nasadí službu zátěžového testování prostřednictvím Terraformu a obsahuje kolekci skriptů obálky PowerShellu Core pro interakci se službou prostřednictvím jejího rozhraní API. Tyto skripty je možné vložit přímo do kanálu nasazení.
Jednou z možností v referenční implementaci je provést zátěžový test přímo z kompletního kanálu (e2e), který se používá ke spouštění jednotlivých vývojových prostředí (specifických pro větev):
Kanál automaticky spustí zátěžový test s experimenty s chaosem (v závislosti na výběru) paralelně:
Poznámka:
Spuštění experimentů chaosu během zátěžového testu může mít za následek vyšší latenci, vyšší dobu odezvy a dočasně vyšší míru chyb. Všimněte si vyšších čísel, dokud se operace horizontálního navýšení kapacity nedokončí nebo se dokončí převzetí služeb při selhání v porovnání se spuštěním bez experimentů chaosu.
V závislosti na tom, jestli je povolené testování chaosu a volba experimentů, se můžou základní definice lišit, protože tolerance chyb se může lišit v "normálním" stavu a "chaosu".
3 – Úprava prahových hodnot a stanovení směrného plánu
Nakonec upravte prahové hodnoty zátěžového testu pro běžná spuštění, abyste ověřili, že aplikace (stále) poskytuje očekávaný výkon a nevyvolává žádné chyby. Mít samostatný směrný plán pro testování chaosu, který toleruje očekávané špičky v mírách chyb a dočasné snížení výkonu. Tato aktivita je nepřetržitá a musí se pravidelně opakovat. Například po zavedení nových funkcí, změně skladových položek služeb a dalších.
Služba Azure Load Testing poskytuje integrovanou funkci označovanou jako testovací kritéria , která umožňují zadat určitá kritéria, která musí test projít. Tuto funkci lze použít k implementaci různých směrných plánů.
Tato funkce je dostupná prostřednictvím webu Azure Portal a prostřednictvím rozhraní API pro zátěžové testování a skripty obálky vyvinuté jako součást azure Mission-critical poskytují možnost předat definici standardních hodnot založených na formátu JSON.
Důrazně doporučujeme integrovat tyto testy přímo do kanálů CI/CD a spouštět je v počátečních fázích vývoje funkcí. Příklad najdete v ukázkové implementaci v referenční implementaci Azure Mission-Critical.
V souhrnu je selhání v jakémkoli složitém distribuovaném systému nevyhnutelné a řešení proto musí být navrženo (a testováno) pro zpracování selhání. S návrhem a provozem vysoce spolehlivých aplikací můžete odvodit maximální hodnotu z cloudu Microsoftu.
Další krok
Projděte si oblast návrhu nasazení a testování důležitých úloh.