Compartilhar via


Modelagem de integridade para cargas de trabalho

Os aplicativos em nuvem geram grandes volumes de dados operacionais, o que torna difícil identificar e resolver problemas rapidamente. Um motivo comum para esse desafio é a ausência de uma linha de base de integridade personalizada para a funcionalidade da carga de trabalho e a incapacidade de detectar descompassos dessa linha de base.

A modelagem de integridade é um exercício de observabilidade que combina o contexto de negócios com dados brutos de monitoramento para quantificar a integridade geral de uma carga de trabalho. Isso ajuda a definir uma linha de base na qual você pode monitorar a carga de trabalho. Você deve considerar dados como telemetria de componentes de infraestrutura e aplicativo. A modelagem de integridade também pode incorporar outras informações necessárias para atingir as metas de qualidade da carga de trabalho.

Problemas de desempenho ou degradação operacional podem causar desvio do estado operacional esperado. Ao modelar a integridade de uma carga de trabalho, você pode identificar desvios e tomar decisões operacionais informadas que consideram o impacto nos negócios.

A modelagem de saúde preenche a lacuna entre o conhecimento operacional tribal e os insights acionáveis. Ele ajuda você a gerenciar problemas críticos de forma eficaz. O conceito é essencial para maximizar a confiabilidade e a eficácia operacional.

Este guia oferece diretrizes práticas sobre modelagem de integridade, incluindo como criar um modelo que avalia a integridade do tempo de execução de uma carga de trabalho e todos os seus subsistemas.

Terminologia Definição
Modelagem de integridade Um exercício de observabilidade que usa o contexto de negócios para interpretar dados de monitoramento como estados de integridade.
Modelo de integridade Uma representação gráfica de entidades lógicas e seus relacionamentos para um determinado escopo. Cada nó tem uma definição de estado de integridade para racionalizar os dados de monitoramento em todo o modelo.
Entidade de saúde Um componente lógico que representa uma unidade individual de um sistema, uma combinação lógica de várias entidades relacionadas ou o sistema geral.
Estado de integridade Um status definido e mensurável que fornece insights operacionais significativos sobre a integridade de uma entidade.
Sinal de saúde Fluxos de dados individuais que fornecem insights sobre o comportamento operacional de uma entidade.
Modelo de modelos Um escopo de modelagem agregado no qual as entidades representam modelos de integridade distintos para sistemas componentes.

Recomendamos que você assista a este vídeo para obter uma compreensão de alto nível da modelagem de integridade.

O que é saúde, modelagem de saúde e um modelo de saúde?

O termo integridade refere-se ao status operacional de uma entidade e suas dependências. Essa entidade pode ser uma unidade individual de um sistema, uma combinação lógica de várias entidades relacionadas ou o sistema geral.

Recomendamos que você represente a saúde em um dos três estados:

  • Saudável: Opera de forma ideal e atende às expectativas de qualidade

  • Degradado: Exibe um comportamento menos saudável, o que indica problemas potenciais

  • Não saudável: Em estado crítico e requer atenção imediata

Observação

Você pode representar a integridade com uma pontuação em vez de estados para fornecer mais granularidade de dados.

Os estados de integridade são derivados da combinação de dados de monitoramento com informações de domínio. Cada estado deve ser definido e mensurável. Os estados de integridade são calculados usando sinais de integridade, que são fluxos de dados individuais que fornecem insights sobre o comportamento operacional de uma entidade. Os sinais podem incluir métricas, logs, rastreamentos ou outras características de qualidade. Por exemplo, um sinal de integridade para uma entidade de máquina virtual (VM) pode rastrear a métrica de utilização da CPU. Outros sinais para essa entidade podem incluir uso de memória, latência de rede ou taxas de erro.

Ao definir sinais de integridade, considere os requisitos não funcionais para a carga de trabalho. No exemplo de utilização da CPU, inclua os limites esperados para cada estado de integridade. Se a utilização exceder o limite tolerado de acordo com os requisitos de carga de trabalho, o sistema fará a transição de Íntegro para Degradado ou Não íntegro. Essas alterações de estado disparam os alertas ou ações apropriados.

