Övning – Lägga till hälsokontroller för webbprogram

Slutförd

Contoso Shoes behöver ett sätt att kontrollera hälsotillståndet för webbprogrammet på API-nivå, samt dess beroenden. Du vill implementera en dedikerad slutpunkt för hälsokontroll i programmet, som rapporterar API-hälsostatusen med jämna mellanrum.

Aktuellt tillstånd och problem

I den aktuella designen loggar programmet fel när det finns körningsproblem i API-koden eller anrop till beroende tjänster misslyckas, till exempel misslyckade databasfrågor. Den här metoden är användbar vid felsökning av problem när en incident har inträffat.

Metoden är dock inte proaktiv. Azure App Service och de externa övervakningsverktygen kan inte kontrollera hälsostatusen för själva programmet. Det här gapet påverkar många användningsfall, till exempel hur belastningen distribueras. Den aktuella implementeringen förlitar sig enbart på App Service-planens bästa försök att fördela trafiken jämnt över instanser utan att någonsin kontrollera programmets hälsa. I en rapporterad incident dirigerades trafiken till felaktiga App Service-instanser, vilket resulterade i misslyckade begäranden.

Specifikation

Din uppgift är att skapa den dedikerade hälsotjänsten som ett tillägg till den redan distribuerade koden.

  • Introducera ett API för hälsokontroll i ditt program. API:et måste kontrollera programmets hälsostatus och dess beroenden och returnera en statusindikering. API:et bör till exempel regelbundet kontrollera läs- och skrivåtgärder till Azure Cosmos DB. Implementera dessa funktioner som separata avsökningar så att läsningar och skrivningar kontrolleras oberoende av varandra.

    Dricks

    Utöka hälsokontrollen till icke-funktionella tjänster, till exempel Azure Key Vault och Azure Container Registry. Det här steget är viktigt, för om tjänsterna drabbas av ett avbrott kan det påverka möjligheten att skala ut eller stå emot omstart av en App Service-instans.

  • API-slutpunkten för hälsokontroll ska anropas ofta av flera källor och bör inte försämra API:ets prestanda. Azure App Service-planen måste till exempel skicka begäranden till en slutpunkt två gånger i minuten och fatta välgrundade beslut om vilka App Service-instanser som ska distribueras till.

  • Optimera prestanda för API:et för hälsokontroll genom att cachelagra resultat i minnet i 10 sekunder. Alla frågor till slutpunkten för hälsokontroll bör inte resultera i ett serverdelsanrop. Vissa av dessa svar kan hanteras från cacheminnet.

  • Gör hälsokontrolldata tillgängliga i Azure Monitor för framtida analys.

För att komma igång med din design rekommenderar vi följande metod:

1 – Hälsokontroller

Alla frågor som API:et för hälsokontroll skickar måste utföras asynkront och parallellt. Utforma hälsokontroller mot kritiska komponenter som databasen. API:et bör regelbundet kontrollera läs- och skrivåtgärder. Implementera dessa funktioner som separata avsökningar så att läsningar och skrivningar kontrolleras oberoende av varandra.

Använd begäranden som efterliknar verkligt programbeteende utan att lägga för mycket belastning på tjänsterna bara från hälsoavsökningarna. För att även testa skrivbegäranden måste du utforma ett sätt att ta bort testdata effektivt så att de inte blandas med verkliga användardata.

2–Cachelagringsmönster

För att undvika överlagring av underordnade tjänster med hälsokontroller bör API:et för hälsokontroll cachelagra resultat för ett konfigurerbart antal sekunder. Tänk på möjliga sätt att uppnå detta mål.

Kontrollera ditt arbete

Här är ett exempel på program Hälsotjänst. Tog du upp alla aspekter i din design?

  • Är slutpunkten för hälsokontroll kompatibel med Funktionen Hälsokontroll i Azure App Service?
  • Har du tagit med kontroller för körningsberoenden? Vad använde du som proxy/test?
    • Cosmos DB-läsning/skrivning
    • API från tredje part
  • Cachelagrade du resultatet av hälsokontrollen för att minska prestandakostnaderna?
  • Loggade du händelser i hälsokontrollerna? Observera framgångarna och felen?
  • Har du tillämpat Azure Application Insights-loggsampling på hälsokontrollloggarna?

Kunskapstest

1.

Varför implementerades cachelagring på hälsoslutpunkten?

2.

Ditt API skyddas av App Service-autentisering. Kommer App Service Health Check att fungera med api-slutpunkten för hälsokontroll?