Gyakorlat – Webalkalmazás állapot-ellenőrzéseinek hozzáadása

Befejeződött

A Contoso Shoesnak módot kell adni a webalkalmazás állapotának API-szinten és függőségeinek ellenőrzésére. Egy dedikált állapot-ellenőrzési végpontot szeretne implementálni az alkalmazáson, amely rendszeres időközönként jelenti az API állapotát.

Aktuális állapot és probléma

A jelenlegi kialakításban az alkalmazás naplózza a hibákat, ha futásidejű problémák vannak az API-kódban, vagy a függő szolgáltatásokra irányuló hívások sikertelenek, például sikertelen adatbázis-lekérdezések. Ez a módszer hasznos az incidensek bekövetkezése utáni problémák elhárításához.

A megközelítés azonban nem proaktív. Azure-alkalmazás szolgáltatás és a külső monitorozási eszközök nem ellenőrizhetik az alkalmazás állapotát. Ez a rés számos használati esetet érint, például a terhelés elosztását. A jelenlegi implementáció kizárólag az App Service-csomag azon legjobb erőfeszítésére támaszkodik, hogy egyenletesen ossza el a forgalmat a példányok között anélkül, hogy az alkalmazás állapotát valaha is ellenőriznie kéne. Egy jelentett incidens során a forgalom nem megfelelő Állapotú App Service-példányokra lett irányítva, ami sikertelen kéréseket eredményezett.

Specifikáció

Hozza létre a dedikált állapotszolgáltatást a már üzembe helyezett kód bővítményeként.

  • Vezessen be egy állapot-ellenőrzési API-t az alkalmazásban. Az API-nak ellenőriznie kell az alkalmazás és függőségei állapotát, és vissza kell adnia az állapot jelzését. Az API-nak például rendszeresen ellenőriznie kell az olvasási és írási műveleteket az Azure Cosmos DB-be. Ezeket a függvényeket különálló mintavételekként implementálhatja, így az olvasások és írások egymástól függetlenül vannak ellenőrizve.

    Tipp.

    Az állapot-ellenőrzés kiterjesztése nem funkcionális szolgáltatásokra, például az Azure Key Vaultra és az Azure Container Registryre. Ez a lépés azért fontos, mert ha ezek a szolgáltatások üzemkimaradást tapasztalnak, előfordulhat, hogy hatással van az App Service-példányok újraindulásának skálázási vagy ellenállási képességére.

  • Az állapot-ellenőrzési API-végpontot gyakran, több forrásból kell meghívni, és nem szabad rontani az API teljesítményét. A Azure-alkalmazás szolgáltatáscsomagnak például percenként kétszer kell elküldenie a kéréseket egy végpontnak, és megalapozott döntéseket kell hoznia arról, hogy mely App Service-példányoknak kell továbbítania a forgalmat.

  • Az állapot-ellenőrzési API teljesítményének optimalizálása az eredmények 10 másodperces gyorsítótárazásával. Az állapot-ellenőrzési végpontra irányuló lekérdezések nem minden esetben eredményeznek háttérhívást. Ezen válaszok némelyike a gyorsítótárból is kiszolgálható.

  • Az állapot-ellenőrzési adatok elérhetővé tétele az Azure Monitorban későbbi elemzés céljából.

A tervezés megkezdéséhez ezt a megközelítést javasoljuk.

1– Állapotellenőrzések

Az állapot-ellenőrzési API által küldött összes lekérdezést aszinkron módon és párhuzamosan kell végrehajtani. Állapotellenőrzések tervezése a kritikus fontosságú összetevőkkel, például az adatbázissal. Az API-nak rendszeresen ellenőriznie kell az olvasási és írási műveleteket. Ezeket a függvényeket különálló mintavételekként implementálhatja, így az olvasások és írások egymástól függetlenül vannak ellenőrizve.

Valós alkalmazás viselkedését utánzó kérések használata anélkül, hogy túl sok terhelést helyeznek a szolgáltatásokra csak az állapotmintákból. Az írási kérelmek teszteléséhez meg kell terveznie a tesztadatok hatékony eltávolításának módját, hogy az ne keveredjen a valós felhasználói adatokkal.

2–Gyorsítótárazási minta

Az állapot-ellenőrzési API-nak konfigurálható számú másodpercre kell gyorsítótárazza az eredményeket annak érdekében, hogy ne terhelje túl az alsóbb rétegbeli szolgáltatásokat az állapot-ellenőrzéssel. Gondoljon a cél elérésének lehetséges módjaira.

Ellenőrizze munkáját

Íme egy példa alkalmazás Állapotfigyelő szolgáltatás. A tervezés minden aspektusát lefedte?

  • Kompatibilis az állapot-ellenőrzési végpont Azure-alkalmazás szolgáltatás állapot-ellenőrzési funkciójával?
  • Tartalmazta a futtatókörnyezeti függőségek ellenőrzését? Mit használt proxyként/tesztként?
    • Cosmos DB olvasás/írás
    • Külső API
  • Gyorsítótárazza az állapot-ellenőrzés eredményeit a teljesítményterhelés csökkentése érdekében?
  • Naplózták az eseményeket az állapotellenőrzésekben? Jegyezze fel a sikereket és a hibákat?
  • Alkalmazta Azure-alkalmazás Elemzések naplómintavételt az állapotellenőrzési naplókra?

Tudáspróba

1.

Miért lett implementálva a gyorsítótárazás az állapotvégponton?

2.

Az API-t App Service-hitelesítés védi, az App Service Health Check együttműködik az állapot-ellenőrzési API-végponttal?