A modelagem de integridade exige que as entidades tenham estados bem definidos derivados de vários sinais de integridade e contextualizados para a carga de trabalho. Por exemplo, a definição de integridade de uma VM pode ser:

  • Íntegro: os principais requisitos e metas não funcionais, como tempo de resposta, utilização de recursos e desempenho geral do sistema, são totalmente atendidos. Por exemplo, 95% das solicitações são processadas em 500 milissegundos. A carga de trabalho usa recursos de VM como CPU, memória e armazenamento de forma otimizada e mantém um equilíbrio entre as demandas de carga de trabalho e a capacidade disponível. A experiência do usuário está nos níveis esperados.

  • Degradado: os recursos não estão funcionando de maneira ideal, mas ainda estão operacionais. Por exemplo, o disco de armazenamento está enfrentando problemas de limitação. Os usuários podem experimentar respostas lentas.

  • Não saudável: A degradação está além dos limites tolerados. Os recursos não estão mais responsivos ou disponíveis, e o sistema não está mais atendendo aos níveis de desempenho aceitáveis. A experiência do usuário é severamente afetada.

O resultado da modelagem de integridade é um modelo ou uma representação gráfica de entidades lógicas e seus relacionamentos para uma arquitetura de carga de trabalho. Cada nó tem uma definição de estado de integridade.

Importante

A modelagem de integridade é um conceito abstrato que você pode implementar e aplicar em diferentes escopos se tiver uma boa compreensão dos cenários de negócios.

Um diagrama que mostra a definição do modelo de integridade.

Na imagem:

  • As entidades são componentes lógicos da carga de trabalho que representam aspectos do sistema. Eles podem ser componentes de infraestrutura, como servidores, bancos de dados e redes. Eles também podem ser módulos de aplicativos específicos, pods, serviços ou microsserviços. Ou as entidades podem capturar interações do usuário e fluxos do sistema dentro da carga de trabalho.

    Observação

    Os fluxos de usuário e sistema resumem os requisitos não funcionais em cenários de negócios que envolvem componentes de aplicativo e infraestrutura. Este resumo reflete o valor comercial do aplicativo.

  • As relações entre entidades espelham as cadeias de dependência dentro do sistema. Por exemplo, um módulo de aplicativo pode chamar componentes de infraestrutura específicos que formam uma relação.

Considere um cenário em que uma carga de trabalho de comércio eletrônico experimenta um pico de mensagens com falha em uma fila do Barramento de Serviço do Azure, o que está causando falha nos pagamentos. Esse problema é crítico para a organização devido à perda de receita implícita. Embora um desenvolvedor de aplicativos possa entender o efeito desse pico de métrica nos pagamentos, esse conhecimento tribal não é frequentemente compartilhado entre a equipe de operações.

Um modelo de integridade pode dar aos operadores visibilidade imediata do problema e seus efeitos. O fluxo de pagamento depende do Barramento de Serviço, que é um dos componentes da carga de trabalho. A representação visual revela o estado degradado da instância do Barramento de Serviço e seu efeito no fluxo de pagamento. Os operadores podem entender a importância do problema e concentrar seus esforços de correção nesse componente específico.

A modelagem de integridade foi importante no cenário anterior das seguintes maneiras:

  • Ele melhorou o tempo de detecção (TTD) e o tempo de mitigação (TTM), permitindo um isolamento mais rápido do problema, o que levou a uma detecção mais rápida de problemas e possíveis correções.

  • Os operadores receberam alertas com base nos estados de integridade, o que reduziu o ruído desnecessário. As operadoras receberam notificações que forneceram contexto específico sobre o impacto comercial nos pagamentos.

  • As cadeias de dependência ajudaram os operadores a entender completamente a extensão dos problemas operacionais. Esse conhecimento acelerou as avaliações de impacto e levou a respostas priorizadas. Os operadores também identificaram facilmente problemas em cascata ou correlacionados.

  • Os operadores conduziram atividades pós-incidente com precisão porque o modelo de integridade forneceu insights sobre as causas raiz das anomalias e os sinais de integridade específicos envolvidos.

  • Isso tornou os dados de monitoramento significativos para todos os membros da equipe. Ele preencheu a lacuna entre o conhecimento tribal e as percepções compartilhadas.

  • A organização usou o modelo de integridade como base para investimentos futuros em operações orientadas por IA para obter insights inteligentes.

