Megbízhatósági tesztelési stratégia kialakítására vonatkozó javaslatok

Az Azure Well-Architected Framework megbízhatósági ellenőrzőlistájára vonatkozó javaslatra vonatkozik:

RE:08 Tesztelje a rugalmasságot és a rendelkezésre állási forgatókönyveket a káosztervezés alapelveinek alkalmazásával a teszt- és éles környezetekben. A teszteléssel biztosíthatja, hogy a kecses teljesítménycsökkenés implementálási és skálázási stratégiái hatékonyak legyenek az aktív hibás működés és a szimulált terheléstesztelés végrehajtásával.

Ez az útmutató a számítási feladatok megbízhatóságának ellenőrzésére és optimalizálására szolgáló megbízhatósági tesztelési stratégia kialakítására vonatkozó javaslatokat ismerteti. A megbízhatósági tesztelés a számítási feladatok rugalmasságára és rendelkezésre állására összpontosít, különösen azokra a kritikus folyamatokra, amelyeket a megoldás tervezésekor azonosít. Ez az útmutató általános tesztelési útmutatót és útmutatást nyújt, amely a hibainjektálásra és a káosztervezésre vonatkozik.

Definíciók

Időszak Definíció
Rendelkezésre állás Az az idő, amely alatt az alkalmazás számítási feladatai kifogástalan állapotban futnak jelentős állásidő nélkül.
Véletlenszerű tesztelés Az alkalmazások és szolgáltatások valós stressznek és hibáknak való alávetésének gyakorlata. A káosztervezés célja a megbízhatatlan feltételekkel és a hiányzó függőségekkel szembeni rugalmasság kiépítése és ellenőrzése.
Hibainjektálás A rendszer rugalmasságának tesztelésére irányuló hiba bevezetése.
Helyreállíthatóság A rugalmasság szinonimája.
Rugalmasság Az alkalmazás számítási feladatai képesek ellenállni a meghibásodási módoknak és helyreállni.

Kulcsfontosságú tervezési stratégiák

Általános tesztelési útmutató

  • Rendszeresen végezzen tesztelést a meglévő küszöbértékek, célok és feltételezések ellenőrzéséhez. Ha jelentős változás történik a számítási feladatban, futtassa a rendszeres tesztelést. A legtöbb tesztelést a tesztelési és előkészítési környezetekben végezheti el. Emellett hasznos a tesztek egy részhalmazának futtatása az éles rendszeren. Tervezze meg a kulcsfontosságú tesztkörnyezetek egy-az-egyhez paritását az éles környezettel.

  • Automatizálja a tesztelést a tesztelés konzisztens lefedettségének és reprodukálhatóságának biztosítása érdekében. Automatizálhatja a gyakori tesztelési feladatokat, és integrálhatja őket a buildfolyamatokba. A szoftver manuális tesztelése fárasztó és hibaérzékeny, de manuális feltáró tesztelést is végezhet. Azokban az esetekben, amikor automatizált tesztelést kell fejlesztenie, manuális tesztelés használatával határozza meg a fejlesztendő tesztek hatókörét.

  • A rugalmas és rendelkezésre állási tesztek végrehajtásához a fejlesztési ciklus korai szakaszában alkalmazza a balról balra tartó tesztelési megközelítést.

  • Adaptáljon egy egyszerű dokumentációs formátumot, így mindenki könnyen megértheti az egyes rendszeres tesztek folyamatát és eredményeit.

  • Ossza meg a dokumentált eredményeket a megfelelő csapatokkal, például az operatív csapatokkal, a technológiai vezetőkkel, az üzleti érdekelt felekkel és a vészhelyreállítási érdekelt felekkel. Az eredményeknek tájékoztatniuk kell a megbízhatósági célok pontosítását, például a szolgáltatásiszint-célkitűzéseket (SLO-kat), a szolgáltatói szerződéseket (SLA-kat), a helyreállítási időkorlátokat (KPO-kat) és a helyreállításipont-célkitűzéseket (RPO-kat).

  • Hozzon létre egy rendszeres tesztelési ütemezést a biztonsági mentésekhez. Állítsa vissza az adatokat elkülönített rendszerekre, hogy a biztonsági másolatok érvényesek legyenek, és hogy a visszaállítások működőképesek legyenek.

  • Dokumentálja és ossza meg a helyreállítási idő metrikáit a vészhelyreállítási érdekelt felekkel, hogy a helyreállítással kapcsolatos elvárások megfelelőek legyenek.

  • Az iparági szabványoknak megfelelő üzembehelyezési tesztelési eljárások segítségével biztosíthatja, hogy automatizált, kiszámítható és hatékony üzembe helyezési folyamatokkal rendelkezzen.

  • Tesztelje, hogy a számítási feladat képes-e ellenállni az átmeneti hibáknak. További információ: Javaslatok átmeneti hibák kezelésére.

  • Tesztelje, hogy a számítási feladat képes-e reagálni a terhelési minták változásaira és a használati csúcsokra. Ez az információ segít a skálázási stratégia tesztelésében. A terhelés- és stressztesztelésről további információt a Tesztelési javaslatok című témakörben talál.

  • Tesztelje, hogyan kezeli a számítási feladat a függő szolgáltatásokban vagy más függőségekben előforduló hibákat hibainjektálás használatával.

  • Tesztelje és ellenőrizze, hogy az önjavító és önmegőrző kialakítás hogyan reagál a hibás működésre. Automatizált és manuális helyreállítási műveletek tesztelése.

  • Tesztelje vészhelyreállítási tervét , hogy reagáljon a katasztrofális hibákra és más jelentős eseményekre.

  • Tesztelje a számítási feladat azon képességét, hogy zökkenőmentesen csökkenjen, és hibainjektálással minimalizálja az alkatrészek meghibásodásának robbanási sugarát.

