Esercizio - Aggiungere controlli di integrità dell'applicazione Web

Completato

Contoso Shoes richiede un modo per controllare l'integrità dell'applicazione Web a livello di API, nonché le relative dipendenze. Si vuole implementare un endpoint di controllo integrità dedicato nell'applicazione, che segnala lo stato di integrità dell'API a intervalli regolari.

Stato corrente e problema

Nella progettazione corrente, l'applicazione registra gli errori quando si verificano problemi di runtime nel codice API o le chiamate ai servizi dipendenti hanno esito negativo, ad esempio query di database non riuscite. Questo approccio è utile per la risoluzione dei problemi dopo che si è verificato un evento imprevisto.

Tuttavia, l'approccio non è proattivo. Servizio app di Azure e gli strumenti di monitoraggio esterni non hanno un modo per controllare lo stato di integrità dell'applicazione stessa. Questo divario influisce su molti casi d'uso, ad esempio la modalità di distribuzione del carico. L'implementazione corrente si basa esclusivamente sull'impegno migliore del piano di servizio app per distribuire il traffico in modo uniforme tra istanze senza mai controllare l'integrità dell'applicazione. In un evento imprevisto segnalato, il traffico è stato instradato a istanze di servizio app non integre, causando richieste non riuscite.

Specifica

L'attività consiste nel creare il servizio integrità dedicato come estensione al codice già distribuito.

  • Introdurre un'API controllo integrità nell'applicazione. L'API deve controllare lo stato di integrità dell'applicazione e le relative dipendenze e restituire un'indicazione di stato. Ad esempio, l'API deve controllare periodicamente le operazioni di lettura e scrittura in Azure Cosmos DB. Implementare tali funzioni come probe separati in modo che le letture e le scritture vengano controllate in modo indipendente.

    Suggerimento

    Estendere il controllo di integrità a servizi non funzionali, ad esempio Azure Key Vault e Registro Azure Container. Questo passaggio è importante, perché se questi servizi riscontrano un'interruzione, è possibile notare un impatto sulla possibilità di aumentare o resistere a un riavvio dell'istanza di servizio app.

  • L'endpoint dell'API controllo integrità deve essere chiamato di frequente da più origini e non deve compromettere le prestazioni dell'API. Ad esempio, il piano di Servizio app di Azure deve inviare richieste a un endpoint due volte al minuto e prendere decisioni informate sulle istanze di servizio app a cui distribuire il traffico.

  • Ottimizzare le prestazioni dell'API del controllo integrità memorizzando nella cache i risultati in memoria per 10 secondi. Non tutte le query all'endpoint del controllo integrità devono generare una chiamata back-end. Alcune di queste risposte possono essere gestite dalla cache.

  • Rendere disponibili i dati di controllo integrità in Monitoraggio di Azure per un'analisi futura.

Per iniziare a progettare, è consigliabile adottare l'approccio seguente:

1–Controlli di integrità

Tutte le query inviate dall'API controllo integrità devono essere eseguite in modo asincrono e in parallelo. Progettare controlli di integrità rispetto ai componenti critici, ad esempio il database. L'API deve controllare periodicamente le operazioni di lettura e scrittura. Implementare tali funzioni come probe separati in modo che le letture e le scritture vengano controllate in modo indipendente.

Usare le richieste che simulano il comportamento effettivo dell'applicazione senza sovraccaricare i servizi solo dai probe di integrità. Per testare anche le richieste di scrittura, è necessario progettare un modo per rimuovere i dati di test in modo efficiente in modo che non vengano combinati con i dati utente reali.

2–Modello di memorizzazione nella cache

Per evitare l'overload dei servizi downstream con i controlli di integrità, l'API controllo integrità deve memorizzare nella cache i risultati per un numero configurabile di secondi. Si pensi ai possibili modi per raggiungere questo obiettivo.

Controlla il tuo lavoro

Ecco un esempio di Servizio integrità applicazioni. Sono stati coperti tutti gli aspetti nel progetto?

  • L'endpoint di controllo integrità è compatibile con la funzionalità Controllo integrità del servizio app Azure?
  • Sono stati inclusi i controlli per le dipendenze di runtime? Cosa è stato usato come proxy/test?
    • Lettura/scrittura di Cosmos DB
    • API di terze parti
  • Sono stati memorizzati nella cache i risultati del controllo dell'integrità per ridurre il sovraccarico delle prestazioni?
  • Sono stati registrati eventi nei controlli di integrità? Si notano i successi e gli errori?
  • È stato applicato il campionamento dei log di applicazione Azure Application Insights ai log di controllo integrità?

Verifica delle conoscenze

1.

Perché la memorizzazione nella cache è stata implementata nell'endpoint di integrità?

2.

L'API è protetta dall'autenticazione di servizio app. Servizio app controllo integrità funziona con l'endpoint dell'API controllo integrità?