Esquema do modelo de integridade

Os modelos de integridade fornecem um esquema de dados distinto otimizado para casos de uso de observabilidade. Esse esquema leva a modelagem de integridade de um conceito abstrato para uma solução mensurável. Ao modelar seus requisitos, objetivos e contexto arquitetônico específicos, você pode adaptar os dados de integridade ao seu cenário exclusivo.

Um diagrama que mostra a definição do estado de integridade.

A saúde é um conceito de dados relativos. Cada modelo representa dados de integridade exclusivos e priorizados para seu escopo contextual, mesmo que use o mesmo conjunto de entidades. O que constitui saudável em um cenário específico pode diferir significativamente em outros contextos.

Por exemplo, considere recursos do Azure do mesmo tipo em sua carga de trabalho.

  • A VM A executa um aplicativo sensível à CPU.
  • A VM B lida com um serviço com uso intensivo de memória.

As definições de integridade para essas máquinas são diferentes. As métricas de utilização da CPU provavelmente influenciam o status de integridade da VM A, e a VM B pode priorizar métricas relacionadas à memória.

Importante

Um modelo de integridade não deve tratar todas as falhas da mesma forma. Deve distinguir claramente entre falhas esperadas ou transitórias, mas recuperáveis, e um verdadeiro estado de desastre.

Criar um modelo de integridade

A primeira etapa para criar um modelo de integridade é um exercício de design lógico, que normalmente envolve as atividades descritas nas seções a seguir.

Um diagrama que mostra as atividades de modelagem de integridade.

Avalie o design da carga de trabalho

Comece este exercício de design lógico avaliando os seguintes componentes do design da carga de trabalho.

  • Componentes de infraestrutura, como clusters de computação e bancos de dados

  • Componentes de aplicativos executados na computação e seus componentes relevantes

  • Dependências lógicas ou físicas entre componentes

  • Fluxos de usuários e sistemas

Por exemplo, o modelo de integridade de um aplicativo de comércio eletrônico deve representar o estado atual de processos críticos, como entrada do usuário, check-out e pagamentos.

Contextualize usando requisitos de negócios

Avalie a importância relativa e o impacto geral de cada fluxo em sua organização. Considere fatores como experiência do usuário, segurança e eficiência operacional. Por exemplo, na maioria dos cenários, a falha de um processo de pagamento é provavelmente mais significativa do que a falha de um processo de relatório.

Identifique caminhos de escalonamento para lidar com problemas relacionados a cada fluxo. Para obter mais informações, consulte Otimizar o design da carga de trabalho usando fluxos.

Observação

Você percebe o valor da modelagem de integridade somente quando incorpora seus cenários e contexto de negócios. Em seguida, você pode racionalizar o impacto comercial dos problemas operacionais.

Mapear para métricas de confiabilidade

Procure métricas de confiabilidade relevantes em todo o design do aplicativo.

Considere a definição de SLIs (indicadores de nível de serviço) e SLOs (objetivos de nível de serviço) para todo o aplicativo e seus processos de negócios individuais. Esses SLIs e SLOs devem estar alinhados com os sinais de integridade específicos considerados para seu modelo de integridade. Ao fazer isso, você cria uma definição abrangente de integridade que reflete com precisão a obtenção de um nível de serviço aceitável para o aplicativo.

Importante

SLIs e SLOs são sinais críticos de integridade. Eles criam uma definição significativa de integridade que reflete o nível de serviço que você deseja, juntamente com outros atributos de qualidade. Você também pode definir objetivos de integridade do serviço (SHOs) para capturar a integridade que deseja obter em um intervalo de tempo agregado.

