Doporučení pro návrh strategie testování spolehlivosti

Platí pro toto doporučení kontrolního seznamu pro spolehlivost architektury Azure Well-Architected:

RE:08 Otestujte scénáře odolnosti a dostupnosti tím, že ve svém testovacím a produkčním prostředí uplatníte principy chaosu. Testováním můžete zajistit, aby vaše strategie řádné implementace snížení výkonu a škálování byly efektivní, a to provedením aktivního selhání a simulovaného zátěžového testování.

Tato příručka popisuje doporučení pro návrh strategie testování spolehlivosti pro ověření a optimalizaci spolehlivosti úloh. Testování spolehlivosti se zaměřuje na odolnost a dostupnost úloh, konkrétně na kritické toky, které identifikujete při návrhu řešení. Tato příručka obsahuje obecné pokyny k testování a pokyny, které jsou specifické pro injektáž chyb a přípravu chaosu.

Definice

Období Definice
Dostupnost Doba, po kterou úloha aplikace běží v dobrém stavu bez významných výpadků.
Řízený chaos Praxe vymýšlání aplikací a služeb skutečným stresům a selháním. Cílem inženýringu chaosu je vytvořit a ověřit odolnost vůči nespolehlivým podmínkám a chybějícím závislostem.
Vkládání chyb Akt zavedení chyby do systému za účelem otestování odolnosti systému.
Obnovitelnost Synonymum pro odolnost proti chybám.
Odolnost Schopnost úlohy aplikace odolat režimům selhání a zotavit se z toho.

Klíčové strategie návrhu

Obecné pokyny k testování

  • Rutinně provádí testování za účelem ověření stávajících prahových hodnot, cílů a předpokladů. Pokud v úloze dojde k významné změně, spusťte pravidelné testování. Většinu testování proveďte v testovacích a přípravných prostředích. Je také užitečné spustit v produkčním systému podmnožinu testů. Naplánujte paritu 1:1 klíčových testovacích prostředí s produkčním prostředím.

  • Automatizujte testování, abyste zajistili konzistentní pokrytí a reprodukovatelnost testů. Automatizujte běžné úlohy testování a integrujte je do procesů sestavení. Ruční testování softwaru je zdlouhavé a náchylné k chybám, ale můžete provést ruční průzkumné testování. V případech, kdy potřebujete vyvinout automatizované testování, použijte ruční testování k určení rozsahu testů, které se mají vyvíjet.

  • Osvojte si přístup k testování odolnosti a dostupnosti v rané fázi vývojového cyklu pomocí testování posunu doleva.

  • Přizpůsobte si jednoduchý formát dokumentace, aby každý snadno porozuměl procesu a výsledkům každého běžného testu.

  • Podělte se o zdokumentované výsledky s příslušnými týmy, jako jsou provozní týmy, technologické vedení, obchodní účastníci a účastníci zotavení po havárii. Výsledky by měly informovat o zpřesnění cílů spolehlivosti, jako jsou cíle na úrovni služeb (SLO), smlouvy o úrovni služeb (SLA), cíle doby obnovení (RTO) a cíle bodů obnovení (RPO).

  • Vytvořte pro zálohy pravidelnou testovací frekvenci. Obnovte data do izolovaných systémů, abyste měli jistotu, že zálohy jsou platné a obnovení funkční.

  • Zdokumentujte a sdílejte metriky doby obnovení se zúčastněnými stranami zotavení po havárii, abyste zajistili, že jsou očekávání pro obnovení odpovídající.

  • Použijte standardní postupy testování nasazení , které vám pomůžou zajistit, že máte automatizovaný, předvídatelný a efektivní proces nasazení.

  • Otestujte schopnost úlohy odolat přechodným selháním. Další informace najdete v tématu Doporučení pro zpracování přechodných chyb.

  • Otestujte schopnost úlohy reagovat na změny ve vzorcích zatížení a špičky ve využití. Tyto informace vám pomůžou otestovat strategii škálování. Informace o zátěžových a zátěžových testech najdete v tématu Doporučení pro testování.

  • Pomocí injektáže chyb otestujte, jak vaše úloha zpracovává selhání v závislých službách nebo jiných závislostech.

  • Otestujte a ověřte, jak váš samoopravený a sebezáchovy návrh reaguje na poruchy. Testování automatizovaných a ručních operací obnovení

  • Otestujte svůj plán zotavení po havárii , abyste mohli reagovat na závažná selhání a další závažné incidenty.

  • Pomocí injektáže chyb otestujte schopnost úlohy řádně snížit výkon a minimalizovat poloměr výbuchu při selhání součásti.

Využití plánovaných i neplánovaných výpadků

Pokud je vaše úloha offline kvůli plánované údržbě nebo neplánovanému výpadku, máte jedinečnou příležitost provést testování a zlepšit porozumění úlohě. Následující části obsahují doporučení pro jednotlivé scénáře.

Plánovaná údržba

