Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Ao projetar arquiteturas de carga de trabalho, você deve usar padrões do setor que abordam desafios comuns. Os padrões podem ajudá-lo a fazer compensações intencionais dentro das cargas de trabalho e otimizar para o resultado desejado. Eles também podem ajudar a mitigar riscos originados de problemas específicos, que podem afetar a segurança, o desempenho, o custo e as operações. Se não forem mitigados, esses riscos acabarão por causar problemas de fiabilidade. Esses padrões são apoiados pela experiência do mundo real, são projetados para escala de nuvem e modelos operacionais e são inerentemente agnósticos ao fornecedor. Usar padrões bem conhecidos como forma de padronizar o design da carga de trabalho é um componente da excelência operacional.
Muitos padrões de design suportam diretamente um ou mais pilares de arquitetura. Os padrões de projeto que suportam o pilar Confiabilidade priorizam a disponibilidade da carga de trabalho, a autopreservação, a recuperação, a integridade dos dados e do processamento e a contenção de avarias.
A tabela a seguir resume os padrões de projeto de arquitetura que suportam as metas de confiabilidade.
| Padrão | Resumo |
|---|---|
| Embaixador | Encapsula e gerencia comunicações de rede descarregando tarefas transversais relacionadas à comunicação de rede. Os serviços auxiliares resultantes iniciam a comunicação em nome do cliente. Este ponto de mediação oferece uma oportunidade para adicionar padrões de confiabilidade à comunicação de rede, como repetição ou buffering. |
| Backends para Frontends | Individualiza a camada de serviço de uma carga de trabalho criando serviços separados que são exclusivos para uma interface de frontend específica. Devido a essa separação, um mau funcionamento na camada de serviço que suporta um cliente pode não afetar a disponibilidade do acesso de outro cliente. Quando você trata vários clientes de forma diferente, pode priorizar os esforços de confiabilidade com base nos padrões de acesso esperados do cliente. |
| Anteparas | Introduz segmentação intencional e completa entre componentes para isolar o raio de jateamento de avarias. Essa estratégia de isolamento de falhas tenta limitar as avarias apenas ao compartimento que está enfrentando o problema, evitando impactos em outros compartimentos. |
| Cache-Aside | Otimiza o acesso a dados lidos com frequência introduzindo um cache que é preenchido sob demanda. O cache é então usado em solicitações subsequentes para os mesmos dados. O cache cria replicação de dados e, de maneiras limitadas, pode ser usado para preservar a disponibilidade de dados acessados com frequência se o armazenamento de dados de origem estiver temporariamente indisponível. Além disso, se houver um mau funcionamento no cache, a carga de trabalho pode voltar para o armazenamento de dados de origem. |
| Disjuntor | Impede solicitações contínuas para uma dependência com mau funcionamento ou indisponível. Ao fazer isso, esse padrão evita sobrecarregar uma dependência com falha. Você também pode usar este padrão para acionar a degradação controlada na carga de trabalho. Os disjuntores são frequentemente acoplados a sistemas de recuperação automática para garantir tanto autopreservação como autocura. |
| Verificação de sinistros | Separa os dados do fluxo de mensagens, fornecendo uma maneira de recuperar separadamente os dados relacionados a uma mensagem. Os barramentos de mensagens não oferecem a mesma fiabilidade e recuperação em caso de desastres geralmente presentes em armazenamentos de dados dedicados; por isso, separar os dados da mensagem pode trazer maior fiabilidade para os dados subjacentes. Essa separação também permite uma abordagem de recuperação da fila de mensagens após um desastre. |
| Operação de Compensação | Fornece um mecanismo para recuperar de falhas, revertendo os efeitos de ações aplicadas anteriormente. Esse padrão aborda falhas em caminhos críticos de carga de trabalho usando ações de compensação, que podem envolver processos como reverter diretamente as alterações de dados, quebrar bloqueios de transação ou até mesmo executar o comportamento nativo do sistema para reverter o efeito. |
| Consumidores concorrentes | Aplica processamento distribuído e simultâneo para lidar eficientemente com itens em uma fila. Esse modelo cria redundância no processamento de filas tratando os consumidores como réplicas, portanto, uma falha de instância não impede que outros consumidores processem mensagens da fila. |
| Configuração de Carga de Trabalho Edge | Gere a configuração para cargas de trabalho distribuídas na periferia, tratando a cloud como a fonte principal de confiança, enquanto garante que a configuração permaneça disponível localmente durante interrupções de conectividade. Este padrão melhora a fiabilidade ao suportar reconciliação de configurações, deteção de deriva e rollback para recuperar de atualizações parciais ou configurações inválidas. |
| Fornecimento de Eventos | Trata a mudança de estado como uma série de eventos, capturando-os em um registo imutável e somente de adição. Você pode usar esse padrão quando um histórico confiável de alterações é crucial em um processo de negócios complexo. Também facilita a reconstrução do Estado, caso seja necessário recuperar os armazéns do Estado. |
| Identidade federada | Delega confiança a um provedor de identidade externo à carga de trabalho para gerenciar usuários e fornecer autenticação para seu aplicativo. O descarregamento do gerenciamento e da autenticação de usuários transfere a confiabilidade desses componentes para o provedor de identidade, que geralmente tem um SLA alto. Além disso, durante a recuperação de desastres da carga de trabalho, os componentes de autenticação provavelmente não precisam ser abordados como parte do plano de recuperação da carga de trabalho. |
| Agregação de gateways | 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. Essa topologia permite que você mude o tratamento de falhas transitórias de uma implementação distribuída entre clientes para uma implementação centralizada. |
| Descarregamento do Gateway | Transfere o processamento de solicitações para um dispositivo de gateway, antes de e após encaminhar a solicitação para um nó de backend. Transferir essa responsabilidade para um gateway reduz a complexidade do código do aplicativo nos nós de back-end. Em alguns casos, a transferência de tarefas substitui completamente a funcionalidade por uma funcionalidade confiável fornecida pela plataforma. |
| Roteamento de gateway | Encaminha solicitações de rede de entrada para vários sistemas de back-end com base nas intenções de solicitação, lógica de negócios e disponibilidade de back-end. O roteamento de gateway permite rotear o tráfego apenas para nós íntegros em seu sistema. |
| Geode | Implanta sistemas que operam em modos de disponibilidade ativo-ativo em várias geografias. Esse padrão usa a replicação de dados para oferecer suporte ao ideal de que qualquer cliente possa se conectar a qualquer instância geográfica. Ele pode ajudar sua carga de trabalho a suportar uma ou mais interrupções regionais. |
| Monitoramento de pontos finais de integridade | Fornece uma maneira de monitorizar a saúde ou o status de um sistema expondo um endpoint projetado especificamente para essa finalidade. Pode utilizar este endpoint para gerir a integridade da sua carga de trabalho, bem como para alertas e dashboards. Você também pode usá-lo como um sinal para a remediação autônoma de problemas. |
| Tabela de índice | Otimiza a recuperação de dados em armazenamentos de dados distribuídos, permitindo que os clientes pesquisem metadados para que os dados possam ser recuperados diretamente, evitando a necessidade de fazer verificações completas de armazenamento de dados. Como os clientes são apontados para seu fragmento, partição ou ponto de extremidade por meio de um processo de pesquisa, você pode usar esse padrão para facilitar uma abordagem de failover para acesso a dados. |
| Eleição de Líderes | Estabelece um líder de instâncias de um aplicativo distribuído. O líder coordena as responsabilidades que estão relacionadas com o cumprimento de um objetivo. Esse padrão atenua o efeito de mau funcionamento do nó redirecionando o trabalho de forma confiável. O sistema também implementa failover por meio de algoritmos de consenso quando um líder falha. |
| Tubos e Filtros | Divide o processamento de dados complexos em uma série de etapas independentes para alcançar um resultado específico. A responsabilidade única de cada etapa permite uma atenção focada e evita a distração do processamento de dados combinados. |
| Fila de prioridade | Garante que os itens de prioridade mais alta sejam processados e concluídos antes dos itens de prioridade mais baixa. Separar os itens com base na prioridade de negócios permite que você concentre os esforços de confiabilidade no trabalho mais crítico. |
| Publicador/Inscritor | Desacopla componentes de uma arquitetura substituindo a comunicação direta cliente-a-serviço ou cliente-a-serviços pela comunicação através de um broker de mensagens intermediário ou de um barramento de eventos. |
| Nivelamento de carga baseado em fila | Controla o nível de solicitações ou tarefas de entrada armazenando-as em buffer em uma fila e permitindo que o processador de filas as manipule em um ritmo controlado. Essa abordagem pode fornecer resiliência contra picos repentinos de demanda, dissociando a chegada de tarefas de seu processamento. Ele também pode isolar falhas no processamento de filas para que elas não afetem a entrada. |
| Limitação de Taxa | Controla a taxa de solicitações do cliente para reduzir erros de limitação e evitar cenários ilimitados de repetição em erro. Esta tática protege o cliente, reconhecendo as limitações e os custos da comunicação com um serviço quando o serviço é projetado para evitar atingir limites especificados. Ele funciona controlando o número e/ou tamanho das operações que são enviadas para o serviço durante um período de tempo específico. |
| Repetir | Resolve falhas que podem ser transitórias ou intermitentes repetindo determinadas operações, de forma controlada. Mitigar falhas transitórias em um sistema distribuído é uma técnica fundamental para melhorar a resiliência de uma carga de trabalho. |
| Transações distribuídas Saga | Coordena transações de longa duração e potencialmente complexas, decompondo o trabalho em sequências de transações menores e independentes. Cada transação também deve ter ações compensatórias para reverter falhas na execução e manter a integridade. Como as transações monolíticas em vários sistemas distribuídos geralmente são impossíveis, esse padrão fornece consistência e confiabilidade implementando atomicidade e compensação. |
| Supervisor de Agente Agendador | Distribui e redistribui tarefas de forma eficiente em um sistema com base em fatores observáveis no sistema. Esse padrão usa métricas de integridade para detetar falhas e redirecionar tarefas para um agente íntegro, a fim de mitigar os efeitos de um mau funcionamento. |
| Comboio sequencial | Mantém a entrada simultânea de mensagens e, ao mesmo tempo, suporta o processamento em uma ordem definida. Esse padrão pode eliminar condições de concorrência difíceis de solucionar, gestão de mensagens em disputa, ou outras soluções alternativas para lidar com mensagens ordenadas incorretamente que podem levar a mau funcionamento. |
| Sharding | Direciona a carga para um destino lógico específico para atender a solicitação, permitindo a colocalização para otimização. Como os dados ou o processamento são isolados no fragmento, um mau funcionamento em um fragmento permanece isolado nesse fragmento. |
| Figo Strangler | Fornece uma abordagem para substituir sistematicamente os componentes de um sistema em execução por novos componentes, geralmente durante uma migração ou modernização do sistema. A abordagem incremental desse padrão pode ajudar a mitigar os riscos durante uma transição. |
| Escalonamento | Impõe limites à taxa ou capacidade de processamento de solicitações de entrada para um recurso ou componente. Você pode projetar os limites para ajudar a evitar o esgotamento de recursos que pode levar a avarias. Você também pode usar esse padrão como um mecanismo de controle em um plano de degradação gracioso. |
Próximos passos
Revise os padrões de arquitetura que suportam os outros pilares do Azure Well-Architected Framework.