Identifique sinais de saúde

Para criar um modelo de integridade abrangente, correlacione vários tipos de dados de monitoramento, incluindo métricas, logs e rastreamentos. Ao fazer isso, você garante que o conceito de integridade reflita com precisão o estado de runtime de uma entidade específica ou toda a carga de trabalho.

Usar métricas e logs da plataforma

No contexto da modelagem de integridade, é essencial coletar métricas e logs no nível da plataforma dos recursos subjacentes do Azure. Essas métricas incluem porcentagem de CPU, entrada e saída de rede e operações de disco por segundo. Você pode usar esses dados em seu modelo de integridade para detectar e prever possíveis problemas, mantendo um ambiente confiável.

Além disso, essa abordagem ajuda a diferenciar entre falhas transitórias ou interrupções temporárias e falhas não transitórias ou problemas persistentes.

Observação

Como prática recomendada, você deve configurar todos os recursos do aplicativo para direcionar logs e métricas de diagnóstico para a tecnologia de agregação de log escolhida. Crie proteções usando o Azure Policy para garantir configurações de diagnóstico consistentes em todo o aplicativo e impor a configuração escolhida para cada serviço do Azure.

Adicionar logs de aplicativos

Os logs de aplicativos são uma fonte importante de dados de diagnóstico para seu modelo de integridade. Aqui estão algumas práticas recomendadas para o log de aplicativos:

  • Use o log semântico ou estruturado. Os logs estruturados facilitam o consumo automatizado e a análise de dados de log em escala.

    Considere armazenar métricas de recursos do Azure e dados de diagnóstico em um workspace de Logs do Azure Monitor em vez de uma conta de armazenamento. Usando esse método, você pode criar sinais de integridade usando consultas Kusto para uma avaliação eficiente.

  • Registre dados no ambiente de produção. Capture dados abrangentes enquanto o aplicativo opera no ambiente de produção. Informações suficientes são essenciais para a avaliação da saúde e para diagnosticar quaisquer problemas de produção detectados.

  • Registre eventos nos limites de serviço. Inclua uma ID de correlação que atravesse os limites do serviço. Se uma transação envolver vários serviços e um deles falhar, a ID de correlação ajudará você a rastrear solicitações em todo o aplicativo e identificar a causa da falha.

  • Use o log assíncrono. Evite operações de log síncronas que possam bloquear o código do aplicativo. O log assíncrono garante a disponibilidade evitando listas de pendências de solicitação durante gravações de log.

  • Separe o log do aplicativo da auditoria. Mantenha os logs de auditoria separadamente dos logs de diagnóstico. Embora os registros de auditoria atendam aos requisitos de conformidade ou regulamentares, mantê-los distintos evita transações perdidas.

Implementar rastreamento distribuído

Implemente o rastreamento distribuído correlacionando a telemetria entre fluxos críticos do sistema. A telemetria correlacionada fornece insights sobre transações de ponta a ponta e é essencial para uma análise de causa raiz (RCA) eficaz quando ocorrem falhas.

Usar investigações de integridade

Implemente e execute investigações de integridade fora do aplicativo para verificar explicitamente a integridade e a capacidade de resposta do aplicativo. Use as respostas de sondagem como sinais em seu modelo de integridade.

Você pode implementar investigações de integridade medindo o tempo de resposta do aplicativo como um todo ou de seus componentes individuais. As investigações podem executar processos para medir a latência e verificar a disponibilidade ou extrair informações do aplicativo. Para obter mais informações, consulte Padrão de monitoramento de ponto de extremidade de integridade.

A maioria dos balanceadores de carga dá suporte à execução de investigações de integridade que executam ping nos pontos de extremidade do aplicativo em intervalos configurados. Como alternativa, você pode usar um serviço de vigilância externo. Um serviço de watchdog agrega verificações de integridade de vários componentes na carga de trabalho. Os watchdogs também podem hospedar código que faz correção imediata para condições de saúde conhecidas.

Adotar técnicas de monitoramento estrutural e funcional

