Recomendações para priorizar o desempenho de fluxos críticos

Aplica-se a esta recomendação de lista de verificação de Eficiência de Desempenho do Azure Well-Architected Framework:

PE:09 Priorize o desempenho de fluxos críticos. A alocação de recursos de carga de trabalho e os esforços de otimização de desempenho devem priorizar os fluxos que dão suporte aos processos, usuários e operações de negócios mais importantes.

Este guia descreve as recomendações para priorizar o desempenho de fluxos críticos em uma carga de trabalho. Os fluxos críticos representam processos de negócios cruciais que geram receita ou impulsionam operações de alta prioridade. Ao priorizar o desempenho de fluxos críticos, você garante que os fluxos que têm mais impacto obtenham os recursos necessários antes dos fluxos de prioridade mais baixos. A falha em fazer essa priorização pode ter efeitos negativos desproporcionais nas prioridades da carga de trabalho e na experiência do usuário.

Definições

Termo Definição
Flow Em uma carga de trabalho, a sequência de ações que executa uma função específica. Um fluxo envolve a movimentação de dados e a execução de processos entre componentes da carga de trabalho.
Processamento de fila de prioridade O ato de processar tarefas de alta prioridade antes de tarefas de baixa prioridade.
Limitação de taxa O ato de limitar quantas solicitações podem acessar um recurso.
Fluxo do sistema O fluxo de informações e processos em um sistema. O sistema segue automaticamente esse fluxo para habilitar fluxos de usuário ou funcionalidade de carga de trabalho.
Fluxo de usuário A sequência que um usuário segue para realizar uma tarefa.

Principais estratégias de design

Fluxos críticos referem-se aos principais fluxos de usuário para clientes ou ao sistema e fluxos de dados para operações que são cruciais para a funcionalidade da carga de trabalho. Esses fluxos podem incluir ações como registros de usuário, entradas, compras de produtos, acesso a páginas por trás de um paywall ou qualquer outro caminho ou processo de chave em sua carga de trabalho.

Os fluxos críticos afetam significativamente a experiência do usuário ou as operações de negócios. Fluxos críticos têm metas de desempenho mais altas e contratos de nível de serviço do que fluxos não críticos. Quando os recursos são limitados, fluxos não críticos devem gerar uso de recursos para fluxos críticos. Você precisa identificar, monitorar e priorizar todos os fluxos antes de isolar e otimizar fluxos críticos.

Identificar todos os fluxos

A primeira etapa para priorizar o desempenho de fluxos críticos é identificar todos os fluxos em sua carga de trabalho. A identificação de fluxo envolve mapear e entender sistematicamente todos os caminhos de usuário e comunicação de componentes. O foco é entender as métricas de desempenho e o impacto potencial dos fluxos no desempenho da carga de trabalho.

Ao dissecar a carga de trabalho em fluxos discretos, você pode encontrar gargalos de desempenho, utilização de recursos ineficientes e oportunidades de otimização de desempenho. Esse conhecimento expõe áreas de melhoria necessárias e é a primeira etapa para identificar fluxos críticos. Para obter mais informações, consulte Identificar e classificar fluxos de usuário e sistema.

Monitorar métricas de desempenho de fluxo

Depois de identificar todos os fluxos em sua carga de trabalho, você precisa coletar métricas de desempenho em cada fluxo e monitorar essas métricas. As métricas de fluxo fornecem insights sobre tempos de resposta, taxas de erro e taxa de transferência. O objetivo é observar e registrar consistentemente as métricas relacionadas ao desempenho para refinar ainda mais sua compreensão do impacto de cada fluxo no desempenho da carga de trabalho. Para monitorar as métricas de fluxo, você pode usar as seguintes ferramentas para coletar dados:

  • Ferramentas analíticas e de acompanhamento: essas ferramentas fornecem insights sobre o comportamento e as interações do usuário em seu aplicativo. Analisando os dados do usuário, você pode identificar os fluxos, gargalos ou possíveis problemas mais comuns.

  • Ferramentas de monitoramento de desempenho de aplicativos (APM): use ferramentas do APM para monitorar o desempenho do aplicativo e acompanhar como os fluxos são executados. Essas ferramentas fornecem visibilidade sobre tempos de resposta, erros e outras métricas de desempenho, permitindo que você identifique fluxos críticos e otimize seu desempenho.

  • Ferramentas de registro em log e depuração: use essas ferramentas para capturar e analisar logs e informações de depuração enquanto o aplicativo é executado. Examine os logs e as informações de depuração para rastrear como os fluxos estão em execução e identificar problemas ou erros.

Identificar fluxos críticos