Kihasználhatja a tervezett és nem tervezett kimaradások előnyeit

Ha a számítási feladat tervezett karbantartás vagy nem tervezett üzemkimaradás miatt offline állapotban van, egyedülálló lehetőség van a tesztelés elvégzésére és a számítási feladatok jobb megértésére. Az alábbi szakaszok az egyes forgatókönyvekhez nyújtanak javaslatokat.

Tervezett karbantartás

Ha tervezett karbantartási időszakokkal rendelkezik a frissítésekhez vagy javításokhoz, tesztelheti azokat az összetevőket és folyamatokat, amelyek nem vesznek részt a karbantartási munkában. Teszteket végezhet anélkül, hogy a számítási feladat váratlanul leromlott lenne, vagy teljesen offline állapotba lenne állítva. Ha a karbantartási időszak alatt elegendő ideje van, tesztelheti a karbantartásban részt vevő összetevőket és folyamatokat is a karbantartási munka befejezése után.

Nem tervezett szolgáltatáskimaradás

Az alábbi, prioritás szerint rendezett lépések végrehajtásával minden szolgáltatáskimaradási incidenssel többet tudhat meg a számítási feladatról, és javíthatja rugalmasságát:

  • A számítási feladat online állapotba kerülése az ügyfelek számára. Ehhez elvégezhet egy áthidaló megoldást a problémára, megoldhatja a problémát, vagy elindíthatja a helyreállítási folyamatokat.

  • Határozza meg a szolgáltatáskimaradás kiváltó okát, és hárítsa el. Ha a vizsgálat részeként meg tudja oldani a kiváltó okot, dokumentálja a kiváltó okot és a javításhoz megtett intézkedéseket. Ha a probléma egy későbbi időpontban további karbantartási időszakot igényel, győződjön meg arról, hogy a kockázatcsökkentési intézkedések megfelelően tudják kezelni a várt terhelést. Ehhez alaposan tesztelje azt. Győződjön meg arról, hogy elegendő monitorozást állított be a kockázatcsökkentési intézkedések fedezésére.

  • Ha lehetséges, keresse meg ugyanazokat a problémákat vagy konfigurációs hiányosságokat, amelyeket hasonló problémák érinthetnek a számítási feladat összes összetevőjében. Használja ki ezt a lehetőséget, hogy proaktívan kezelje ezeket az összetevőket. Tekintse át az incidenselőzményeket, és észlelje a számítási feladat hasonló problémáinak mintáit.

  • Az eredmények segítségével javíthatja a tesztelési stratégiát. Győződjön meg arról, hogy sikeresen megoldotta a kiváltó okot és a hasonló problémákat ugyanazon hiba közvetlen tesztelésével.

Hibainjektálási és káosztervezési útmutató