O monitoramento estrutural envolve equipar o aplicativo com logs e métricas semânticas. O aplicativo coleta diretamente essas métricas, que incluem consumo de memória atual, latência de solicitação e outros dados relevantes no nível do aplicativo.

Fortaleça seus processos de monitoramento usando o monitoramento funcional. Essa abordagem se concentra na medição dos serviços da plataforma e seu efeito na experiência geral do usuário. Ao contrário do monitoramento estrutural, o monitoramento funcional não requer conhecimento detalhado do sistema. Ele testa o comportamento visível externamente do aplicativo. Essa abordagem é útil para avaliar SLOs e SLIs.

Modele o design

Representar o design do aplicativo identificado como entidades e relacionamentos. Mapeie sinais de integridade para componentes específicos para quantificar estados de integridade em um nível de entidade. Considere a criticidade dos componentes para determinar como os estados de integridade devem se propagar por meio do modelo. Por exemplo, os componentes de relatório podem não ser tão críticos quanto outros componentes, o que resulta em efeitos diferentes na integridade geral da carga de trabalho.

Definir alertas acionáveis

Use os estados de integridade avaliados para disparar alertas e ações automatizadas. A integridade deve ser integrada aos runbooks operacionais existentes como um princípio central de dados de observabilidade.

Normalmente, há um mapeamento de um para um entre os dados de monitoramento e as regras de alerta, o que pode levar a resultados indesejáveis, como tempestades de alerta e ruído de alerta ambiente. Por exemplo, em um cluster de computação, grandes volumes de alertas no nível da VM com base na utilização da CPU e na contagem de erros podem sobrecarregar os operadores durante falhas e causar atrasos na resolução. Da mesma forma, quando há um grande número de alertas configurados, o ruído de alerta ambiente geralmente resulta em alertas que são ignorados ou ignorados.

Um modelo de integridade introduz a separação entre dados de monitoramento e regras de alerta. Uma definição de integridade agrega muitos sinais em um único estado de integridade, o que diminui o número de alertas para que os operadores possam se concentrar apenas em alertas de alto valor que são críticos para a organização. Considere o cenário de e-commerce. Você pode configurar um alerta para enviar notificações sobre alterações na integridade do fluxo de pagamentos do processo, em vez de alterações nos recursos subjacentes, como a fila do Barramento de Serviço.

Observação

A capacidade de alertar em todas as camadas do modelo de integridade fornece flexibilidade para as diferentes personas de carga de trabalho. Os proprietários de aplicativos e gerentes de produto podem ser alertados sobre alterações de estado de integridade nos principais cenários de negócios ou em toda a carga de trabalho. Os operadores podem ser alertados com base na integridade da infraestrutura ou dos componentes do aplicativo.

Visualizar o modelo

Crie representações visuais, como tabelas ou gráficos, para transmitir efetivamente o estado atual e o histórico do modelo de integridade. Certifique-se de que a visualização esteja alinhada com o contexto de negócios e forneça insights acionáveis.

Ao visualizar seu modelo de integridade, considere adotar uma abordagem de semáforo para tornar os estados de integridade imediatamente perspicazes em todas as cadeias de dependência.

Atribua verde para saudável, âmbar para degradado e vermelho para não saudável. Ao identificar rapidamente os estados codificados por cores, você pode localizar com eficiência a causa raiz de qualquer degradação do aplicativo.

O diagrama mostra um modelo de integridade que usa uma abordagem de semáforo.

Observação

Recomendamos que você considere os requisitos de acessibilidade para pessoas com deficiência visual ao criar um painel para seu modelo de saúde. Para obter as melhores práticas de diagramação, consulte Diagramas de design de arquitetura.

Adote seu modelo de saúde

Depois de criar um modelo de integridade, considere os seguintes casos de uso para conduzir a detecção e a interpretação de falhas ou problemas operacionais.

Aplicabilidade a várias funções

