Doporučení pro návrh strategie testování spolehlivosti
platí pro doporučení kontrolního seznamu spolehlivosti rámce Azure Well-Architected:
RE:08 | Otestujte scénáře odolnosti a dostupnosti pomocí principů chaosu. Ujistěte se, že vaše strategie řádného snížení výkonu a š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
Termín | Definice |
---|---|
Dostupnost | Doba, po kterou je úloha aplikace spuštěná v dobrém stavu bez významného výpadku. |
chaosové inženýrství | Praxe vystavování aplikací a služeb reálným stresům a selháním. Cílem chaos engineeringu je sestavit a ověřit odolnost vůči nespolehlivým podmínkám a chybějícím závislostem. |
Simulace 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.
Přijměte přístup k testování s posunem doleva, abyste mohli provádět testování odolnosti a dostupnosti v ranné 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í , abyste zajistili, ž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í . Pro informace o zátěžových a stresových testech viz 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 vaše samoopravení a samozáchová konstrukce reaguje na poruchy. Testování automatizovaných a ručních operací obnovení
Otestujte plán zotavení po havárii , abyste mohli reagovat na závažné selhání a další závažné incidenty.
Otestujte schopnost vaší pracovní zátěže elegantně degradovat a minimalizovat dopad poruchy komponenty pomocí injektáží poruch.
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 úplného přechodu 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:
Dejte pracovní zatížení zpět online pro své 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í injekce chyb a chaotického inženýrství
Testování injekcí chyb se řídí zásadami chaos engineering tím, že zdůrazňuje schopnost zatížení reagovat na selhání komponent. Testování vstřikování poruch 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í k provádění analýzy režimu selhání, abyste měli jistotu, že testujete pouze chyby, u kterých máte prioritu, 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. Simulujte skutečná selhání nebo přerušení, abyste otestovali a zlepšili možnosti obnovení zátěže.
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í postupy, jako je vzorec Jističe nebo vzorec 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í kultury pracovního týmu a je to kontinuální praxe, nikoliv 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ěřit výchozí chování 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žte chybu nebo chyby. 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í o účincích, které injektáž chyby způsobí, aby pomohla kontrolovat rozsah dopadu experimentu.
- Monitorujte výsledné chování. Shromážděte telemetrii o jednotlivých komponentách toku a chování toku od začátku do konce, na které je experiment zaměřen, abyste správně porozuměli 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í odpovědnosti za incident.
- 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í. Při vaší nové pracovní zátěži nemusí být oni spolehliví.
Ověřte změnu, například topologii, platformu a prostředky. Po provedení změn můžete bez důkladného testování, včetně testování injekce selhání, získat neúplný obrázek o vaší zátěži. Můžete například neúmyslně zavést nové závislosti nebo narušit stávající závislosti způsobem, který není 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 investici do chaosu a vstřikování 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ů.
Spolupracujte úzce s vývojářskými týmy, abyste zajistili relevantnost vložený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 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í injektování 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. Pokud chcete zabránit nezamýšleným výpadkům v produkčním prostředí, ujistěte se, že plánujete dostatečnou zálohu a že zúčastněné strany chápou nákladový kompromis.
Usnadnění na platformě 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á 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í.
kontrolní seznam spolehlivosti