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.

Hibaelemzési szolgáltatás

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:

  1. 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.
  2. 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.
  3. 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ő:

  1. Az ügyféltől adjon ki egy leállítási csomópontra vonatkozó kérést.

  2. 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:

  1. 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.
  2. Az írási kvórum leáll a replikák leállása miatt (egy kódcsomag vagy csomópont leállása miatt).
  3. 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:

  1. A fejlesztési környezetben olyan állapotváltásokat hozzon létre, amelyek lehetővé teszik az egyes metódusok egységtesztjeit.
  2. 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.
  3. 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:

  1. 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.
  2. 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 .