A hibainjektálási tesztelés a káosztervezés alapelveit követi, kiemelve, hogy a számítási feladat képes reagálni az összetevők hibáira. Üzem előtti és éles környezetekben végezze el a hibainjektálási tesztelést. Tesztelés alkalmazása az infrastruktúra- és alkalmazásrétegekre. Alkalmazza a megismert, hibamód-elemzés végrehajtására vonatkozó javaslatokat , hogy csak azokat a hibákat tesztelje, amelyeket rangsorol, és hogy rendelkezik-e a hibák kezelésére szolgáló kockázatcsökkentési stratégiával. A káosztervezés fő irányelvei a következők:

  • Legyen proaktív. Ne várjon, amíg hibák történnek. A hibák előrejelzéséhez végezzen káoszkísérleteket a problémák felderítéséhez és kijavításához, mielőtt azok hatással lennének az éles környezetre.

  • Fogadja el a hibát. Fogadja el és tanuljon a rendszerben előforduló hibákból. A hibákat az összetett rendszerek természetes részének tekintheti, és felhasználhatja őket a rendszer megbízhatóságának megismerésére és javítására.

  • Megszakítja a rendszert. A rugalmasság teszteléséhez szándékosan szúrjon be hibákat vagy stresszt a rendszerbe. Valós hibák vagy fennakadások szimulálása a számítási feladat helyreállítási képességeinek teszteléséhez és javításához.

  • Azonosítsa és kezelje a meghibásodási pontok korai szakaszát. A tesztelés során tekintse át és frissítse a hibamód-elemzést a hibák ellenőrzéséhez és kezeléséhez a dokumentációban. A számítási feladatok rendelkezésre állásának növelése és az állásidő minimalizálása érdekében alkalmazza a megbízhatósági megközelítéseket, például a redundanciát és a szegmentálást.

  • Telepítse a védőkorlátokat és a kecses kockázatcsökkentést. A rendelkezésre állás növelése érdekében implementáljon biztonsági intézkedéseket, például az áramkör-megszakító mintát vagy a szabályozási mintát. A hibák során az üzletmenet folytonosságát lehetővé tevő, kecses teljesítménycsökkenési megközelítések implementálása.

  • Minimalizálja a robbanási sugarat. Alkalmazzon hibaelkülönítési stratégiákat annak érdekében, hogy a hatóköre még meghibásodás esetén is korlátozott legyen. A rendszer továbbra is minimális hatással van az ügyfelekre.

  • Építsd ki az immunitást. Káoszmérnöki kísérletek használatával javíthatja a számítási feladatok meghibásodások megelőzésére és helyreállítására való képességét.

A káosztechnika a számítási feladatok csapatkultúrájának szerves része, és egy folyamatos gyakorlat, nem pedig egy rövid távú taktikai erőfeszítés egyetlen szolgáltatáskimaradásra válaszul. Kövesse ezt a standard módszert a káoszkísérletek tervezésekor:

  1. Kezdje egy hipotézissel. Minden kísérletnek egyértelmű céllal kell rendelkeznie, például tesztelnie kell egy adott folyamat azon képességét, hogy ellenálljon egy adott összetevő elvesztésének.
  2. Az alapkonfiguráció viselkedésének mérése. Győződjön meg arról, hogy konzisztens megbízhatósági és teljesítménymetrikákkal rendelkezik az adott kísérletben részt vevő folyamathoz és összetevőkhöz, hogy összehasonlíthassa a csökkentett teljesítményű állapotot a kísérlet futtatásakor.
  3. Hiba vagy hibák beszúrása. A kísérletnek szándékosan olyan összetevőket kell céloznia, amelyek gyorsan helyreállíthatók, és tájékozott elvárásnak kell lennie arról, hogy a hibainjektálás milyen hatással lesz a kísérlet robbanási sugarának szabályozására.
  4. Az eredményként kapott viselkedés monitorozása. Gyűjtsön telemetriai adatokat az egyes folyamatösszetevőkről és a végpontok közötti folyamat viselkedéséről, amelyeket a kísérlet a hiba hatásainak megfelelő megértésére céloz. Hasonlítsa össze a gyűjtött metrikákat az alapkonfiguráció metrikáival, hogy teljes képet kapjon a hibainjektálási eredményekről.
  5. Dokumentálja a folyamatot és a megfigyeléseket. Ha részletes nyilvántartást vezet a kísérletekről, azzal tájékoztatja a jövőbeli döntéseket a számítási feladatok tervezéséről, biztosítva, hogy orvosolja az idővel feltárt hiányosságokat.
  6. Azonosítsa az eredményt, és cselekedjen. Tervezze meg a javítási lépéseket, amelyeket továbbfejlesztésekként adhat hozzá a számítási feladatok hátralékához. Győződjön meg arról, hogy a tervfejlesztési terveket a többi üzemelő példány folyamatainak megfelelően felülvizsgálják és tesztelik nem éles környezetekben.

Rendszeres időközönként ellenőrizze a folyamatot, az architektúra-döntéseket és a kódot, hogy gyorsan észlelje a műszaki adósságot, integrálja az új technológiákat, és alkalmazkodjon a változó követelményekhez.