A modelagem de integridade pode fornecer informações específicas para funções de trabalho ou para funções no mesmo contexto da carga de trabalho. Por exemplo, uma função de DevOps pode precisar de informações de integridade operacional. Um oficial de segurança pode estar mais preocupado com sinais de intrusão e exposição de segurança. Um administrador de banco de dados provavelmente só está interessado em um subconjunto do modelo de aplicativo por meio dos recursos do banco de dados.

Adapte insights de saúde para diferentes partes interessadas. Considere a criação de modelos separados a partir de conjuntos de dados sobrepostos.

Validação contínua

Use seu modelo de integridade para otimizar os processos de teste e validação, como teste de carga e teste de caos. Você pode validar o estado operacional do runtime durante o teste e avaliar a eficácia do modelo em cenários de escala e falha incorporando modelos de integridade ao ciclo de vida da engenharia.

Saúde organizacional

Embora a modelagem de integridade seja comumente associada à quantificação de estados de integridade para aplicativos individuais, sua aplicabilidade se estende além desse escopo.

Em um nível de carga de trabalho individual, os modelos de integridade fornecem uma base para a observabilidade do aplicativo e insights operacionais. Cada aplicativo pode ter seu próprio modelo de integridade que captura o que cada estado de integridade significa em seu contexto.

Você pode combinar vários modelos de integridade em uma construção de alto nível criando um modelo de modelos. Por exemplo, você pode criar o volume de observabilidade de uma unidade de negócios ou de uma propriedade de nuvem inteira usando modelos de integridade como componentes em um modelo maior. Os modelos de integridade representam cargas de trabalho dentro da propriedade como nós no gráfico de nível superior. Use as relações nesse modelo para capturar dependências entre aplicativos, incluindo fluxos de dados, interações de serviço e infraestrutura compartilhada.

Considere uma empresa de varejo que possui vários aplicativos para comércio eletrônico, pagamentos e processamento de pedidos. Você pode definir cada um desses aplicativos como um modelo de integridade independente para quantificar o que a integridade significa para essa carga de trabalho. Em seguida, você pode usar um modelo pai para mapear todos esses modelos de integridade de componentes como entidades e capturar o impacto operacional entre aplicativos por meio de cadeias de dependência. Por exemplo, se o aplicativo de comércio eletrônico não estiver íntegro, ele terá um efeito cascata no aplicativo de pagamento.

A modelagem de integridade fornece uma linha de base operacional quantificada ajustada a um contexto de negócios específico. A IA para operações de TI (AIOps) é uma maneira popular de aumentar a eficiência operacional. Os dados de saúde são uma entrada fundamental para modelos de aprendizado de máquina analisarem tendências de saúde. Por exemplo, os modelos de aprendizado de máquina podem:

  • Extraia mais insights das alterações de estado e recomende ações.

  • Analise as tendências de integridade ao longo do tempo para impulsionar a previsão de problemas e o refinamento do modelo.

Mantenha seu modelo de integridade

A manutenção de um modelo de integridade é uma atividade de engenharia contínua que se alinha ao desenvolvimento e às operações do aplicativo. À medida que seu aplicativo evolui, certifique-se de que seu modelo de integridade evolua em paralelo.

Além disso, trate os modelos de integridade como artefatos de carga de trabalho que devem ser integrados ao ciclo de vida de desenvolvimento. Adote a infraestrutura como código (IaC) para um gerenciamento consistente e controlado por versão do seu modelo de integridade. Use a automação para que o modelo permaneça atualizado à medida que você adiciona ou remove componentes de infraestrutura e aplicativo da carga de trabalho.

Os dados de saúde diminuem gradualmente de valor ao longo do tempo. Para otimizar a eficiência operacional e minimizar os custos, evite reter dados de integridade por mais de 30 dias. Se necessário, você pode arquivar dados para atender aos requisitos de auditoria ou em cenários que envolvem análise de padrões de longo prazo em IA para operações de TI.

Observação

Ao arquivar dados de integridade, certifique-se de associá-los ao estado de configuração do modelo. Interpretar as mudanças de estado pode ser um desafio sem esse contexto.

Próxima etapa