Pokud máte časová období plánované údržby aktualizací nebo oprav, můžete testovat komponenty a toky, které nejsou součástí údržby. Provádějte testy bez potenciálního rizika neočekávaného snížení zatížení nebo úplně offline. Pokud máte během časového období údržby dostatek času, můžete po dokončení údržby také otestovat komponenty a toky, které se na údržbě podílejí.

Neplánovaný výpadek

Využijte každý incident výpadku jako příležitost k získání dalších informací o vaší úloze a zlepšení její odolnosti pomocí následujících kroků seřazených podle priority:

  • Přepněte úlohy zpět do online režimu pro vaše zákazníky. Uděláte to tak, že provedete alternativní řešení problému, vyřešíte problém nebo zahájíte procesy obnovení.

  • Zjistěte původní příčinu výpadku a vyřešte ho. Pokud v rámci vyšetřování můžete opravit původní příčinu, zdokumentujte původní příčinu a opatření, která jste k jejímu vyřešení provedli. Pokud problém vyžaduje pozdější provedení dalšího časového období údržby, ujistěte se, že vaše zmírňující opatření dokážou zvládnout očekávanou zátěž tím, že ho důkladně otestujete. Ujistěte se, že jste nastavili dostatečné monitorování, které pokryje vaše zmírňující opatření.

  • Pokud je to možné, hledejte stejný problém nebo slabá místa konfigurace, které můžou být ovlivněné podobnými problémy, napříč všemi komponentami ve vaší úloze. Využijte tuto příležitost k proaktivnímu řešení těchto komponent. Projděte si historii incidentů a detekujte vzory podobných problémů napříč úlohou.

  • Využijte svá zjištění ke zlepšení testovací strategie. Ujistěte se, že jste úspěšně vyřešili původní příčinu a podobné problémy tím, že přímo otestujete stejnou chybu.

Pokyny k injektáži chyb a chaosu

Testování vkládáním chyb se řídí principy přípravy chaosu a zdůrazňuje schopnost úlohy reagovat na selhání komponent. Testování injektáže chyb v předprodukčním a produkčním prostředí Použití testování na vrstvy infrastruktury a aplikací Použijte informace, které jste získali doporučení pro provádění analýzy režimu selhání , abyste měli jistotu, že testujete pouze chyby, u kterých upřednostňujete, a že máte strategie zmírnění, které chyby řeší. Mezi klíčové pokyny při vytváření chaosu patří:

  • Buďte proaktivní. Nečekejte na selhání. Pokuste se předvídat selhání tím, že provedete experimenty s chaosem a zjistíte a opravíte problémy dříve, než ovlivní vaše produkční prostředí.

  • Přijměte selhání. Přijměte a učte se z chyb, ke kterým dochází ve vašem systému. Na selhání se můžete podívat jako na přirozenou součást složitých systémů a využít je jako příležitosti k získání a zlepšení spolehlivosti systému.

  • Narušte systém. Záměrně vkládejte chyby nebo zátěž do systému, abyste otestovala jeho odolnost. Simulace reálných selhání nebo přerušení za účelem testování a vylepšení možností obnovení úloh

  • Identifikujte a vyřešte co nejdříve jednotlivé body selhání. Při testování si projděte a aktualizujte analýzu režimu selhání , abyste ověřili a vyřešili chyby v dokumentaci. Použijte přístupy ke spolehlivosti, jako je redundance a segmentace, ke zvýšení dostupnosti úloh a minimalizaci výpadků.

  • Nainstalujte ochranné mantinely a řádné zmírnění rizik. Pokud chcete zvýšit dostupnost, implementujte bezpečnostní opatření, jako je model Jistič nebo model omezování. Implementujte řádné přístupy ke snížení výkonu, které umožňují provozní kontinuitu během selhání.

  • Minimalizujte poloměr výbuchu. Implementujte strategie izolace chyb, které vám pomůžou zajistit, že i v případě selhání bude její rozsah omezený. Systém dál funguje s minimálním dopadem na vaše zákazníky.

  • Vybudujte imunitu. Pomocí experimentů s inženýrskou technikou chaosu můžete zlepšit schopnost úloh zabránit selháním a zotavit se z toho.

Chaos engineering je nedílnou součástí kultury pracovního týmu a průběžné praxe, nikoli krátkodobé taktické úsilí v reakci na jediný výpadek. Při návrhu experimentů s chaosem postupujte podle této standardní metody:

  1. Začněte hypotézou. Každý experiment by měl mít jasný cíl, například otestovat schopnost daného toku odolat ztrátě určité komponenty.
  2. Změřte chování směrného plánu. Ujistěte se, že máte konzistentní metriky spolehlivosti a výkonu pro tok a komponenty zahrnuté do daného experimentu, abyste mohli porovnávat se sníženým výkonem při spuštění experimentu.
  3. Vložte chybu nebo chyby. Experiment by měl záměrně cílit na konkrétní komponenty, které lze rychle obnovit, a měli byste mít informované očekávání o účinku, který injektáž chyby způsobí, aby bylo možné řídit poloměr výbuchu experimentu.
  4. Monitorujte výsledné chování. Shromážděte telemetrii o jednotlivých komponentách toku a chování koncového toku, na které experiment cílí, abyste správně pochopili účinky chyby. Porovnejte metriky, které shromáždíte, se základními metrikami, abyste získali úplný přehled o výsledcích injektáže chyb.
  5. Zdokumentujte proces a pozorování. Vedení podrobných záznamů o experimentech bude informovat budoucí rozhodnutí o návrhu úlohy a zajistí, že vyřešíte mezery, které se v průběhu času odhalily.
  6. Identifikujte výsledek a zareagujte na jeho základě. Naplánujte nápravné kroky, které je možné přidat do backlogu úloh jako vylepšení. Ujistěte se, že se plány vylepšení návrhu kontrolují a testují v neprodukčních prostředích podle stejných procesů jako jiná nasazení.