Com os dados de desempenho disponíveis, você pode começar a classificar todos os fluxos e identificar os fluxos críticos. A identificação de fluxos críticos envolve avaliar o impacto no desempenho e a criticalidade de cada fluxo. A priorização efetiva do fluxo garante que os fluxos mais importantes recebam os recursos necessários antes de fluxos menos críticos. Para priorizar fluxos em seu aplicativo, considere estas etapas:

  • Identificar o impacto nos negócios: comece avaliando a importância de cada fluxo em suas operações. Concentre-se em como cada fluxo se alinha com seus objetivos de negócios, seu impacto sobre os usuários e os potenciais efeitos negativos do baixo desempenho. Por exemplo, embora uma camada de serviço gratuita possa atrair mais usuários, uma camada paga pode ser mais vital para suas metas de negócios.

    Além disso, considere os impactos no desempenho de um fluxo em um ou mais processos de negócios. Vários fluxos podem dar suporte a um único processo de negócios, mas, muitas vezes, um fluxo tem um efeito significativo no desempenho desse processo. Você deseja identificar os fluxos que são o maior impacto no desempenho. Por outro lado, um único fluxo pode sustentar vários processos. Nesses casos, o desempenho desse fluxo influencia diretamente a eficácia de todos os processos relacionados e, provavelmente, é um fluxo crítico.

  • Analisar dados de desempenho: analise as métricas de desempenho associadas a cada fluxo. Procure padrões, anomalias ou métricas de destaque que possam fornecer insights sobre a eficiência e a importância do fluxo. Por exemplo, fluxos do sistema com uso significativo provavelmente são fluxos importantes.

  • Atribuir classificação de criticalidade: com base nos indicadores de desempenho e impacto nos negócios, você deve priorizar os fluxos. Use classificações de criticalidade de Alta, Média e Baixa. Os fluxos com um impacto significativo nos negócios ou uma demanda de alto desempenho devem receber uma classificação de criticalidade "Alta". Esses fluxos são seus fluxos críticos. Concentre-se em fluxos com alto tráfego de usuário ou tenha um efeito direto na geração de receita. A tabela a seguir fornece características de fluxos críticos (alto) e não críticos (médio a baixo).

Fluxos críticos Fluxos não críticos
Alto uso Baixo uso
Comercialmente crítico Não comercialmente crítico
Operações caras Pequenas operações
Diferenciar tempo Não diferencia tempo
Produção Pré-produção
Processamento em tempo real Processamento em lotes
Diferenciar latência Não diferencia latência
Usuário pagante Usuário sem pagamento
Camada premium Camada básica
Tarefas importantes Tarefas não essenciais
Contas de alta receita Contas de baixa receita

Isolar fluxos críticos

O processo de isolar fluxos críticos é fornecer recursos dedicados ou capacidade para dar suporte a fluxos críticos. Você deseja alocar recursos e atenção para esses fluxos que são essenciais para a experiência ideal do usuário ou resultados comerciais significativos. O objetivo é garantir que os fluxos críticos recebam energia de computação suficiente, largura de banda de rede e recursos para operar de forma eficiente e eficaz. Ao isolar fluxos críticos, você pode gerenciar com mais facilidade os recursos que dão suporte a fluxos críticos. Aqui estão as recomendações para isolar fluxos críticos:

  • Segmentação de recursos: crie recursos separados para fluxos críticos, permitindo que eles operem de forma independente sem interferência de outros processos. Por exemplo, você pode isolar fluxos críticos em segmentos de rede dedicados ou usando servidores dedicados para lidar com as necessidades de processamento desses fluxos. Essa abordagem ajuda a minimizar como fluxos não críticos podem afetar negativamente os fluxos críticos.

  • Segmentação lógica: use ferramentas de virtualização e conteinerização, como Docker ou Kubernetes, para isolar fluxos no nível do software. Você pode separar fluxos críticos em VMs (máquinas virtuais). Ao fazer isso, você cria um ambiente isolado, reduzindo dependências e possíveis interferências de outros fluxos.

  • Alocação de capacidade: para fluxos críticos, aloque explicitamente um conjunto fixo de capacidade, como CPU, memória e E/S de disco. Essa alocação garante que os fluxos críticos sempre tenham recursos suficientes para operar com eficiência. Defina cotas ou limites de recursos usando plataformas de orquestração. Ao alocar explicitamente recursos para fluxos críticos, você impede a contenção de recursos e prioriza como eles são executados.

Compensação: a segmentação de recursos afeta os custos. Quando você dedica recursos a um fluxo, geralmente aumenta o custo e deixa alguns recursos subutilizados. Para justificar os aprimoramentos de desempenho para fluxos críticos, o aumento do impacto nos negócios deve superar o aumento do custo.

