Recomendações para atribuir prioridades ao 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 do desempenho devem priorizar os fluxos que suportam os processos empresariais, utilizadores e operações mais importantes. |
---|
Este guia descreve as recomendações para dar prioridade ao desempenho de fluxos críticos numa carga de trabalho. Os fluxos críticos representam processos empresariais cruciais que geram receitas ou impulsionam operações de alta prioridade. Quando prioriza o desempenho dos fluxos críticos, garante que os fluxos que têm mais impacto obtêm os recursos de que necessitam antes de fluxos de prioridade inferior. A não execução desta atribuição de prioridades pode ter efeitos negativos desproporcionados nas prioridades da carga de trabalho e na experiência do utilizador.
Definições
Termo | Definição |
---|---|
Fluxo | Numa carga de trabalho, a sequência de ações que executa uma função específica. Um fluxo envolve o movimento de dados e a execução de processos entre componentes da carga de trabalho. |
Processamento de filas de prioridades | O ato de processar tarefas de alta prioridade antes de tarefas de baixa prioridade. |
Rate limiting (Limitação de taxa) | O ato de limitar o número de pedidos que podem aceder a um recurso. |
Fluxo do sistema | O fluxo de informações e processos num sistema. O sistema segue automaticamente este fluxo para ativar os fluxos de utilizador ou a funcionalidade da carga de trabalho. |
Fluxo de utilizador | A sequência que um utilizador segue para realizar uma tarefa. |
Principais estratégias de design
Os fluxos críticos referem-se aos principais fluxos de utilizador para clientes ou ao sistema e aos fluxos de dados para operações cruciais para a funcionalidade da carga de trabalho. Estes fluxos podem incluir ações como registos de utilizadores, inícios de sessão, compras de produtos, acesso a páginas atrás de um paywall ou qualquer outro caminho ou processo chave na sua carga de trabalho.
Os fluxos críticos afetam significativamente a experiência do utilizador ou as operações empresariais. Os fluxos críticos têm destinos de desempenho e contratos de nível de serviço mais elevados do que os fluxos não críticos. Quando os recursos são limitados, os fluxos não críticos devem gerar a utilização de recursos em fluxos críticos. Tem de identificar, monitorizar e priorizar todos os fluxos antes de isolar e otimizar fluxos críticos.
Identificar todos os fluxos
O primeiro passo para atribuir prioridades ao desempenho de fluxos críticos é identificar todos os fluxos na carga de trabalho. A identificação de fluxos envolve mapear e compreender sistematicamente todos os caminhos de utilizador e comunicação de componentes. O foco está na compreensão das métricas de desempenho e do potencial impacto dos fluxos no desempenho da carga de trabalho.
Ao dissecar a carga de trabalho em fluxos discretos, pode encontrar estrangulamentos de desempenho, utilização ineficiente de recursos e oportunidades de otimização do desempenho. Este conhecimento expõe áreas de melhoria necessária e é o primeiro passo para identificar fluxos críticos. Para obter mais informações, veja Identificar e classificar fluxos de utilizador e sistema.
Monitorizar métricas de desempenho do fluxo
Depois de identificar todos os fluxos na carga de trabalho, tem de recolher métricas de desempenho em cada fluxo e monitorizar essas métricas. As métricas de fluxo fornecem informações sobre tempos de resposta, taxas de erro e débito. O objetivo é observar e registar consistentemente métricas relacionadas com o desempenho para otimizar ainda mais a sua compreensão do impacto de cada fluxo no desempenho da carga de trabalho. Para monitorizar as métricas de fluxo, pode utilizar as seguintes ferramentas para recolher dados:
Ferramentas de análise e controlo: estas ferramentas fornecem informações sobre o comportamento e as interações dos utilizadores na sua aplicação. Ao analisar os dados do utilizador, pode identificar os fluxos, estrangulamentos ou potenciais problemas mais comuns.
Ferramentas de monitorização do desempenho de aplicações (APM): utilize as ferramentas do APM para monitorizar o desempenho da sua aplicação e controlar a forma como os fluxos são executados. Estas ferramentas fornecem visibilidade sobre os tempos de resposta, erros e outras métricas de desempenho, permitindo-lhe identificar fluxos críticos e otimizar o desempenho.
Ferramentas de registo e depuração: utilize estas ferramentas para capturar e analisar registos e depurar informações enquanto a sua aplicação é executada. Reveja os registos e as informações de depuração para rastrear a forma como os fluxos estão a ser executados e identificar problemas ou erros.
Identificar fluxos críticos
Com os dados de desempenho disponíveis, pode começar a classificar todos os fluxos e a identificar os fluxos críticos. A identificação de fluxos críticos envolve avaliar o impacto e a importância do desempenho de cada fluxo. A atribuição de prioridades de fluxo eficaz garante que os fluxos mais importantes recebem os recursos necessários antes de fluxos menos críticos. Para atribuir prioridades aos fluxos na sua aplicação, considere estes passos:
Identificar o impacto empresarial: comece por avaliar a importância de cada fluxo nas suas operações. Concentre-se na forma como cada fluxo se alinha com os seus objetivos empresariais, o impacto nos utilizadores e os potenciais efeitos negativos do mau desempenho. Por exemplo, embora um escalão de serviço gratuito possa atrair mais utilizadores, um escalão pago pode ser mais vital para os seus objetivos empresariais.
Além disso, considere os impactos de desempenho de um fluxo num ou mais processos empresariais. Vários fluxos podem suportar um único processo de negócio, mas, muitas vezes, um fluxo tem um efeito significativo no desempenho desse processo. Quer identificar os fluxos que mais afetam o desempenho. Por outro lado, um único fluxo pode estar na base de vários processos. Nestes casos, o desempenho deste 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 informações sobre a eficiência e importância do fluxo. Por exemplo, os fluxos de sistema com uma utilização significativa são provavelmente fluxos importantes.
Atribuir classificação de criticidade: com base nos indicadores de impacto e desempenho da empresa, deve priorizar os fluxos. Utilize classificações de criticidade de Alto, Médio e Baixo. Os fluxos com um impacto comercial significativo ou uma procura de elevado desempenho devem receber uma classificação de crítica "Elevada". Estes fluxos são os seus fluxos críticos. Concentre-se em fluxos com tráfego de utilizador elevado ou tenha um efeito direto na geração de receitas. A tabela seguinte fornece características de fluxos críticos (Altos) e não críticos (Médio a Baixo).
Fluxos críticos | Fluxos não críticos |
---|---|
Utilização elevada | Baixa utilização |
Crítico para a empresa | Não crítico para a empresa |
Operações dispendiosas | Pequenas operações |
Sensível ao tempo | Não sensível ao tempo |
Produção | Pré-produção |
Processamento em tempo real | Processamento em lotes |
Sensível à latência | Não sensível à latência |
Utilizador pagador | Utilizador que não está a pagar |
Escalão Premium | Escalão básico |
Tarefas importantes | Tarefas não essenciais |
Contas de receita elevada | Contas de baixo rendimento |
Isolar fluxos críticos
O processo de isolamento de fluxos críticos tem a ver com o fornecimento de recursos ou capacidade dedicados para suportar fluxos críticos. Quer alocar recursos e atenção aos fluxos que são essenciais para uma experiência de utilizador ideal ou resultados de negócio significativos. O objetivo é garantir que os fluxos críticos recebem poder de computação suficiente, largura de banda de rede e recursos para funcionar de forma eficiente e eficaz. Ao isolar fluxos críticos, pode gerir mais facilmente os recursos que suportam fluxos críticos. Seguem-se recomendações para isolar fluxos críticos:
Segmentação de recursos: crie recursos separados para fluxos críticos, permitindo-lhes operar de forma independente sem interferências de outros processos. Por exemplo, pode isolar fluxos críticos em segmentos de rede dedicados ou através de servidores dedicados para lidar com as necessidades de processamento destes fluxos. Esta abordagem ajuda a minimizar a forma como os fluxos não críticos podem afetar negativamente os fluxos críticos.
Segmentação lógica: utilize ferramentas de virtualização e contentorização, como o Docker ou o Kubernetes, para isolar fluxos ao nível do software. Pode separar fluxos críticos em máquinas virtuais (VMs). Ao fazê-lo, cria um ambiente isolado, reduzindo dependências e potenciais 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 do disco. Esta alocação garante que os fluxos críticos têm sempre recursos suficientes para funcionar de forma eficiente. Defina quotas ou limites de recursos com plataformas de orquestração. Ao alocar explicitamente recursos a fluxos críticos, impede a contenção de recursos e prioriza a forma como são executados.
Desvantagem: a segmentação de recursos afeta os custos. Quando dedica recursos a um fluxo, muitas vezes aumenta o custo e deixa alguns recursos subutilizados. Para justificar os melhoramentos de desempenho para fluxos críticos, o aumento do impacto comercial tem de superar o aumento dos custos.
Otimizar a alocação de capacidade
Quando não consegue isolar fluxos críticos, a melhor opção seguinte é atribuir prioridades a fluxos críticos no acesso à capacidade disponível. A otimização da alocação de capacidade tem a ver com a distribuição estratégica da capacidade disponível para diferentes fluxos com base na sua importância. 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) recebem a capacidade necessária para funcionar eficazmente. Para decidir como alocar capacidade, considere estas estratégias:
Avaliar a capacidade dos recursos: avalie a quantidade de capacidade de recursos que pode ser alocada aos fluxos. A capacidade pode incluir recursos como CPU, memória, armazenamento e largura de banda de rede. Compreenda as limitações e restrições da sua infraestrutura ou ambiente.
Analisar requisitos de fluxo: analise os requisitos de recursos de cada fluxo. Compreenda os recursos de que o fluxo precisa para funcionar de forma eficiente. Para cada fluxo, identifique as exigências de recursos, como a utilização da CPU, os requisitos de memória e a largura de banda de rede.
Atribuir prioridades a alocações: corresponda a capacidade de recursos disponível aos requisitos de recursos dos fluxos. Aloque recursos com base em prioridades de fluxo, garantindo que os fluxos de prioridade mais alta recebem os recursos necessários para satisfazer os seus requisitos. Compreenda onde estão as restrições mais apertadas e otimize as alocações de capacidade onde são necessárias. Por exemplo, as filas só podem processar algumas mensagens por minuto, mas alguns limites de armazenamento são difíceis de alcançar.
Utilizar a limitação de taxa: para garantir que os fluxos críticos podem consumir os recursos de que precisam para cumprir os respetivos objetivos de desempenho, aplique limites de taxa a fluxos e tarefas não críticos. Os limites de taxa limitam o número de pedidos de menor prioridade e os utilizadores podem fazer a recursos restritos. Por exemplo, pode limitar os pedidos de nãoprioridade a uma API. Para obter mais informações, veja o padrão de Limitação de Taxa e a Limitação de taxa de um processador HTTP no .NET.
Utilizar o processamento de filas de prioridade: o processamento de filas de prioridade dá alta prioridade a determinados pedidos. Normalmente, as filas têm uma estrutura FIFO (first in, first out), mas pode atualizar a sua aplicação para atribuir uma prioridade às mensagens que adiciona à fila. Utilize esta capacidade para atribuir prioridades a fluxos e utilizadores críticos. Para obter mais informações, veja o padrão Fila de Prioridade.
Risco: pode ser um desafio equilibrar as necessidades dos fluxos críticos com o desempenho global de uma carga de trabalho. Embora deva atribuir prioridades a fluxos críticos, não deve negligenciar fluxos não críticos. A eficiência de desempenho geral de uma carga de trabalho depende de todos os fluxos. Fluxos não críticos negligenciados podem criar problemas que afetam todos os utilizadores. Demasiado ruído de itens não essenciais rouba a atenção de itens críticos. Mas muito pouco ruído pode prejudicar toda a carga de trabalho. A quantidade de dados e o número de alertas devem refletir estas prioridades equilibradas.
Facilitação do Azure
Identificar e monitorizar fluxos: o Azure fornece diferentes soluções para o ajudar a monitorizar o desempenho dos fluxos críticos na sua carga de trabalho. O Azure Monitor, os Registos do Azure Monitor e o Aplicação Azure Insights são alguns dos serviços que oferecem capacidades de monitorização abrangentes para vários tipos de aplicações e cargas de trabalho.
Otimizar alocações de capacidade: alguns serviços do Azure suportam a segmentação de recursos, a segmentação lógica e as técnicas de alocação de capacidade para alocar capacidade e recursos a fluxos críticos. Pode isolar fluxos críticos através de técnicas como criar recursos separados, aumentar a densidade, utilizar a virtualização e a contentorização e alocar explicitamente recursos a fluxos críticos.
Alguns serviços do Azure, como o Azure Gestão de API, fornecem políticas incorporadas para limitar a taxa. O Azure fornece orientações detalhadas e uma implementação de exemplo do padrão de conceção limitação de taxa.
O Azure suporta o processamento prioritário de filas. Funções do Azure fornece funções condicionadas por eventos que pode acionar de várias formas, incluindo por uma nova mensagem numa fila ou tópico. Combine Funções do Azure com o Armazenamento de Filas do Azure ou Azure Service Bus para processar mensagens com base na sua prioridade.
Ligações relacionadas
- Padrão de Fila de Prioridade
- Padrão de Limitação de Taxa
- Taxa que limita um processador HTTP no .NET
- Gestão de API do Azure
- Azure Service Bus
Lista de verificação de Eficiência de Desempenho
Veja o conjunto completo de recomendações.