Doporučení pro návrh strategie testování spolehlivosti
Platí pro toto doporučení kontrolního seznamu pro spolehlivost architektury Azure Well-Architected Framework:
RE:08 | Otestujte scénáře odolnosti a dostupnosti pomocí principů chaosu ve vašem testovacím a produkčním prostředí. Pomocí testování se ujistěte, že vaše strategie řádného snížení výkonu a strategie škálování jsou efektivní provedením aktivní poruchy 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 vašich úloh. Testování spolehlivosti se zaměřuje na odolnost a dostupnost úloh, konkrétně kritické toky, které identifikujete při návrhu řešení. Tato příručka obsahuje obecné pokyny k testování a pokyny specifické pro injektáž chyb a chaosové inženýrství.
Definice
Pojem | definice |
---|---|
Dostupnost | Doba, po kterou je úloha aplikace spuštěná v dobrém stavu bez významného výpadku. |
Řízený chaos | Praxe předmětu aplikací a služeb na skutečném světě zdůrazňuje a selhání. Cílem chaosu je sestavit a ověřit odolnost vůči nespolehlivým podmínkám a chybějícím závislostem. |
Vkládání chyb | Zavedení chyby do systému za účelem otestování odolnosti systému. |
Návratnost | Synonymum pro odolnost. |
Odolnost | Schopnost úlohy aplikace odolat a zotavit se z režimů selhání. |
Klíčové strategie návrhu
Připravenost na spolehlivost testů
Rutinně proveďte testování a ověřte existující prahové hodnoty, cíle a předpoklady. Pokud ve vaší úloze dojde k významné změně, spusťte pravidelné testování. Většinu testování proveďte v testovacím a přípravném prostředí. Je také užitečné spustit podmnožinu testů v produkčním systému. Naplánujte paritu klíčových testovacích prostředí s produkčním prostředím 1:1.
Automatizujte testování, které pomáhá zajistit konzistentní pokrytí a reprodukovatelnost testů. Automatizujte běžné úlohy testování a integrujte je do svých procesů sestavení. Ruční testování softwaru je zdlouhavé a náchylné k chybám, ale můžete provádět ruční průzkumné testování. V případech, ve kterých potřebujete vyvíjet 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í nalevo od posunu, který umožňuje provádět testování odolnosti a dostupnosti v rané fázi vývojového cyklu.
Přizpůsobte si jednoduchý formát dokumentace, aby všichni snadno pochopili proces a výsledky 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, vedoucí technologie, obchodní zúčastněné strany a zúčastněné strany zotavení po havárii. Výsledky by měly informovat o upřesnění cílů spolehlivosti, jako jsou cíle úrovně služeb (SLA), smlouvy o úrovni služeb (SLA), cíle doby obnovení (RTO) a cíle bodů obnovení (RPO).
Vytvořte pravidelnou četnost testování záloh. Obnovte data do izolovaných systémů, abyste zajistili, že zálohy jsou platné a že obnovení jsou funkční.
Zdokumentujte a sdílejte metriky doby obnovení se zúčastněnými stranami zotavení po havárii, abyste měli jistotu, že jsou vhodná očekávání pro obnovení.
Používejte standardní postupy testování nasazení v oboru, abyste měli jistotu, ž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 vzorech zatížení a špičkách 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í.
Otestujte, jak vaše úloha zpracovává selhání v závislých službách nebo jiných závislostech pomocí injektáže chyb.
Otestujte a ověřte, jak váš návrh samoopravení a samozáchování reaguje na poruchy. Testování automatizovaných a ručních operací obnovení
Otestujte plán zotavení po havárii tak, aby reagoval na závažné selhání a další závažné incidenty.
Otestujte schopnost úlohy elegantně snížit a minimalizovat poloměr výbuchu součásti pomocí injektáže selhání.
Využití výhod plánovaných a 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í vaší úloze. Následující části obsahují doporučení pro každý scénář.
Plánovaná údržba
Pokud máte plánovaná období údržby pro aktualizace nebo opravy, můžete otestovat komponenty a toky, které nejsou součástí údržby. Proveďte testy bez potenciálního rizika neočekávaného snížení zatížení nebo jeho úplné offline přechádnutí do offline režimu. Pokud máte dostatek času během časového období údržby, můžete také otestovat komponenty a toky, které jsou součástí údržby po dokončení údržby.
Neplánovaný výpadek
Při každém incidentu výpadku můžete získat další informace o vaší úloze a zlepšit jeho odolnost pomocí těchto kroků seřazených podle priority:
Získejte úlohu zpátky online pro vaše zákazníky. K tomu můžete provést alternativní řešení problému, vyřešit problém nebo zahájit procesy obnovení.
Určete původní příčinu výpadku a vyřešte ji. Pokud můžete opravit původní příčinu v rámci šetření, zdokumentujte původní příčinu a míry, které jste provedli k jeho opravě. Pokud problém vyžaduje pozdější provedení dalšího časového období údržby, ujistěte se, že vaše opatření pro zmírnění rizik můžou zvládnout očekávané zatížení tím, že je důkladně otestujete. Ujistěte se, že jste nastavili dostatečné monitorování pro pokrytí opatření pro zmírnění rizik.
Pokud je to možné, vyhledejte stejný problém nebo slabá místa konfigurace, které by mohly být ovlivněny podobnými problémy, napříč všemi komponentami ve vaší úloze. Tuto příležitost použijte k proaktivnímu řešení těchto komponent. Projděte si historii incidentů a zjistěte vzory podobných problémů ve vaší úloze.
Využijte svá zjištění ke zlepšení strategie testování. Ujistěte se, že jste úspěšně vyřešili původní příčinu a podobné problémy tím, že přímo otestujete stejné selhání.
Použití injektáže chyb a chaosu
Testování injektáže chyb se řídí zásadami chaosu tím, že zvýrazňuje schopnost úloh reagovat na selhání komponent. Testování injektáže selhání 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 se naučili Doporučení pro provádění analýzy režimu selhání, abyste měli jistotu, že testujete pouze chyby, které upřednostňujete, a že máte strategie zmírnění rizik, které řeší chyby. Klíčovými pokyny pro chaosové inženýrství jsou:
Buďte proaktivní. Nečekejte, až dojde k selháním. Pokuste se předvídat selhání provedením experimentů chaosu, abyste objevili a opravili problémy předtím, než ovlivní vaše produkční prostředí.
Přijměte selhání. Přijměte chyby, ke kterým dochází ve vašem systému, a seznamte se s tím. Prohlédněte si selhání jako přirozenou součást složitých systémů a používejte je jako příležitosti k učení a zlepšování spolehlivosti systému.
Přerušte systém. Záměrně vkládejte do systému chyby nebo zátěž, abyste mohli otestovat jeho odolnost. Simulace skutečných selhání nebo přerušení testování a zlepšení možností obnovení vaší úlohy
Identifikace a řešení kritických bodů selhání v rané fázi. Při testování si projděte a aktualizujte analýzu režimu selhání a ověřte a vyřešte chyby v dokumentaci. Využijte přístupy ke spolehlivosti, jako je redundance a segmentace, abyste zvýšili dostupnost úloh a minimalizovali výpadky.
Nainstalujte mantinely a řádné zmírnění rizik. Implementujte bezpečnostní opatření, jako je model Jistič nebo model omezování, aby se zvýšila dostupnost. Implementujte přístupy k řádnému snížení výkonu, které umožňují kontinuitu podnikových procesů během selhání.
Minimalizujte poloměr výbuchu. Implementujte strategie izolace chyb, které pomáhají zajistit, že i když dojde k selhání, je jeho rozsah omezený. Systém nadále funguje s minimálním účinkem na vaše zákazníky.
Budujte imunitu. Pomocí experimentů s chaosem můžete zlepšit schopnost úloh zabránit selháním a zotavit se z jejich selhání.
Chaos engineering je nedílnou součástí týmové kultury pracovního vytížení a probíhající praxe, nikoli krátkodobé taktické úsilí v reakci na jeden výpadek. Při návrhu experimentů chaosu postupujte podle této standardní metody:
- Začněte hypotézou. Každý experiment by měl mít jasný cíl, například testování schopnosti daného toku odolat ztrátě konkrétní komponenty.
- Měření chování směrného plánu Ujistěte se, že máte konzistentní metriky spolehlivosti a výkonu pro tok a komponenty zapojené do daného experimentu, abyste při spuštění experimentu porovnávali se sníženým stavem.
- Vložení chyby nebo chyb Experiment by měl záměrně cílit na konkrétní komponenty, které je možné rychle obnovit, a měli byste mít informované očekávání účinku, že injektáž chyby způsobí, že pomůže řídit poloměr výbuchu experimentu.
- Monitorujte výsledné chování. Shromážděte telemetrii o jednotlivých komponentách toku a chování koncového toku, které experiment cílí, aby správně porozuměl dopadům chyby. Porovnejte metriky, které shromáždíte, se základními metrikami pro úplný přehled výsledků injektáže chyb.
- Zdokumentujte proces a pozorování. Udržování podrobných záznamů o experimentech bude informovat budoucí rozhodnutí o návrhu úloh a zajistit, abyste vyřešili mezery, které byly v průběhu času odhaleny.
- Identifikujte výsledek a zareagujte na výsledek. 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 u jiných nasazení.
Pravidelně ověřte 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ů injektáže selhání:
- 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) k převzetí vlastnictví incidentu.
- Ujistěte se, že jsou vaše procesy dokumentace a šetření aktuální.
Integrujte následující doporučení a důležité informace pro optimalizaci strategie testování chaosu:
Výzva k předpokladům systému. Při testování se pokusíte zlepšit odolnost úloh a strategií návrhu úloh. Hledejte příležitosti k vkládání chyb do komponent a toků, které předpokládáte, že jsou spolehlivé na základě minulých zkušeností. V nové úloze nemusí být spolehlivé.
Ověřte změnu, například topologii, platformu a prostředky. Bez důkladného testování, včetně testování injektáže selhání, 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, abyste zůstali v rámci smluv SLA a vyhnuli se potenciálním reputacím nebo finančním účinkům výpadků. Cíle obnovení toku a komponent pomáhají definovat rozsah testování.
Vytvořte rozpočet chyb jako investice do chaosu a injektáže chyb. Rozpočet chyb je rozdíl mezi dosažením 100 % cíle úrovně služby a dosažením schváleného cíle úrovně služeb.
Pokud experiment přesahuje rozsah, zastavte experiment. Neznámé výsledky představují očekávaný výsledek experimentů chaosu. Snažte se dosáhnout rovnováhy mezi shromažďováním podstatných výsledných dat a dopadem na co nejnižší počet produkčních uživatelů.
Úzce spolupracujete s vývojářskými týmy, abyste zajistili význam vloženého 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 neidentifikované závislosti mezi různými komponentami v rámci vaší úlohy, které se odhalí prostřednictvím chaosového testování.
Podle potřeby upravte plány obnovení tak, aby zohlednily závislosti zjištěné během testování chaosu.
Výsledky experimentů a testů použijte jako základ pro nové experimenty a testy. Při vzniku neočekávaného chování mohou nové testy cílit na toto chování přímo a poskytnout vám příležitost navrhnout strategie nápravy pro ně.
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ýpadky. Buďte transparentní se zúčastněnými stranami o této možnosti a ujistěte se, že máte zavedená ochranná opatření k ukončení experimentů a vrácení plánů zpět, abyste mohli rychle vrátit zpět chyby, které zavádíte. Chcete-li se chránit před nezamýšlenými výpadky v produkčním prostředí, ujistěte se, že plánujete dostatečnou redundanci a že zúčastněné strany chápou kompromis 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í, testování přijetí uživatelů, 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á přípravu chaosu, která vám pomůže měřit, pochopit a zlepšit odolnost cloudových aplikací a služeb. Azure Chaos Studio dosáhla obecné dostupnosti na konferenci Ignite 2023 a má spoustu funkcí, které vám pomůžou začít s testováním injektáže chyb a odolnosti pro vaši aplikaci pomocí infrastruktury Azure.
Související odkazy
- Zálohování a zotavení po havárii pro aplikace Azure
- Kontrolní seznam pro testování spolehlivosti
- Testování aplikací pro zajištění dostupnosti a odolnosti
Kontrolní seznam pro spolehlivost
Projděte si kompletní sadu doporučení.