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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
Kapcsolódó hivatkozások
- Azure-alkalmazások biztonsági mentése és vészhelyreállítása
- Megbízhatósági tesztelés ellenőrzőlistája
- Alkalmazások tesztelése a rendelkezésre állás és a rugalmasság érdekében
Megbízhatósági ellenőrzőlista
Tekintse meg a javaslatok teljes készletét.