Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 conter falhas apenas na antepara que está enfrentando o problema, evitando o impacto em outras anteparas. |
| 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 esse padrão para acionar a degradação normal na carga de trabalho. Os disjuntores são frequentemente acoplados à recuperação automática para fornecer autopreservação e auto-cura. |
| 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 fornecem a mesma confiabilidade e recuperação de desastres que geralmente estão presentes em armazenamentos de dados dedicados, portanto, separar os dados da mensagem pode fornecer maior confiabilidade 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. |
| Fornecimento de Eventos | Trata a mudança de estado como uma série de eventos, capturando-os em um log imutável, somente acréscimo. 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 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. 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 de gateway | Descarrega o processamento de solicitações para um dispositivo de gateway antes e depois de encaminhar a solicitação para um nó de back-end. Transferir essa responsabilidade para um gateway reduz a complexidade do código do aplicativo nos nós de back-end. Em alguns casos, o descarregamento substitui completamente a funcionalidade por um recurso confiável fornecido 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. |
| Geodo | 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 monitorar a integridade ou o status de um sistema expondo um ponto de extremidade projetado especificamente para essa finalidade. Você pode usar esse ponto de extremidade para gerenciar a integridade da sua carga de trabalho e para alertas e painéis. Você também pode usá-lo como um sinal para a remediação de auto-cura. |
| 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. Ele também implementa failover por meio de algoritmos de consenso quando um líder funciona mal. |
| 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. |
| Editor/Subscritor | Desacopla componentes de uma arquitetura substituindo a comunicação direta cliente-a-serviço ou cliente-a-serviço pela comunicação por meio de um agente de mensagens intermediário ou barramento de eventos. |
| Queue-Based Nivelamento de carga | 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 corrida difíceis de solucionar, manipulação de mensagens contenciosas ou outras soluções alternativas para endereçar mensagens ordenadas incorretamente que podem levar a mau funcionamento. |
| Partilha | Direciona a carga para um destino lógico específico para lidar com a solicitação específica, permitindo a colocation 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 taxa de transferência 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
Analise os padrões de design de arquitetura que dão suporte aos outros pilares do Azure Well-Architected Framework: