Megosztás a következőn keresztül:


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ó javaslat:

RE:08 Tesztelje a rugalmassági és rendelkezésre állási forgatókönyveket a káosztervezés alapelveinek alkalmazásával a tesztelési és éles környezetekben. A teszteléssel gondoskodhat arról, hogy a kecses lebomlás implementációja é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ást és útmutatást nyújt a hibainjektáláshoz és a káosztervezéshez.

Meghatározások

Időszak Definíció
Elérhetőség 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 szolgáló hiba bevezetése.
Helyreállíthatóság A rugalmasság szinonimája.
Tartósság Az alkalmazás számítási feladatai képesek ellenállni és helyreállítani a meghibásodási módokat.

Főbb tervezési stratégiák

Megbízhatósági felkészültség tesztelése

  • 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 tesztelési és előkészítési környezetekben végezze el a legtöbb tesztelést. Az is előnyös, ha az éles rendszeren végzett tesztek egy részhalmazát futtatja. 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 egységes 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 buildelési folyamatokba. 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, használjon manuális tesztelést a fejlesztendő tesztek hatókörének meghatározásához.

  • A rugalmas és rendelkezésre állási tesztelés végrehajtásához a fejlesztési ciklus korai szakaszában alkalmazzon egy balról balra tartó tesztelési módszert.

  • Egy egyszerű dokumentációs formátumot alakíthat ki, így mindenki könnyen megértheti a szokásos 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ási szintű célkitűzéseket (SLO-kat), a szolgáltatásiszint-megállapodásokat (SLA-kat), a helyreállítási idő célkitűzéseit (KPO-k) és a helyreállítási pont célkitűzéseit (RPO-k).

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

  • Dokumentálhatja és megoszthatja a helyreállítási idő mérőszámait 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ány szerinti üzembehelyezési tesztelési eljárások használatával biztosíthatja, hogy automatizált, kiszámítható és hatékony üzembe helyezési folyamat áll rendelkezésére.

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

  • 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. Ezen információk segítségével tesztelheti a skálázási stratégiát. A terhelés- és terheléstesztelésről további információt a Tesztelési javaslatok című témakörben talál.

  • Hibainjektálással tesztelheti, hogy a számítási feladat hogyan kezeli a függő szolgáltatásokban vagy más függőségekben előforduló hibákat.

  • Tesztelje és ellenőrizze, hogyan reagál az öngyógyító és önmegőrző kialakítás 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 nagyobb incidensekre.

  • Tesztelje a számítási feladat azon képességét, hogy kecsesen csökkenjen, és hibainjektálással minimalizálja az alkatrész meghibásodá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éget kínál a tesztelés elvégzésére és a számítási feladatok megértésének javítására. A következő szakaszok minden forgatókönyvre vonatkozóan javaslatokat nyújtanak.

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. A teszteket anélkül végezheti el, hogy a számítási feladat váratlanul leromlott vagy teljesen offline állapotba lenne állítva. Ha elegendő ideje van a karbantartási időszak alatt, a karbantartási munka befejezése után tesztelheti a karbantartásban részt vevő összetevőket és folyamatokat is.

Nem tervezett üzemkimaradás

Minden üzemkimaradási incidens lehetőséget kínál arra, hogy többet tudjon meg a számítási feladatról, és javítsa rugalmasságát az alábbi lépések végrehajtásával, prioritás szerint rendezve:

  • A számítási feladat online állapotba kerülése az ügyfelek számára. Ehhez elvégezheti a probléma kerülő megoldását, megoldhatja a problémát, vagy elindíthatja a helyreállítási folyamatokat.

  • Határozza meg a kimaradás kiváltó okát, és kezelje azt. 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 tett 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ő intézkedések a várt terhelést képesek kezelni a probléma alapos tesztelésével. Győződjön meg arról, hogy megfelelő 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 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 használatával 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ás és káosztechnika használata

