Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao projetar arquiteturas de carga de trabalho, você deve usar padrões do setor que resolvam desafios comuns. Os padrões podem ajudá-lo a fazer compensações intencionais dentro de cargas de trabalho e otimizar para o resultado desejado. Eles também podem ajudar a reduzir os riscos provenientes de problemas específicos, o que pode afetar a confiabilidade, a segurança, o custo e as operações. Se não for atenuado, os riscos eventualmente levarão a ineficiências de desempenho. Esses padrões são apoiados pela experiência do mundo real, são projetados para modelos operacionais e de escala de nuvem e são inerentemente independentes do fornecedor. Usar padrões conhecidos como uma forma de padronizar seu design de carga de trabalho é um componente de excelência operacional.
Muitos padrões de design dão suporte diretamente a um ou mais pilares de arquitetura. Padrões de design que dão suporte ao pilar de Eficiência de Desempenho abordam a escalabilidade, o ajuste de desempenho, a priorização da tarefa e a remoção de gargalos.
A tabela a seguir resume os padrões de design de arquitetura que dão suporte às metas de eficiência de desempenho.
| Padrão | Resumo |
|---|---|
| Solicitação-resposta assíncrona | Melhora a capacidade de resposta e a escalabilidade dos sistemas desassociando as fases de solicitação e resposta de interações para processos que não precisam de respostas imediatas. Usando um padrão assíncrono, você pode maximizar a simultaneidade no lado do servidor. Você pode usar esse padrão para agendar o trabalho a ser concluído conforme a capacidade permite. |
| Back-ends para Front-ends | Individualiza a camada de serviço de uma carga de trabalho criando serviços separados que são exclusivos para uma interface de front-end específica. Essa separação permite otimizar de maneiras que podem não ser possíveis com uma camada de serviço compartilhado. Ao lidar com clientes individuais de forma diferente, você pode otimizar o desempenho para as restrições e funcionalidades de um cliente específico. |
| Antepara | Introduz a segmentação entre componentes para isolar o raio de explosão de defeitos. Esse design permite que cada bulkhead seja dimensionável individualmente para atender às necessidades da tarefa encapsulada no bulkhead. |
| Cache à parte | Otimiza o acesso a dados de leitura frequente introduzindo um cache preenchido sob demanda. Em seguida, o cache é usado em solicitações subsequentes para os mesmos dados. Esse padrão é especialmente útil com dados de leitura pesada que não mudam com frequência e podem tolerar uma certa quantidade de desatualização. A meta dessa implementação é fornecer melhor desempenho no sistema em geral descarregando esse tipo de dados em um cache em vez de sourcing-lo de seu armazenamento de dados. |
| Coreografia | Coordena o comportamento de componentes distribuídos autônomos em uma carga de trabalho usando comunicação descentralizada e controlada por eventos. Esse padrão pode fornecer uma alternativa quando ocorrem gargalos de desempenho em uma topologia de orquestração centralizada. |
| Disjuntor | Impede solicitações contínuas para uma dependência indisponível ou com defeito. Uma abordagem de repetição de erro pode levar à utilização excessiva de recursos durante a recuperação de dependência e também pode sobrecarregar o desempenho em uma dependência que está tentando a recuperação. |
| Verificação de declaração | Separa os dados do fluxo de mensagens, fornecendo uma maneira de recuperar separadamente os dados relacionados a uma mensagem. Esse padrão melhora a eficiência e o desempenho de editores de mensagens, assinantes e o próprio barramento de mensagens quando o sistema lida com cargas de dados grandes. Ele funciona diminuindo o tamanho das mensagens e garantindo que os consumidores recuperem dados de conteúdo somente se necessário e em um momento oportuno. |
| Consumidores concorrentes | Aplica o processamento distribuído e simultâneo para lidar com itens com eficiência em uma fila. Esse modelo dá suporte à distribuição de carga em todos os nós do consumidor e ao dimensionamento dinâmico com base na profundidade da fila. |
| Consolidação de Recursos de Computação | Otimiza e consolida os recursos de computação aumentando a densidade. Esse padrão combina vários aplicativos ou componentes de uma carga de trabalho em uma infraestrutura compartilhada. Essa consolidação maximiza a utilização de recursos de computação usando a capacidade de nó sobressalente para reduzir o excesso de provisionamento. Os orquestradores de contêineres são um exemplo comum. Instâncias de computação grandes (verticalmente dimensionadas) geralmente são usadas no pool de recursos para essas infraestruturas. |
| CQRS (Segregação de Responsabilidade de Comando e Consulta) | Separa as operações de leitura e gravação do modelo de dados de um aplicativo. Essa separação permite otimizações de desempenho e dimensionamento direcionadas para a finalidade específica de cada operação. Esse design é mais útil em aplicativos que têm uma alta taxa de leitura para gravação. |
| Carimbos de implantação | Fornece uma abordagem para liberar uma versão específica de um aplicativo e sua infraestrutura como uma unidade de implantação controlada, com base no pressuposto de que as mesmas ou diferentes versões serão implantadas simultaneamente. Esse padrão geralmente se alinha às unidades de escala definidas em sua carga de trabalho: à medida que uma capacidade adicional é necessária além do que uma única unidade de escala fornece, um carimbo de implantação adicional é implantado para escalar horizontalmente. |
| Fornecimento de eventos | Trata a alteração de estado como uma série de eventos, capturando-os em um log imutável somente acréscimo. Dependendo da carga de trabalho, esse padrão, geralmente combinado com CQRS, um design de domínio apropriado e instantâneo estratégico, pode melhorar o desempenho. As melhorias de desempenho ocorrem devido às operações somente acréscimo atômicas e à prevenção do bloqueio de banco de dados para gravações e leituras. |
| Identidade federada | Os delegados confiam em um provedor de identidade externo à carga de trabalho para gerenciar usuários e fornecer autenticação para seu aplicativo. Ao descarregar o gerenciamento e a autenticação do usuário, você pode dedicar recursos de aplicativo a outras prioridades. |
| Gatekeeper | Descarrega o processamento de solicitação especificamente para a imposição de controle de segurança e acesso antes e depois de encaminhar a solicitação para um nó de back-end. Esse padrão geralmente é usado para implementar a limitação em um nível de gateway em vez de implementar verificações de taxa no nível do nó. A coordenação do estado de taxa entre todos os nós não tem um desempenho inerente. |
| Agregação de gateway | Simplifica as interações do cliente com sua carga de trabalho agregando chamadas para vários serviços de back-end em uma única solicitação. Esse design pode incorrer em menos latência do que um design no qual o cliente estabelece várias conexões. O cache também é comum em implementações de agregação porque minimiza chamadas para sistemas de back-end. |
| Descarregamento de gateway | Descarrega o processamento de solicitação para um dispositivo de gateway antes e depois de encaminhar a solicitação para um nó de back-end. Adicionar um gateway de descarregamento ao processo de solicitação permite que você use menos recursos por nó porque a funcionalidade é centralizada no gateway. Você pode otimizar a implementação da funcionalidade descarregada independentemente do código do aplicativo. É provável que a funcionalidade fornecida pela plataforma descarregada já tenha um alto desempenho. |
| Roteamento de gateway | Roteia solicitações de rede de entrada para vários sistemas de back-end com base em intenções de solicitação, lógica de negócios e disponibilidade de back-end. O roteamento de gateway permite que você distribua o tráfego entre nós em seu sistema para equilibrar a carga. |
| Geode | Implanta sistemas que operam em modos de disponibilidade ativo-ativos em várias geografias. Esse padrão usa a replicação de dados para dar suporte ao ideal de que qualquer cliente possa se conectar a qualquer instância geográfica. Você pode usá-lo para atender seu aplicativo de uma região mais próxima da sua base de usuários distribuída. Isso reduz a latência eliminando o tráfego de longa distância e porque você compartilha a infraestrutura somente entre os usuários que estão usando o mesmo geodo no momento. |
| Monitoramento de ponto de extremidade de integridade | Fornece uma maneira de monitorar a integridade ou o status de um sistema expondo um ponto de extremidade projetado especificamente para essa finalidade. Você pode usar esses pontos de extremidade para melhorar o balanceamento de carga roteando o tráfego apenas para nós que são verificados como íntegros. Com a configuração adicional, você também pode obter métricas sobre a capacidade do nó disponível. |
| Tabela de índice | Otimiza a recuperação de dados em armazenamentos de dados distribuídos, permitindo que os clientes procurem metadados para que os dados possam ser recuperados diretamente, evitando a necessidade de fazer verificações completas do armazenamento de dados. Os clientes são apontados para seu fragmento, partição ou ponto de extremidade, que pode habilitar o particionamento de dados dinâmicos para otimização de desempenho. |
| Exibição materializada | Usa exibições pré-computadas de dados para otimizar a recuperação de dados. As exibições materializadas armazenam os resultados de cálculos ou consultas complexas sem exigir que o mecanismo de banco de dados ou o cliente recompute para cada solicitação. Esse design reduz o consumo geral de recursos. |
| Fila de prioridade | Garante que os itens de prioridade mais alta sejam processados e concluídos antes dos itens de prioridade mais baixa. A separação de itens com base na prioridade de negócios permite que você concentre os esforços de desempenho no trabalho mais sensível ao tempo. |
| Publicador/Assinante | Desacoplar componentes de uma arquitetura substituindo a comunicação direta cliente a serviço ou cliente para serviços por comunicação por meio de um agente de mensagens intermediário ou barramento de eventos. A desacoplamento de editores de consumidores permite otimizar a computação e o código especificamente para a tarefa que o consumidor precisa executar para a mensagem específica. |
| Nivelamento de cargaQueue-Based | Controla o nível de solicitações ou tarefas de entrada armazenando-as em buffer em uma fila e permitindo que o processador de fila as manipule em um ritmo controlado. Essa abordagem permite o design intencional no desempenho da taxa de transferência porque a ingestão de solicitações não precisa se correlacionar à taxa na qual elas são processadas. |
| Supervisor do Agente do Agendador | Distribui e redistribui tarefas com eficiência em um sistema com base em fatores que são observáveis no sistema. Esse padrão usa métricas de desempenho e capacidade para detectar a utilização atual e rotear tarefas para um agente com capacidade. Você também pode usá-lo para priorizar a execução do trabalho de prioridade mais alta em vez do trabalho de prioridade mais baixa. |
| Fragmentação | Direciona a carga para um destino lógico específico para lidar com uma solicitação específica, permitindo a colocação para otimização. Quando você usa a fragmentação em sua estratégia de dimensionamento, os dados ou o processamento são isolados em um fragmento, portanto, ele compete por recursos apenas com outras solicitações que são direcionadas para esse fragmento. Você também pode usar a fragmentação para otimizar com base na geografia. |
| Sidecar | Estende a funcionalidade de um aplicativo encapsulando tarefas não primárias ou de corte cruzado em um processo complementar que existe junto com o aplicativo principal. Você pode mover tarefas de corte cruzado para um único processo que pode ser dimensionado em várias instâncias do processo principal, o que reduz a necessidade de implantar a funcionalidade duplicada para cada instância do aplicativo. |
| Hospedagem de Conteúdo Estático | Otimiza a entrega de conteúdo estático para clientes de carga de trabalho usando uma plataforma de hospedagem projetada para essa finalidade. Descarregar a responsabilidade para um host externalizado ajuda a mitigar o congestionamento e permite que você use sua plataforma de aplicativos apenas para fornecer lógica de negócios. |
| Limitação | Impõe limites à taxa ou à taxa de transferência de solicitações de entrada a um recurso ou componente. Quando o sistema está sob alta demanda, esse padrão ajuda a reduzir o congestionamento que pode levar a gargalos de desempenho. Você também pode usá-lo para evitar proativamente cenários de vizinhos barulhentos. |
| Chave de manobrista | Concede acesso restrito à segurança a um recurso sem usar um recurso intermediário para fazer proxy do acesso. Isso descarrega o processamento como uma relação exclusiva entre o cliente e o recurso sem exigir um componente de embaixador que precise lidar com todas as solicitações do cliente de maneira performante. O benefício de usar esse padrão é mais significativo quando o proxy não adiciona valor à transação. |
Próximas etapas
Examine os padrões de design de arquitetura que dão suporte aos outros pilares do Azure Well-Architected Framework: