Exercício - Definir estado de integridade, métricas e limites

Concluído

Neste exercício, continuamos com a estrutura do modelo de saúde que você criou anteriormente. Sua tarefa é quantificar estados de integridade de componentes individuais para o aplicativo de exemplo.

Na estrutura do modelo de integridade, comece avaliando as camadas começando na parte superior com os fluxos do usuário e prossiga para as camadas inferiores.

Estado de integridade do fluxo do usuário

Até agora, identificamos dois fluxos de usuários: Listar itens de catálogo e Adicionar comentário. Para determinar os estados de integridade de cada fluxo, faça perguntas como:

  • Quando o fluxo de usuários é considerado saudável?
  • Pode operar em estado degradado?

Com base na implementação e nos requisitos funcionais, identifique os componentes do aplicativo que participam do fluxo do usuário. Os componentes são descritos em Exemplos de componentes de arquitetura.

Fluxo de utilizador Componentes
Listar itens do catálogo Aplicação Web interna front-end, API de catálogo
Adicionar comentário Aplicação Web interna front-end, API de catálogo, processador em segundo plano

Se algum desses componentes se tornar não íntegro, espera-se que o fluxo do usuário se torne não íntegro.

Nota

Algumas aplicações podem operar em um modo degradado especial. Por exemplo, se a Contoso Shoes implementar o cache do navegador local, os funcionários que estão usando o aplicativo Web poderão criar comentários, mas os comentários não poderão ser enviados e a exibição do cliente não será atualizada até que a API do Catálogo fique íntegra, o que o navegador pode verificar continuamente.

Estado de integridade do componente do aplicativo

Determine métricas que contribuem para o estado de integridade do componente. Para esta etapa, você precisa conhecer a funcionalidade do componente. Faça perguntas como:

  • Qual tempo de processamento na API é aceitável para manter uma boa experiência do usuário?
  • Existem erros esperados? Qual é a taxa de erro "normal"?
  • Qual é o tempo de processamento "normal"? O que significa se o tempo de processamento for maior do que o normal?
  • O que acontece para gravar operações se o Azure Cosmos DB estiver inacessível?

Essas perguntas devem levá-lo a limites específicos e mensuráveis para métricas-chave. Por exemplo, você pode considerar esses valores de limite para o componente API de catálogo.

Métricas e limite Estado de integridade
Tempo < de resposta 150 ms Contagem < de pedidos falhados 10 Bom estado de funcionamento
Tempo < de resposta 300 ms Contagem < de pedidos falhados 50 Degradado
Tempo > de resposta 300 ms Contagem > de pedidos falhados 50 Mau estado de funcionamento

Você pode obter os valores de uma solução de monitoramento de aplicativos, como o Application Insights.

Estado de integridade do recurso do Azure

Os estados de integridade do serviço do Azure são baseados em recursos específicos. Por exemplo, o Azure Cosmos DB relata a utilização da unidade de transação de banco de dados (DTU) e os Serviços de Aplicativo do Azure fornecem informações sobre a utilização da CPU.

Para obter informações sobre métricas por tipo de recurso, consulte Métricas suportadas com o Azure Monitor.

Estados de saúde e limiares

Depois de avaliar todas as camadas do aplicativo, você deve ter uma lista de componentes e suas definições de estado de integridade semelhantes a este exemplo.

Componente Indicador/métrica Bom estado de funcionamento Degradado Mau estado de funcionamento
Listar fluxo de usuário de itens de catálogo Estado de saúde subjacente Front-end íntegro e API de catálogo íntegro
Adicionar fluxo de usuário de comentário Estado de saúde subjacente Front-end íntegro, API de catálogo íntegro e processador em segundo plano íntegro
Aplicação Web front-end # de respostas HTTP não-20x/min 0 1-10 > 10
API do Catálogo # de exceções/seg < 10 10-50 > 10
Tempo médio de processamento (ms) < 150 150-500 > 500
Processador em segundo plano Tempo médio na fila (ms) < 200 200-1,000 > 1,000
Tempo médio de processamento (ms) < 100 100-200 > 200
Contagem de falhas < 3 3-10 > 10
Azure Cosmos DB Utilização da DTU < 70% 70%-90% > 90%
Azure Key Vault Contagem de falhas < 3 3-10 > 10
Hubs de Eventos do Azure Processamento do comprimento da lista de pendências (mensagens de saída/entrada) < 3 3-20 > 20
Armazenamento de Blobs do Azure Latência média (ms) < 100 100-200 > 200

Neste exemplo, a tolerância a erros para o aplicativo Web front-end e a API de catálogo é diferente. Esta diferença está relacionada com a compreensão técnica da aplicação. Todos os erros de front-end devem ser tratados do lado do cliente, portanto, há um limite zero. No entanto, na camada de API, 10 exceções são permitidas para contabilizar erros causados pelo usuário. Por exemplo, erros como 404 - Não encontrado não indicam necessariamente um problema de saúde.