Otimizar a alocação de capacidade

Quando você não pode isolar fluxos críticos, a próxima melhor opção é priorizar fluxos críticos no acesso à capacidade disponível. A otimização da alocação de capacidade é distribuir estrategicamente a capacidade disponível para fluxos diferentes com base em sua criticalidade. A capacidade inclui CPU, memória, armazenamento e largura de banda de rede. O objetivo é garantir que os fluxos mais críticos (prioridade mais alta) recebam a capacidade necessária para operar com eficiência. Para decidir como alocar capacidade, considere estas estratégias:

  • Avaliar a capacidade do recurso: avalie a quantidade de capacidade do recurso que pode ser alocada para os fluxos. A capacidade pode incluir recursos como CPU, memória, armazenamento e largura de banda de rede. Entenda as limitações e restrições de sua infraestrutura ou ambiente.

  • Analisar os requisitos de fluxo: analise os requisitos de recursos de cada fluxo. Entenda os recursos que o fluxo precisa para operar com eficiência. Para cada fluxo, identifique as demandas de recursos, como utilização da CPU, requisitos de memória e largura de banda de rede.

  • Priorizar alocações: corresponda a capacidade de recurso disponível aos requisitos de recursos dos fluxos. Aloque recursos com base nas prioridades de fluxo, garantindo que os fluxos de prioridade mais alta recebam os recursos necessários para atender às suas necessidades. Entenda onde estão suas restrições mais rígidas e otimize as alocações de capacidade onde elas são necessárias. Por exemplo, as filas podem processar apenas algumas mensagens por minuto, mas alguns limites de armazenamento são difíceis de alcançar.

  • Limite de taxa de uso: para garantir que os fluxos críticos possam consumir os recursos necessários para atender às metas de desempenho, aplique limites de taxa a fluxos e tarefas não críticos. Os limites de taxa limitam o número de solicitações que os fluxos de prioridade mais baixa e os usuários podem fazer para recursos restritos. Por exemplo, você pode limitar as solicitações de não privacidade a uma API. Para obter mais informações, consulte o padrão limitação de taxa e Taxa limitando um manipulador HTTP no .NET.

  • Usar o processamento de fila de prioridade: o processamento de fila prioritária dá alta prioridade a determinadas solicitações. As filas geralmente têm uma estrutura FIFO (primeiro a entrar, primeiro a sair), mas você pode atualizar seu aplicativo para atribuir uma prioridade às mensagens que ele adiciona à fila. Use essa funcionalidade para priorizar fluxos críticos e usuários. Para saber mais, consulte o Padrão fila de prioridade.

Risco: pode ser um desafio equilibrar as necessidades de fluxos críticos com o desempenho geral de uma carga de trabalho. Embora você deva priorizar fluxos críticos, você não deve negligenciar fluxos não críticos. A eficiência geral do desempenho de uma carga de trabalho depende de todos os fluxos. Fluxos não críticos negligenciados podem criar problemas que afetam todos os usuários. Muito ruído de itens não essenciais rouba a atenção de itens críticos. Mas muito pouco ruído poderia prejudicar toda a carga de trabalho. A quantidade de dados e o número de alertas devem refletir essas prioridades equilibradas.

Facilitação do Azure

Identificar e monitorar fluxos: o Azure fornece soluções diferentes para ajudar você a monitorar o desempenho de fluxos críticos em sua carga de trabalho. O Azure Monitor, os Logs do Azure Monitor e o Aplicativo Azure Insights são alguns dos serviços que oferecem funcionalidades de monitoramento abrangentes para vários tipos de aplicativos e cargas de trabalho.

Otimizando alocações de capacidade: alguns serviços do Azure dão suporte a segmentação de recursos, segmentação lógica e técnicas de alocação de capacidade para alocar capacidade e recursos a fluxos críticos. Você pode isolar fluxos críticos por meio de técnicas como criar recursos separados, aumentar a densidade, usar virtualização e conteinerização e alocar recursos explicitamente para fluxos críticos.

Alguns serviços do Azure, como o Azure Gerenciamento de API, fornecem políticas internas para limitação de taxa. O Azure fornece diretrizes detalhadas e uma implementação de exemplo do padrão de design limitação de taxa.

O Azure dá suporte ao processamento de fila de prioridade. Azure Functions fornece funções controladas por eventos que você pode disparar de várias maneiras, inclusive por uma nova mensagem em uma fila ou tópico. Combine Azure Functions com o Armazenamento de Filas do Azure ou Barramento de Serviço do Azure para processar mensagens com base em sua prioridade.

Lista de verificação de eficiência de desempenho

Consulte o conjunto completo de recomendações.