A Hibaelemzési szolgáltatás bemutatása
A Hibaelemzési szolgáltatás a Microsoft Azure Service Fabricre épülő szolgáltatások tesztelésére lett kialakítva. A Hibaelemzési szolgáltatással jelentős hibákat idézhet elő, és teljes tesztelési forgatókönyveket futtathat az alkalmazásokon. Ezek a hibák és forgatókönyvek a szolgáltatás teljes élettartama során tapasztalt számos állapotot és átmenetet gyakorolnak és ellenőriznek, mindezt ellenőrzött, biztonságos és konzisztens módon.
A műveletek azok az egyéni hibák, amelyek egy szolgáltatást céloznak a teszteléshez. A szolgáltatásfejlesztők ezeket építőelemként használhatják bonyolult forgatókönyvek írásához. Például:
- Indítsa újra a csomópontot tetszőleges számú olyan helyzet szimulálásához, amikor egy gép vagy virtuális gép újraindul.
- Helyezze át az állapotalapú szolgáltatás replikáját a terheléselosztás, feladatátvétel vagy alkalmazásfrissítés szimulálásához.
- Az állapotalapú szolgáltatás kvórumvesztésének meghívásával olyan helyzetet teremthet, amikor az írási műveletek nem folytathatók, mert nincs elég "biztonsági mentési" vagy "másodlagos" replika az új adatok elfogadásához.
- Adatvesztést hívhat meg egy állapotalapú szolgáltatáson, hogy olyan helyzetet hozzon létre, amelyben az összes memóriabeli állapot teljesen törlődik.
A forgatókönyvek egy vagy több műveletből álló összetett műveletek. A Hibaelemzési szolgáltatás két beépített teljes forgatókönyvet kínál:
- Káoszforgatókönyv
- Feladatátvételi forgatókönyv
Tesztelés szolgáltatásként
A Hibaelemzési szolgáltatás egy Service Fabric rendszerszolgáltatás, amely automatikusan elindul egy Service Fabric-fürttel. Ez a szolgáltatás szolgál a hibainjektálás, a tesztforgatókönyv végrehajtása és az állapotelemzés gazdagépeként.
Hibaművelet vagy tesztforgatókönyv indításakor a rendszer egy parancsot küld a Hibaelemzési szolgáltatásnak a hibaművelet vagy a tesztelési forgatókönyv futtatásához. A Hibaelemzési szolgáltatás állapotalapú, így megbízhatóan futtathat hibákat és forgatókönyveket, és ellenőrizheti az eredményeket. A hibaelemzési szolgáltatás például megbízhatóan végrehajthat egy hosszú ideig futó tesztforgatókönyvet. Mivel a tesztek a fürtön belül vannak végrehajtva, a szolgáltatás megvizsgálhatja a fürt és a szolgáltatások állapotát, hogy részletesebb információkat nyújtson a hibákról.
Elosztott rendszerek tesztelése
A Service Fabric jelentősen megkönnyíti az elosztott skálázható alkalmazások írását és kezelését. A Hibaelemzési szolgáltatás hasonló módon megkönnyíti az elosztott alkalmazások tesztelését. A tesztelés során három fő problémát kell megoldani:
- Valós forgatókönyvekben előforduló hibák szimulálása/generálása: A Service Fabric egyik fontos eleme, hogy lehetővé teszi az elosztott alkalmazások számára a különböző hibák utáni helyreállítást. Ahhoz azonban, hogy teszteljük, hogy az alkalmazás képes-e helyreállítani ezeket a hibákat, egy olyan mechanizmusra van szükségünk, amely szimulálja/generálja ezeket a valós hibákat egy ellenőrzött tesztkörnyezetben.
- Korrelált hibák generálásának képessége: A rendszer alapvető hibái, például a hálózati hibák és a géphibák könnyen előállíthatók egyenként. Ezeknek az egyéni hibáknak az interakciói következtében jelentős számú, a való világban előforduló forgatókönyv létrehozása nem triviális.
- Egységes élmény a fejlesztés és az üzembe helyezés különböző szintjein: Számos hibainjektálási rendszer képes különböző típusú hibákra. Mindezekben azonban gyenge a tapasztalat, amikor az egy dobozos fejlesztői forgatókönyvekről, a nagy tesztkörnyezetekben futtatott tesztekről az éles környezetben végzett tesztekhez használják őket.
Bár ezeknek a problémáknak a megoldására számos mechanizmus létezik, hiányzik egy olyan rendszer, amely ugyanezt teszi a szükséges garanciákkal – egészen egy egy dobozos fejlesztői környezettől kezdve az éles fürtökön való tesztelésig . A Hibaelemzési szolgáltatás segítségével az alkalmazásfejlesztők az üzleti logikájuk tesztelésére összpontosíthatnak. A Hibaelemzési szolgáltatás biztosítja a szolgáltatás és a mögöttes elosztott rendszer közötti interakció teszteléséhez szükséges összes képességet.
Valós hibaforgatókönyvek szimulálása/létrehozása
Az elosztott rendszerek meghibásodásokkal szembeni robusztusságának teszteléséhez szükség van egy mechanizmusra a hibák létrehozásához. Bár elméletben egy olyan hiba generálása, mint a csomópont leállása, egyszerűnek tűnik, de ugyanazokat a konzisztenciaproblémákat kezdi elérni, amelyeket a Service Fabric próbál megoldani. Ha például le szeretnénk állítani egy csomópontot, a szükséges munkafolyamat a következő:
Az ügyféltől adjon ki egy leállítási csomópontra vonatkozó kérést.
Küldje el a kérést a megfelelő csomópontra.
a. Ha a csomópont nem található, sikertelennek kell lennie.
b. Ha a csomópont megtalálható, csak akkor adja vissza, ha a csomópont le van állítva.
A hiba tesztelési szempontból történő ellenőrzéséhez a tesztnek tudnia kell, hogy a hiba előidézésekor a hiba ténylegesen bekövetkezik. A Service Fabric garantálja, hogy a csomópont leáll, vagy már leállt, amikor a parancs elérte a csomópontot. Mindkét esetben a tesztnek képesnek kell lennie az állapot helyes okának okára, és sikeresnek vagy sikertelennek kell lennie az ellenőrzés során. Egy, a Service Fabricen kívül implementált rendszer, amely ugyanezt a hibakészletet hajtja végre, számos hálózati, hardver- és szoftverproblémát okozhat, ami megakadályozhatja, hogy az előző garanciákat nyújtsa. A korábban említett problémák jelenlétében a Service Fabric újrakonfigurálja a fürt állapotát, hogy megkerülje a problémákat, így a Hibaelemzési szolgáltatás továbbra is megfelelő garanciákat tud nyújtani.
Szükséges események és forgatókönyvek létrehozása
Bár a valós hibák következetes szimulálása nehéz kiindulni, a korrelált hibák létrehozására való képesség még nehezebb. Például adatvesztés történik egy állapotalapú tartós szolgáltatásban, amikor a következő dolgok történnek:
- A replikáció csak a replikák írási kvórumát rögzíti. Az összes másodlagos replika lemarad az elsődleges replika mögött.
- Az írási kvórum leáll a replikák leállása miatt (egy kódcsomag vagy csomópont leállása miatt).
- Az írási kvórum nem tud biztonsági másolatot készíteni, mert a replikák adatai elvesznek (a lemez sérülése vagy a gép újraimálása miatt).
Ezek a korrelált hibák a való világban történnek, de nem olyan gyakran, mint az egyéni hibák. Ezeknek a forgatókönyveknek a tesztelése kritikus fontosságú, mielőtt éles környezetben történnek. Még fontosabb, hogy ezeket a forgatókönyveket éles számítási feladatokkal szimuláljuk ellenőrzött körülmények között (a nap közepén az összes mérnökkel a fedélzeten). Ez sokkal jobb, mint amikor hajnali 2:00-kor először kerül sor éles környezetben.
Egységesített élmény különböző környezetekben
A gyakorlat hagyományosan három különböző élménykészletet hozott létre, egyet a fejlesztési környezethez, egyet a tesztekhez és egyet az éles környezethez. A modell a következő volt:
- A fejlesztési környezetben olyan állapotváltásokat hozzon létre, amelyek lehetővé teszik az egyes metódusok egységtesztjeit.
- A tesztkörnyezetben hibák keletkeznek, amelyek lehetővé teszik a különböző hibaforgatókönyveket használó, végpontok közötti teszteket.
- A nem természetes hibák megelőzése és a meghibásodásra adott rendkívül gyors emberi reagálás biztosítása érdekében tartsa az éles környezetet érintetlenül.
A Service Fabricben a Hibaelemző szolgáltatáson keresztül azt javasoljuk, hogy ezt fordítsa meg, és használja ugyanazt a módszertant a fejlesztői környezettől az éles környezetig. Ezt kétféleképpen érheti el:
- Szabályozott hibák előidézéséhez használja a Fault Analysis Service API-kat egy egy dobozos környezetből egészen az éles fürtökig.
- Ha a fürtnek olyan lázat szeretne okozni, amely a hibák automatikus indukcióját okozza, használja a Hibaelemzési szolgáltatást az automatikus hibák létrehozásához. A hibák sebességének konfiguráción keresztüli szabályozása lehetővé teszi, hogy ugyanazt a szolgáltatást különböző környezetekben másképpen tesztelje.
A Service Fabric esetében, bár a hibák mérete eltérő lenne a különböző környezetekben, a tényleges mechanizmusok azonosak lennének. Ez sokkal gyorsabb kód-üzembe helyezési folyamatot tesz lehetővé, és lehetővé teszi a szolgáltatások valós terhelés alatti tesztelését.
A Hibaelemzési szolgáltatás használata
C#
A Hibaelemzési szolgáltatás funkciói a Microsoft.ServiceFabric NuGet-csomag System.Fabric névterében találhatók. A Hibaelemzési szolgáltatás funkcióinak használatához adja meg a nuget-csomagot referenciaként a projektben.
PowerShell
A PowerShell használatához telepítenie kell a Service Fabric SDK-t. Az SDK telepítése után a ServiceFabric PowerShell-modul automatikusan betöltődik a használathoz.
Következő lépések
Ahhoz, hogy valóban felhőméretű szolgáltatásokat hozhasson létre, elengedhetetlen annak biztosítása, hogy az üzembe helyezés előtt és után is a szolgáltatások ellenálljanak a valós hibáknak. A mai szolgáltatási világban nagyon fontos a gyors innováció és a kód éles környezetbe való áthelyezése. A Hibaelemzési szolgáltatás segítségével a szolgáltatásfejlesztők pontosan ezt tehetik meg.
Megkezdheti az alkalmazások és szolgáltatások tesztelését a beépített tesztforgatókönyvek használatával, vagy saját tesztforgatókönyveket készíthet a Hibaelemzési szolgáltatás által biztosított hibaműveletekkel .