A hibainjektálási tesztelés a káosztervezés alapelveit követi, kiemelve a számítási feladatnak az összetevők hibáira való reagálási képességét. Üzem előtti és éles környezetekben hibainjektálási tesztelést végezhet. Tesztelés alkalmazása az infrastruktúra- és alkalmazásrétegekre. Alkalmazza a tanult információkat a hibamód-elemzés elvégzésére vonatkozó javaslatok alkalmazásával, hogy csak a rangsorban szereplő hibákat tesztelje, és hogy a hibák elhárítására szolgáló kockázatcsökkentési stratégiákat használjon. A káosztervezés fő irányelvei a következők:

  • Legyen proaktív. Ne várjon, amíg a hibák bekövetkeznek. Próbálja meg előre jelezni a hibákat, ha káoszkísérleteket végez, hogy felderítse és kijavítsa a problémákat, 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. Tekintse meg a hibákat az összetett rendszerek természetes részének, és használja őket a rendszer megbízhatóságának megismerésére és javítására.

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

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

  • Telepítse a védőkorlátokat és a kecses megoldásokat. A rendelkezésre állás növelése érdekében olyan biztonsági intézkedéseket valósíthat meg, mint a megszakító minta vagy a szabályozási minta. A hibák során az üzletmenet folytonosságát lehetővé tevő, kecses degradálási megközelítések implementálása.

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

  • Hozzon létre immunitást. A káosztechnológiai kísérletek használatával javíthatja a számítási feladatok hibáinak 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 folyamatos gyakorlat, nem pedig egy rövid távú taktikai munka, amely egyetlen kimaradásra reagál. 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élnak kell lennie, például tesztelnie kell, hogy egy adott folyamat képes-e ellenállni egy adott összetevő elvesztésének.
  2. 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 állapotot a kísérlet futtatásakor.
  3. Adja meg a hibát vagy a hibákat. A kísérletnek szándékosan meg kell céloznia azokat az összetevőket, amelyek gyorsan helyreállíthatók, és tájékozottan kell elvárni, 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 figyelése. Gyűjtsön telemetriát 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 az összegyűjtött metrikákat az alapmetrikákkal a hibainjektálási eredmények teljes képéhez.
  5. Dokumentálja a folyamatot és a megfigyeléseket. A kísérletek részletes nyilvántartásának megőrzése tájékoztatja a jövőbeli döntéseket a számítási feladatok tervezéséről, biztosítva, hogy elhárítsa az idővel feltárt hiányosságokat.
  6. Azonosítsa és cselekedje az eredményt. Tervezze meg azokat a szervizelési lépéseket, amelyek fejlesztésként hozzáadhatók 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 üzembe helyezéssel megegyező folyamatok szerint vizsgálják felül és tesztelik nem gyártási környezetekben.

Rendszeresen ellenőrizze a folyamatot, az architektúrát é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 a következőt kell elvégeznie:

  • 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 a következő javaslatokat és szempontokat a káosztesztelési stratégia optimalizálásához:

  • Kihívást jelent a rendszer feltételezései. A teszteléssel pró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 a múltbeli tapasztalatok alapján megbízhatóak. 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épe van 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ások potenciális hírnevét vagy pénzügyi hatásait. 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árható eredményei. Törekedjen egyensúlyt teremteni 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. A függőségek vizsgálata és az eredmények kiértékelése a függőségek eltávolításakor.

  • 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 a 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ése esetén az új tesztek közvetlenül megcélozhatják ezeket a viselkedéseket, és lehetővé teszik, hogy szervizelési stratégiákat tervezzen számukra.

Kompromisszum: A hibainjektálási tesztelés az éles környezetben zavaró lehet, és leállást okozhat. Legyen átlátható az érdekeltekkel erről a lehetőségről, és győződjön meg arról, hogy rendelkezik a kísérletek leállítására és a tervek visszaállítására vonatkozó biztonsági intézkedésekkel a bevezetett hibák gyors megfordí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égeltérésekkel.

Az Azure megkönnyítése

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 a chaos engineering segítségével méri, értelmezi és javítja a felhőalkalmazások és szolgáltatások rugalmasságát. Az Azure Chaos Studio általánosan elérhető az Ignite 2023-ban, és számos funkcióval rendelkezik, amelyek segítenek az alkalmazás hibainjektálásának és rugalmassági tesztelésének megkezdésében az Azure-infrastruktúrával.

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

Tekintse meg a javaslatok teljes készletét.