Pravidelně ověřujte svůj proces, volby architektury a kód, abyste rychle zjistili technický dluh, integrovali nové technologie a přizpůsobili se měnícím se požadavkům.

Při provádění experimentů se vkládáním chyb:

  • Ověřte, že je nastavené monitorování a že jsou nastavená upozornění.
  • Ověřte proces přiřazení přímo zodpovědné osoby (DRI), která převezme vlastnictví incidentu.
  • Ujistěte se, že vaše dokumentace a procesy šetření jsou aktuální.

Integrujte následující doporučení a důležité informace, abyste optimalizovali strategii testování chaosu:

  • Zpochybníte systémové předpoklady. Testováním se snažíte zlepšit odolnost úloh a strategií návrhu úloh. Hledejte příležitosti k vkládání chyb do komponent a toků, které na základě minulých zkušeností předpokládáte, že jsou spolehlivé. V nové úloze nemusí být spolehlivé.

  • Ověřte změny, jako je topologie, platforma a prostředky. Bez důkladného testování, včetně testování prostřednictvím injektáže chyb, můžete mít po provedení změn neúplný obrázek úlohy. Můžete například neúmyslně zavést nové závislosti nebo poškozené existující závislosti způsoby, které nejsou okamžitě zřejmé.

  • Používejte vyrovnávací paměti SLA. Omezte testování chaosu tak, abyste zůstali v rámci smluv SLA a vyhnuli se potenciálním dopadům na reputaci nebo finanční dopady výpadků. Cíle obnovení toku a komponent pomáhají definovat rozsah testování.

  • Vytvořte rozpočet chyb jako investici do chaosu a injektáže chyb. Váš rozpočet chyb je rozdíl mezi dosažením 100 % SLO a dosažením schváleného cíle SLO.

  • Pokud experiment překročí rozsah, zastavte ho. Neznámé výsledky jsou očekávaným výsledkem experimentů s chaosem. Snažte se dosáhnout rovnováhy mezi shromažďováním podstatných výsledných dat a dopadem na co nejméně produkčních uživatelů.

  • Úzce spolupracujte s vývojovými týmy, abyste zajistili relevanci injektovaných selhání. Jako vodítko použijte minulé incidenty nebo problémy. Prozkoumejte závislosti a vyhodnoťte výsledky, když tyto závislosti odeberete.

  • Identifikujte a zdokumentujte dříve neobjevené závislosti mezi různými komponentami v rámci vaší úlohy, které se odhalí při testování chaosu.

  • Podle potřeby upravte plány obnovení tak, aby se zohlednily závislosti zjištěné během testování chaosu.

  • Výsledky z experimentů a testů můžete použít jako základ pro nové experimenty a testy. Když dojde k neočekávanému chování, nové testy můžou toto chování přímo cílit a umožnit vám navrhnout pro ně strategie nápravy.

Kompromis: Testování injektáže chyb v produkčním prostředí může být rušivé a může potenciálně způsobit výpadek. Buďte ohledně této možnosti transparentní a ujistěte se, že máte zavedená bezpečnostní opatření, která umožňují ukončit experimenty a vrátit plány na rychlé zvrácení vámi zavedených selhání. V zájmu ochrany před nezamýšlenými výpadky v produkčním prostředí se ujistěte, že plánujete dostatečnou redundanci a že zúčastněné strany chápou kompromisy mezi náklady.

Usnadnění Azure

Azure Test Plans je snadno použitelné řešení pro správu testů založené na prohlížeči, které poskytuje všechny možnosti potřebné pro plánované ruční testování, uživatelské akceptační testování, průzkumné testování a shromažďování zpětné vazby od zúčastněných stran.

Azure Chaos Studio je spravovaná služba, která využívá chaos engineering k měření, pochopení a vylepšení odolnosti cloudových aplikací a služeb. Azure Chaos Studio bylo všeobecně dostupné na konferenci Ignite 2023 a nabízí spoustu funkcí, které vám pomůžou začít s injektáží chyb a testováním odolnosti vaší aplikace s využitím infrastruktury Azure.

Kontrolní seznam pro spolehlivost

Projděte si kompletní sadu doporučení.