Modelagem de integridade para cargas de trabalho

Os aplicativos de nuvem geram grandes volumes de dados operacionais, o que torna desafiador identificar e resolve 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 descompasso 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. Ele 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 descompasso do estado operacional esperado. Modelando a integridade de uma carga de trabalho, você pode identificar o descompasso e tomar decisões operacionais informadas que consideram o impacto nos negócios.

A modelagem de integridade faz a ponte entre o conhecimento operacional tribal e os insights acionáveis. Ele ajuda você a gerenciar problemas críticos com eficiência. 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 runtime 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 os dados de monitoramento como estados de integridade.
Modelo de integridade Uma representação gráfica de entidades lógicas e suas relações 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 integridade 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 integridade 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 de componentes.

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

O que é integridade, modelagem de integridade e um modelo de integridade?

O termo integridade refere-se à 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 integridade em um dos três estados:

  • Íntegro: opera de forma ideal e atende às expectativas de qualidade

  • Degradado: exibe um comportamento menos íntegro, o que indica possíveis problemas

  • Não íntegro: em um 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 deve ser 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 VM (máquina virtual) pode acompanhar a métrica de utilização da CPU. Outros sinais para essa entidade podem incluir o uso de memória, a latência de rede ou as taxas de erro.

Conforme você define 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 sejam contextualizados para a carga de trabalho. Por exemplo, a definição de integridade de uma VM pode ser:

  • Íntegro: os principais requisitos e destinos não funcionais, como tempo de resposta, utilização de recursos e desempenho geral do sistema, estão totalmente satisfeitos. Por exemplo, 95% das solicitações são processadas dentro de 500 milissegundos. A carga de trabalho usa recursos de VM como CPU, memória e armazenamento de maneira ideal 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 forma ideal, mas ainda estão operacionais. Por exemplo, o disco de armazenamento está enfrentando problemas de limitação. Os usuários podem ter respostas lentas.

  • Não íntegro: 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 suas relações 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 escopos diferentes se você 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, pods, serviços ou microsserviços específicos. 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 entre 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 espelho 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 no qual uma carga de trabalho de comércio eletrônico experimenta um pico de mensagens com falha em uma fila de Barramento de Serviço do Azure, o que está causando falha nos pagamentos. Esse problema é fundamental 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 sobre o 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) habilitando o isolamento de problemas mais rápido, o que levou à 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. Os operadores receberam notificações que forneceram contexto específico sobre o impacto nos negócios 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 realizaram 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 bridged a lacuna entre o conhecimento tribal e insights compartilhados.

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

Esquema de 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. Modelando 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 de estado de integridade.

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

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

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

As definições de integridade desses computadores 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 as métricas relacionadas à memória.

Importante

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

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.

Avaliar o design da carga de trabalho

Inicie 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 aplicativo executados na computação e seus componentes relevantes

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

  • Fluxos de usuário e sistema

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.

Contextualizar 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 de negócios e contexto. Em seguida, você pode racionalizar o impacto nos negócios de problemas operacionais.

Mapear para métricas de confiabilidade

Procure métricas de confiabilidade relevantes no design do aplicativo.

Considere definir 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 se alinhar 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 conquista 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 desejado junto com outros atributos de qualidade. Você também pode definir SHOs (objetivos de integridade do serviço) para capturar a integridade que deseja obter em um intervalo de tempo agregado.

Identificar sinais de integridade

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 de 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 de recursos subjacentes do Azure. Essas métricas incluem percentual de CPU, rede 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 você 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 de aplicativo para direcionar logs de diagnóstico e métricas para a tecnologia de agregação de log escolhida. Crie proteções usando 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 aplicativo

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

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

    Considere armazenar métricas de recursos do Azure e diagnóstico dados 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 avaliação eficiente.

  • Registrar 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 de saúde e para diagnosticar quaisquer problemas de produção detectados.

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

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

  • Separar o log do aplicativo da auditoria. Mantenha os logs de auditoria separadamente dos logs de diagnóstico. Embora os registros de auditoria atendam a requisitos regulatórios ou de conformidade, mantê-los distintos impede transações descartadas.

Implementar o 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 RCA (análise de causa raiz) eficaz quando ocorrem falhas.

Usar investigações de integridade

Implemente e execute investigações de integridade fora do aplicativo para marcar explicitamente a integridade e a capacidade de resposta do aplicativo. Use respostas de investigação 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 marcar 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 pontos de extremidade do aplicativo em intervalos configurados. Como alternativa, você pode usar um serviço de watchdog externo. Um serviço 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 integridade conhecidas.

Adotar técnicas de monitoramento estruturais e funcionais

O monitoramento estrutural envolve o equipamento do aplicativo com logs semânticos e métricas. 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 de 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.

Modelar o design

Represente o design do aplicativo identificado como entidades e relações. Mapeie sinais de integridade para componentes específicos para quantificar os estados de integridade em um nível de entidade. Considere a criticalidade 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 uma rede de dados de observabilidade principal.

Normalmente, há um mapeamento um-para-um entre dados de monitoramento e 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 alto número de alertas configurados, o ruído de alerta ambiente geralmente resulta em alertas 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 exclusivamente em alertas de alto valor críticos para a organização. Considere o cenário de comércio eletrônico. Você pode configurar um alerta para enviar notificações sobre alterações no processo de integridade do fluxo de pagamentos em vez de alterações em 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 produtos podem ser alertados sobre as 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 grafos, para transmitir efetivamente o estado e o histórico atuais do modelo de integridade. Verifique se a visualização está alinhada com o contexto de negócios e fornece insights acionáveis.

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

Atribua verde para íntegro, âmbar para degradado e vermelho para não íntegro. Identificando 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 dashboard para seu modelo de saúde. Para obter as melhores práticas de diagramação, consulte Diagramas de design de arquitetura.

Adotar seu modelo de integridade

Depois de criar um modelo de integridade, considere os casos de uso a seguir para impulsionar 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 dentro do 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 à 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.

Personalize os insights de integridade para diferentes stakeholders. Considere criar modelos separados 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 de engenharia.

Integridade organizacional

Embora a modelagem de integridade esteja comumente associada à quantificação de estados de integridade para aplicativos individuais, sua aplicabilidade vai 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 um constructo 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 dentro do grafo 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 tenha 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 se tornar não íntegro, ele terá um efeito em cascata no aplicativo de pagamento.

A modelagem de integridade fornece uma linha de base operacional quantificada ajustada para 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 integridade são uma entrada fundamental para modelos de machine learning analisarem tendências de integridade. Por exemplo, os modelos de machine learning podem:

  • Extraia mais insights de 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.

Manter seu modelo de integridade

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

Além disso, trate modelos de integridade como artefatos de carga de trabalho que devem ser integrados ao seu ciclo de vida de desenvolvimento. Adote IaC (infraestrutura como código) 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 integridade diminuem gradualmente em valor ao longo do tempo. Para otimizar a eficiência operacional e minimizar os custos, evite reter dados de integridade além de 30 dias. Se necessário, você pode arquivar dados para atender aos requisitos de auditoria ou em cenários que envolvem a análise de padrões de longo prazo na IA para operações de TI.

Observação

Ao arquivar dados de integridade, certifique-se de acoplá-los com o estado de configuração do modelo. Interpretar alterações de estado pode ser um desafio sem esse contexto.

Próxima etapa