Exercício – Definir o estado de integridade, as métricas e os limites

Concluído

Neste exercício, continuaremos com a estrutura do modelo de integridade que você criou anteriormente. Sua tarefa é quantificar os estados de integridade de componentes individuais do aplicativo de exemplo.

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

Estado de integridade do fluxo do usuário

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

  • Quando o fluxo de usuário é considerado íntegro?
  • Ele pode operar em um 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 Componentes de arquitetura de exemplo.

Fluxo de usuário Componentes
Listar itens do catálogo Aplicativo Web interno de front-end, API de Catálogo
Adicionar comentário Aplicativo Web interno de front-end, API de Catálogo, processador em segundo plano

Se um desses componentes perder a integridade, o fluxo de usuário também a perderá.

Observação

Alguns aplicativos podem operar em um modo degradado especial. Por exemplo, se a Contoso Shoes implementar o cache do navegador local, os funcionários que estiverem 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 de Catálogo fique íntegra, o que o navegador pode verificar continuamente.

Estado de integridade do componente do aplicativo

Determine as 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?
  • Há erros esperados? Qual é a taxa de erros "normal"?
  • Qual é o tempo de processamento "normal"? O que significa quando o tempo de processamento é maior que o normal?
  • O que acontece com as operações de gravação quando o Azure Cosmos DB está inacessível?

Com essas perguntas, você saberá quais são os limites específicos e mensuráveis das principais métricas. Por exemplo, você pode considerar esses valores limite para o componente API de Catálogo.

Métricas e limite Estado de integridade
Tempo de resposta < Contagem de solicitações com falha de 150 ms < 10 Healthy
Tempo de Resposta < Contagem de solicitações com falha de 300 ms < 50 Degradado
Tempo de Resposta > Contagem de solicitações com falha de 300 ms > 50 Unhealthy

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

Estados do Azure Resource Health

Os estados do Azure Resource Health 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, confira Métricas com suporte no Azure Monitor.

Estados de integridade e limites

Após avaliar todas as camadas do aplicativo, você deve ter uma lista de componentes e suas definições de estado de integridade que se assemelhe a este exemplo.

Componente Indicador/métrica Íntegros Degradado Unhealthy
Fluxo de usuário Listar itens de catálogo Estado de integridade subjacente Front-end e API de Catálogo íntegros
Fluxo de usuário Adicionar comentário Estado de integridade subjacente Front-end, API de Catálogo e processador em segundo plano íntegros
Aplicativo Web de front-end Nº de respostas HTTP que não estão em 20 x/min 0 1-10 > 10
API de catálogo Nº de exceções/s < 10 10-50 > 10
Média de tempo de processamento (ms) < 150 150 – 500 > 500
Processador em segundo plano Média de tempo na fila (ms) < 200 200 – 1.000 > 1.000
Média de tempo de processamento (ms) < 100 100 – 200 > 200
Contagem de falhas < 3 3 – 10 > 10
Azure Cosmos DB Utilização de DTU < 70% 70% – 90% > 90%
Cofre de Chave do Azure Contagem de falhas < 3 3 – 10 > 10
Hubs de eventos do Azure Comprimento da lista de pendências de processamento (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 do aplicativo Web de front-end e da API de Catálogo é diferente. Essa diferença está relacionada à compreensão técnica do aplicativo. Todos os erros de front-end devem ser tratados no lado do cliente, portanto, há um limite igual a zero. No entanto, na camada de API, dez exceções têm permissão para considerar erros causados pelo usuário. Por exemplo, erros como 404 – Não Encontrado não indicam necessariamente um problema de integridade.