Hibainjektálási kísérletek végrehajtásakor:

  • Győződjön meg arról, hogy a figyelés működik, és a riasztások be vannak állítva.
  • Ellenőrizze a közvetlenül felelős személy (DRI) hozzárendelésének folyamatát egy incidens tulajdonjogának átvétele érdekében.
  • Győződjön meg arról, hogy a dokumentáció és a vizsgálati folyamatok naprakészek.

Integrálja az alábbi javaslatokat és szempontokat a káosztesztelési stratégia optimalizálásához:

  • A rendszer előfeltételeinek kivetése. A teszteléssel megpróbálja javítani a számítási feladatok rugalmasságát és a számítási feladatok tervezési stratégiáit. Keresse meg azokat a lehetőségeket, amelyekkel hibákat szúrhat be olyan összetevőkbe és folyamatokba, amelyekről feltételezi, hogy megbízhatóak a korábbi tapasztalatok alapján. Előfordulhat, hogy nem megbízhatók az új számítási feladatban.

  • Ellenőrizze a módosításokat, például a topológiát, a platformot és az erőforrásokat. Alapos tesztelés nélkül, beleértve a hibainjektálási tesztelést, előfordulhat, hogy a módosítások elvégzése után hiányos képet ad a számítási feladatról. Előfordulhat például, hogy véletlenül új függőségeket vezet be, vagy megszakítja a meglévő függőségeket olyan módokon, amelyek nem jelennek meg azonnal.

  • Használjon SLA-puffereket. Korlátozza a káosztesztelést, hogy az SLA-kon belül maradjon, és elkerülje a kimaradásokból származó potenciális hírnevet vagy pénzügyi hatásokat. A folyamat- és összetevő-helyreállítási célok segítenek meghatározni a tesztelés hatókörét.

  • Hozzon létre egy hibakeretet a káosz és a hibainjektálás befektetéseként. A hibakeret a különbség az SLO 100%-ának elérése és az SLO-ban elfogadott megállapodás elérése között.

  • Állítsa le a kísérletet, ha túllép a hatókörön. Az ismeretlen eredmények a káoszkísérletek várt eredményei. Törekedjen arra, hogy egyensúlyt teremtsen a jelentős eredményadatok gyűjtése és a lehető legkevesebb éles felhasználót érintő adatok között.

  • Szorosan együttműködik a fejlesztői csapatokkal az injektált hibák relevanciájának biztosítása érdekében. Használjon korábbi incidenseket vagy problémákat útmutatóként. Vizsgálja meg a függőségeket, és értékelje ki az eredményeket, amikor eltávolítja ezeket a függőségeket.

  • Azonosíthatja és dokumentálhatja a számítási feladat különböző összetevői között korábban felderítetlen függőségeket, amelyek káosztesztelés során derülnek ki.

  • Szükség szerint módosítsa a helyreállítási terveket, hogy figyelembe vegyék a káosztesztelés során felfedezett függőségeket.

  • Használja a kísérletek és tesztek eredményeit az új kísérletek és tesztek alapjául. A váratlan viselkedések felmerülésekor az új tesztek közvetlenül megcélozhatják ezeket a viselkedéseket, és lehetővé teszik, hogy javítási stratégiákat tervezzen hozzájuk.

Kompromisszum: A hibainjektálás éles környezetben történő tesztelése zavaró lehet, és állásidőt okozhat. Legyen átlátható az érdekeltekkel ennek a lehetőségnek a kapcsán, és győződjön meg arról, hogy rendelkezik biztosítékokkal a kísérletek leállításához és a tervek visszaállításához a bevezetett hibák gyors visszafordítása érdekében. A nem tervezett üzemkimaradások elleni védelem érdekében győződjön meg arról, hogy megfelelő redundanciát tervez, és hogy az érdekelt felek tisztában legyenek a költségekkel.

Azure-beli segítségnyújtás

Az Azure Test Plans egy könnyen használható, böngészőalapú tesztkezelési megoldás, amely biztosítja a tervezett manuális teszteléshez, a felhasználói elfogadás teszteléséhez, a feltáró teszteléshez és az érdekelt felek visszajelzéseinek gyűjtéséhez szükséges összes képességet.

Az Azure Chaos Studio egy felügyelt szolgáltatás, amely káosztervezést használ a felhőalkalmazások és -szolgáltatások rugalmasságának méréséhez, megértéséhez és javításához. Az Azure Chaos Studio általánosan elérhetővé vált az Ignite 2023-ban, és számos funkcióval rendelkezik, amelyek segítségével megkezdheti a hibainjektálást és a rugalmassági tesztelést az alkalmazáshoz az Azure-infrastruktúrával.

Megbízhatósági ellenőrzőlista

Tekintse meg a javaslatok teljes készletét.