Exercício - Adicionar verificações de integridade do aplicativo Web
A Contoso Shoes precisa de uma maneira de verificar a integridade do aplicativo Web no nível da API, bem como suas dependências. Você deseja implementar um ponto de extremidade de verificação de integridade dedicado no aplicativo, que relata o status de integridade da API em intervalos regulares.
Estado atual e problema
No design atual, o aplicativo registra erros quando há problemas de tempo de execução no código da API ou chamadas para serviços dependentes falham, como consultas de banco de dados com falha. Essa abordagem é útil na solução de problemas após a ocorrência de um incidente.
No entanto, a abordagem não é proativa. O Serviço de Aplicativo do Azure e as ferramentas de monitoramento externo não têm como verificar o status de integridade do próprio aplicativo. Essa lacuna afeta muitos casos de uso, como a forma como a carga é distribuída. A implementação atual depende exclusivamente do melhor esforço do plano do Serviço de Aplicativo para distribuir o tráfego uniformemente entre instâncias sem nunca verificar a integridade do aplicativo. Em um incidente relatado, o tráfego foi roteado para instâncias não íntegras do Serviço de Aplicativo, resultando em solicitações com falha.
Especificação
Sua tarefa é criar o serviço de integridade dedicado como uma extensão para o código já implantado.
Introduza uma API de verificação de integridade em seu aplicativo. A API deve verificar o status de integridade do aplicativo e suas dependências e retornar uma indicação de status. Por exemplo, a API deve verificar periodicamente as operações de leitura e gravação no Azure Cosmos DB. Implemente essas funções como testes separados para que as leituras e gravações sejam verificadas de forma independente.
Gorjeta
Estenda a verificação de integridade para serviços não funcionais, como o Azure Key Vault e o Azure Container Registry. Esta etapa é importante, pois se esses serviços sofrerem uma interrupção, você poderá notar um impacto na capacidade de dimensionamento ou resistência à reinicialização de uma instância do Serviço de Aplicativo.
O ponto de extremidade da API de verificação de integridade deve ser chamado com frequência, por várias fontes, e não deve degradar o desempenho da API. Por exemplo, o plano do Serviço de Aplicativo do Azure deve enviar solicitações a um ponto de extremidade duas vezes por minuto e tomar decisões informadas sobre para quais instâncias do Serviço de Aplicativo distribuir tráfego.
Otimize o desempenho da API de verificação de integridade armazenando em cache os resultados na memória por 10 segundos. Nem todas as consultas ao ponto de extremidade da verificação de integridade devem resultar em uma chamada de back-end. Algumas dessas respostas podem ser servidas a partir do cache.
Disponibilize os dados de verificação de integridade no Azure Monitor para análise futura.
Abordagem recomendada
Para começar a desenvolver o seu design, recomendamos a seguinte abordagem:
1–Controlos sanitários
Todas as consultas enviadas pela API de verificação de integridade devem ser executadas de forma assíncrona e em paralelo. Verificações de integridade do projeto em relação aos componentes críticos, como o banco de dados. A API deve verificar periodicamente as operações de leitura e gravação. Implemente essas funções como testes separados para que as leituras e gravações sejam verificadas de forma independente.
Use solicitações que imitam o comportamento real do aplicativo sem sobrecarregar muito os serviços apenas a partir das sondas de integridade. Para também testar solicitações de gravação, você precisa projetar uma maneira de remover dados de teste de forma eficiente para que eles não sejam misturados com dados reais do usuário.
2–Padrão de cache
Para evitar sobrecarregar os serviços downstream com verificações de integridade, a API de verificação de integridade deve armazenar os resultados em cache por um número configurável de segundos. Pense em possíveis maneiras de alcançar esse objetivo.
Verifique o seu trabalho
Aqui está um exemplo de Serviço de Integridade do Aplicativo. Cobriu todos os aspetos do seu projeto?
- O ponto de extremidade de verificação de integridade é compatível com o recurso de verificação de integridade do serviço de Aplicativo do Azure?
- Você incluiu verificações para dependências de tempo de execução? O que você usou como proxy/teste?
- Leitura/gravação do Cosmos DB
- API de terceiros
- Você armazenou em cache os resultados da verificação de integridade para reduzir a sobrecarga de desempenho?
- Registou eventos nos seus exames de saúde? Repare nos sucessos e nos fracassos?
- Você aplicou a amostragem de log do Azure Application Insights aos logs de verificação de integridade?