Padrões de conceção da cloud que suportam a eficiência de desempenho

Ao conceber arquiteturas de cargas de trabalho, deve utilizar padrões da indústria que abordam desafios comuns. Os padrões podem ajudá-lo a fazer trocas intencionais dentro das cargas de trabalho e a otimizar o resultado pretendido. Também podem ajudar a mitigar os riscos provenientes de problemas específicos, que podem afetar a fiabilidade, a segurança, os custos e as operações. Se não forem mitigados, os riscos acabarão por levar a ineficiências de desempenho. Estes padrões são suportados pela experiência do mundo real, foram concebidos para modelos de dimensionamento e operação na cloud e são inerentemente agnósticos para fornecedores. Utilizar padrões bem conhecidos como forma de uniformizar a estrutura da carga de trabalho é um componente de excelência operacional.

Muitos padrões de estrutura suportam diretamente um ou mais pilares de arquitetura. Os padrões de estrutura que suportam o pilar Eficiência de Desempenho abordam a escalabilidade, a otimização do desempenho, a atribuição de prioridades de tarefas e a remoção de estrangulamentos.

Padrões de conceção para eficiência de desempenho

A tabela seguinte resume os padrões de conceção da cloud que suportam os objetivos de eficiência de desempenho.

Padrão Resumo
Pedido-resposta assíncrono Melhora a capacidade de resposta e escalabilidade dos sistemas ao desassociar as fases de pedido e resposta das interações para processos que não precisam de respostas imediatas. Ao utilizar um padrão assíncrono, pode maximizar a simultaneidade do lado do servidor. Pode utilizar este padrão para agendar trabalhos para serem concluídos conforme a capacidade permitir.
Back-ends para Front-ends Individualiza a camada de serviço de uma carga de trabalho ao criar serviços separados que são exclusivos de uma interface de front-end específica. Esta separação permite-lhe otimizar de formas que podem não ser possíveis com uma camada de serviço partilhada. Quando lida com clientes individuais de forma diferente, pode otimizar o desempenho para as restrições e funcionalidades de um cliente específico.
Bulkhead Introduz a segmentação entre componentes para isolar o raio de explosão de avarias. Esta estrutura permite que cada antepara seja individualmente dimensionável para satisfazer as necessidades da tarefa encapsulada na antepara.
Cache-Aside Otimiza o acesso a dados de leitura frequente, introduzindo uma cache preenchida a pedido. Em seguida, a cache é utilizada em pedidos subsequentes para os mesmos dados. Este padrão é especialmente útil com dados pesados de leitura que não mudam frequentemente e podem tolerar uma determinada quantidade de estagnação. O objetivo desta implementação é proporcionar um melhor desempenho no sistema em geral ao descarregar este tipo de dados para uma cache em vez de o obter a partir do respetivo arquivo de dados.
Coreografia Coordena o comportamento dos componentes distribuídos autónomos numa carga de trabalho através da comunicação descentralizada condicionada por eventos. Este padrão pode fornecer uma alternativa quando ocorrem estrangulamentos de desempenho numa topologia de orquestração centralizada.
Disjuntor Automático Impede pedidos contínuos para uma dependência incorreta ou indisponível. Uma abordagem de repetição no erro pode levar a uma utilização excessiva de recursos durante a recuperação de dependências e também pode sobrecarregar o desempenho numa dependência que está a tentar recuperar.
Verificação de Afirmações Separa os dados do fluxo de mensagens, fornecendo uma forma de obter separadamente os dados relacionados com uma mensagem. Este padrão melhora a eficiência e o desempenho dos editores de mensagens, subscritores e do próprio barramento de mensagens quando o sistema lida com grandes payloads de dados. Funciona diminuindo o tamanho das mensagens e garantindo que os consumidores só obtêm dados de payload se necessário e num momento oportuno.
Consumidores Concorrentes Aplica o processamento distribuído e simultâneo para processar itens de forma eficiente numa fila. Este modelo suporta a distribuição de carga em todos os nós de consumidor e o dimensionamento dinâmico que se baseia na profundidade da fila.
Consolidação de Recursos de Computação Otimiza e consolida recursos de computação ao aumentar a densidade. Este padrão combina várias aplicações ou componentes de uma carga de trabalho numa infraestrutura partilhada. Esta consolidação maximiza a utilização de recursos de computação através da capacidade de nó sobressalente para reduzir o sobreaprovisionamento. Os orquestradores de contentores são um exemplo comum. As instâncias de computação grandes (verticalmente dimensionadas) são frequentemente utilizadas no agrupamento de recursos para estas infraestruturas.
Comando e segregação de responsabilidade de consulta (CQRS) Separa as operações de leitura e escrita do modelo de dados de uma aplicação. Esta separação permite otimizações de desempenho e dimensionamento direcionadas para o objetivo específico de cada operação. Esta estrutura é mais útil em aplicações que têm uma elevada proporção de leitura para escrita.
Carimbos de Implementação Fornece uma abordagem para lançar uma versão específica de uma aplicação e a respetiva infraestrutura como uma unidade de implementação controlada, com base no pressuposto de que as mesmas versões ou versões diferentes serão implementadas em simultâneo. Este padrão alinha-se frequentemente com as unidades de escala definidas na carga de trabalho: uma vez que é necessária capacidade adicional para além do que uma unidade de escala única fornece, é implementado um carimbo de implementação adicional para aumentar horizontalmente.
Origem do Evento Trata a alteração de estado como uma série de eventos, capturando-os num registo imutável e só de acréscimo. Consoante a carga de trabalho, este padrão, normalmente combinado com CQRS, uma estrutura de domínio adequada e instantâneos estratégicos, pode melhorar o desempenho. As melhorias de desempenho devem-se às operações apenas de acréscimo atómico e à prevenção do bloqueio da base de dados para escritas e leituras.
Identidade Federada Os delegados confiam num fornecedor de identidade externo à carga de trabalho para gerir utilizadores e fornecer autenticação para a sua aplicação. Quando descarrega a gestão e autenticação de utilizadores, pode dedicar recursos da aplicação a outras prioridades.
Controlador de chamadas Descarrega o processamento de pedidos especificamente para a imposição de controlo de segurança e acesso antes e depois de reencaminhar o pedido para um nó de back-end. Este padrão é frequentemente utilizado para implementar a limitação ao nível do gateway em vez de implementar verificações de taxa ao nível do nó. A coordenação do estado de taxa entre todos os nós não é inerentemente eficaz.
Agregação de Gateway Simplifica as interações de cliente com a carga de trabalho ao agregar chamadas para vários serviços de back-end num único pedido. Esta estrutura pode incorrer em menos latência do que uma estrutura na qual o cliente estabelece várias ligações. A colocação em cache também é comum em implementações de agregação porque minimiza as chamadas para sistemas de back-end.
Descarregamento de Gateway Descarrega o processamento de pedidos para um dispositivo de gateway antes e depois de reencaminhar o pedido para um nó de back-end. Adicionar um gateway de descarga ao processo de pedido permite-lhe utilizar menos recursos por nó porque a funcionalidade é centralizada no gateway. Pode otimizar a implementação da funcionalidade descarregada independentemente do código da aplicação. É provável que a funcionalidade fornecida pela plataforma descarregada seja altamente eficaz.
Encaminhamento de Gateway Encaminha pedidos de rede recebidos para vários sistemas de back-end com base em intenções de pedido, lógica de negócio e disponibilidade de back-end. O encaminhamento do gateway permite-lhe distribuir o tráfego entre nós no seu sistema para equilibrar a carga.
Geode Implementa sistemas que operam em modos de disponibilidade ativos-ativos em várias geografias. Este padrão utiliza a replicação de dados para suportar o ideal de que qualquer cliente possa ligar a qualquer instância geográfica. Pode utilizá-la para servir a sua aplicação a partir de uma região mais próxima da sua base de utilizadores distribuída. Ao fazê-lo, reduz a latência ao eliminar o tráfego de longa distância e porque partilha a infraestrutura apenas entre os utilizadores que estão atualmente a utilizar o mesmo geode.
Monitorização do Ponto Final do Estado de Funcionamento Fornece uma forma de monitorizar o estado de funcionamento ou o estado de um sistema ao expor um ponto final especificamente concebido para esse fim. Pode utilizar estes pontos finais para melhorar o balanceamento de carga ao encaminhar o tráfego para apenas nós verificados como estando em bom estado de funcionamento. Com a configuração adicional, também pode obter métricas sobre a capacidade do nó disponível.
Tabela de Índice Otimiza a obtenção de dados em arquivos de dados distribuídos ao permitir que os clientes procurem metadados para que os dados possam ser obtidos diretamente, evitando a necessidade de fazer análises completas do arquivo de dados. Os clientes são apontados para a partição horizontal, partição ou ponto final, o que pode permitir a criação de partições de dados dinâmicas para otimização do desempenho.
Vista Materializada Utiliza vistas pré-conformes de dados para otimizar a obtenção de dados. As vistas materializadas armazenam os resultados de computações ou consultas complexas sem exigir que o motor de base de dados ou o cliente se recomputem para cada pedido. Esta estrutura reduz o consumo geral de recursos.
Fila de Prioridade Garante que os itens de prioridade superior são processados e concluídos antes de itens de prioridade inferior. Separar itens com base na prioridade empresarial permite-lhe concentrar os esforços de desempenho no trabalho mais sensível ao tempo.
Publicador/Editor Desassocia os componentes de uma arquitetura ao substituir a comunicação cliente a serviço direta ou cliente a serviço pela comunicação através de um mediador de mensagens intermédio ou de um barramento de eventos. A desacoplamento dos publicadores dos consumidores permite-lhe otimizar a computação e o código especificamente para a tarefa que o consumidor precisa de executar para a mensagem específica.
Redistribuição de Carga Baseada na Fila Controla o nível de pedidos ou tarefas recebidos ao colocá-los na memória intermédia numa fila e permitir que o processador da fila os processe a um ritmo controlado. Esta abordagem permite uma conceção intencional no desempenho do débito porque a entrada de pedidos não precisa de se correlacionar com a taxa em que são processados.
Supervisor de Agente do Scheduler Distribui e redistribui tarefas de forma eficiente num sistema com base em fatores que são observáveis no sistema. Este padrão utiliza métricas de desempenho e capacidade para detetar a utilização atual e encaminhar tarefas para um agente com capacidade. Também pode utilizá-lo para priorizar a execução de trabalhos de prioridade superior em vez de trabalhos de prioridade mais baixa.
Fragmentação Direciona a carga para um destino lógico específico para processar um pedido específico, ativando a colocalização para otimização. Quando utiliza a fragmentação na sua estratégia de dimensionamento, os dados ou o processamento são isolados para uma partição horizontal, pelo que compete pelos recursos apenas com outros pedidos direcionados para essa partição horizontal. Também pode utilizar a fragmentação para otimizar com base na geografia.
Sidecar Expande a funcionalidade de uma aplicação ao encapsular tarefas não primárias ou cruzadas num processo complementar que existe juntamente com a aplicação principal. Pode mover tarefas cruzadas para um único processo que pode ser dimensionado em várias instâncias do processo principal, o que reduz a necessidade de implementar funcionalidades duplicadas para cada instância da aplicação.
Alojamento de Conteúdo Estático Otimiza a entrega de conteúdos estáticos para clientes de carga de trabalho através de uma plataforma de alojamento concebida para esse fim. Descarregar a responsabilidade para um anfitrião externo ajuda a mitigar o congestionamento e permite-lhe utilizar a sua plataforma de aplicações apenas para fornecer lógica de negócio.
Limitação Impõe limites à taxa ou débito de pedidos recebidos a um recurso ou componente. Quando o sistema está sob elevada procura, este padrão ajuda a mitigar o congestionamento que pode provocar estrangulamentos de desempenho. Também pode utilizá-lo para evitar proativamente cenários de vizinhos ruidosos.
Chave Valet Concede acesso restrito à segurança a um recurso sem utilizar um recurso intermediário para utilizar o proxy do acesso. Ao fazê-lo, descarrega o processamento como uma relação exclusiva entre o cliente e o recurso sem que seja necessário um componente ambassador que precise de processar todos os pedidos de cliente de uma forma eficaz. A vantagem de utilizar este padrão é mais significativa quando o proxy não adiciona valor à transação.

Passos seguintes

Reveja os padrões de conceção da cloud que suportam os outros pilares do Azure Well-Architected Framework: