Padrões de conceção da cloud que suportam a fiabilidade
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 compromissos 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 segurança, o desempenho, o custo e as operações. Se não forem mitigados, esses riscos acabarão por causar problemas de fiabilidade. Estes padrões são apoiados pela experiência do mundo real, foram concebidos para modelos operacionais e de escala da cloud e são inerentemente agnósticos para fornecedores. A utilização de padrões bem conhecidos como forma de uniformizar a conceção da carga de trabalho é um componente de excelência operacional.
Muitos padrões de conceção suportam diretamente um ou mais pilares de arquitetura. Os padrões de conceção que suportam o pilar Fiabilidade priorizam a disponibilidade da carga de trabalho, a auto-preservação, a recuperação, a integridade dos dados e do processamento e a contenção de avarias.
Padrões de conceção para fiabilidade
A tabela seguinte resume os padrões de conceção da cloud que suportam os objetivos de fiabilidade.
Padrão | Resumo |
---|---|
Ambassador | Encapsula e gere comunicações de rede ao descarregar tarefas transversais relacionadas com a comunicação de rede. Os serviços auxiliares resultantes iniciam a comunicação em nome do cliente. Este ponto de mediação proporciona uma oportunidade para adicionar padrões de fiabilidade à comunicação de rede, como repetição ou colocação em memória intermédia. |
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. Devido a esta separação, uma avaria na camada de serviço que suporta um cliente pode não afetar a disponibilidade do acesso de outro cliente. Quando trata vários clientes de forma diferente, pode priorizar os esforços de fiabilidade com base nos padrões de acesso de cliente esperados. |
Bulkhead | Introduz segmentação intencional e completa entre componentes para isolar o raio de explosão de avarias. Esta estratégia de isolamento de falhas tenta conter falhas apenas na bulkhead que está a ter o problema, o que impede o impacto noutras bulkheads. |
Cache-Aside | Otimiza o acesso a dados de leitura frequente ao introduzir uma cache preenchida a pedido. Em seguida, a cache é utilizada em pedidos subsequentes para os mesmos dados. A colocação em cache cria a replicação de dados e, de formas limitadas, pode ser utilizada para preservar a disponibilidade de dados acedidos frequentemente se o arquivo de dados de origem estiver temporariamente indisponível. Além disso, se existir uma avaria na cache, a carga de trabalho pode reverter para o arquivo de dados de origem. |
Disjuntor Automático | Impede pedidos contínuos de dependências incorretas ou indisponíveis. Ao fazê-lo, este padrão impede a sobrecarga de uma dependência com falhas. Também pode utilizar este padrão para acionar uma degradação correta na carga de trabalho. Os disjuntores são, muitas vezes, associados à recuperação automática para proporcionar auto-preservação e autorrecuperação. |
Verificação de Afirmações | Separa os dados do fluxo de mensagens, fornecendo uma forma de obter separadamente os dados relacionados com uma mensagem. Os barramentos de mensagens não fornecem a mesma fiabilidade e recuperação após desastre que estão frequentemente presentes em arquivos de dados dedicados, pelo que separar os dados da mensagem pode proporcionar maior fiabilidade para os dados subjacentes. Esta separação também permite uma abordagem de recuperação da fila de mensagens após um desastre. |
Compensação de Transação | Fornece um mecanismo para recuperar de falhas ao reverter os efeitos das ações aplicadas anteriormente. Este padrão aborda avarias em caminhos de carga de trabalho críticos através de ações de compensação, que podem envolver processos como reverter diretamente alterações de dados, quebrar bloqueios de transações ou até mesmo executar o comportamento do sistema nativo para inverter o efeito. |
Consumidores Concorrentes | Aplica o processamento distribuído e simultâneo para processar itens de forma eficiente numa fila. Este modelo cria redundância no processamento de filas ao tratar os consumidores como réplicas, pelo que uma falha de instância não impede que outros consumidores processem mensagens de fila. |
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. Pode utilizar este padrão quando um histórico fiável de alterações é crucial num processo de negócio complexo. Também facilita a reconstrução do estado se precisar de recuperar arquivos de estado. |
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. Descarregar a gestão de utilizadores e a autenticação muda a fiabilidade desses componentes para o fornecedor de identidade, que normalmente tem um SLA elevado. Além disso, durante a recuperação após desastre da carga de trabalho, os componentes de autenticação provavelmente não precisam de ser abordados como parte do plano de recuperação da carga de trabalho. |
Agregação de Gateway | Simplifica as interações do cliente com a carga de trabalho ao agregar chamadas para vários serviços de back-end num único pedido. Esta topologia permite-lhe mudar o processamento de falhas transitórias de uma implementação distribuída entre clientes para uma implementação centralizada. |
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. Descarregar esta responsabilidade para um gateway reduz a complexidade do código da aplicação nos nós de back-end. Em alguns casos, a descarga substitui completamente a funcionalidade por uma funcionalidade fiável fornecida pela plataforma. |
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 encaminhar o tráfego apenas para nós em bom estado de funcionamento no seu sistema. |
Geode | Implementa sistemas que operam em modos de disponibilidade ativo-ativo 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 ajudar a carga de trabalho a suportar uma ou mais interrupções regionais. |
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 que foi concebido especificamente para esse fim. Pode utilizar este ponto final para gerir o estado de funcionamento da carga de trabalho e para alertas e dashboards. Também pode utilizá-lo como um sinal para remediação de autorrecuperação. |
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. Uma vez que os clientes são apontados para a partição horizontal, partição ou ponto final através de um processo de pesquisa, pode utilizar este padrão para facilitar uma abordagem de ativação pós-falha para o acesso aos dados. |
Eleição de Coordenador | Estabelece um líder de instâncias de uma aplicação distribuída. O coordenador coordena as responsabilidades relacionadas com a realização de um objetivo. Este padrão mitiga o efeito das avarias do nó ao redirecionar de forma fiável o trabalho. Também implementa a ativação pós-falha através de algoritmos de consenso quando um líder avaria. |
Pipes e Filtros | Divide o processamento de dados complexos numa série de fases independentes para obter um resultado específico. A responsabilidade única de cada fase permite uma atenção focada e evita a distração do processamento de dados compostos. |
Fila de Prioridade | Garante que os itens de prioridade mais alta são processados e concluídos antes dos itens de prioridade inferior. Separar itens com base na prioridade empresarial permite-lhe concentrar os esforços de fiabilidade no trabalho mais crítico. |
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. |
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 pode proporcionar resiliência contra picos repentinos na procura ao desassociar a chegada de tarefas do respetivo processamento. Também pode isolar avarias no processamento de filas para que não afetem a ingestão. |
Limitação de Taxa | Controla a taxa de pedidos de cliente para reduzir os erros de limitação e evitar cenários de repetição no erro não vinculados. Esta tática protege o cliente ao reconhecer as limitações e os custos de comunicação com um serviço quando o serviço é concebido para evitar atingir limites especificados. Funciona ao controlar o número e/ou o 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 ao repetir determinadas operações, de forma controlada. Mitigar falhas transitórias num sistema distribuído é uma técnica fundamental para melhorar a resiliência de uma carga de trabalho. |
Transações distribuídas de saga | Coordena transações de execução prolongada e potencialmente complexas ao decompor o trabalho em sequências de transações mais pequenas e independentes. Cada transação também tem de ter ações de compensação para inverter falhas na execução e manter a integridade. Uma vez que as transações monolíticas em vários sistemas distribuídos são normalmente impossíveis, este padrão proporciona consistência e fiabilidade através da implementação da atomicidade e da compensação. |
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 estado de funcionamento para detetar falhas e reencaminhar tarefas para um agente em bom estado de funcionamento para mitigar os efeitos de uma avaria. |
Transporte sequencial | Mantém a entrada de mensagens simultâneas, ao mesmo tempo que suporta o processamento por uma ordem definida. Este padrão pode eliminar condições de raça difíceis de resolver, processamento de mensagens contenciosas ou outras soluções para resolver mensagens ordenadas incorretamente que podem causar avarias. |
Fragmentação | Direciona a carga para um destino lógico específico para processar o pedido específico, ativando a colocalização para otimização. Uma vez que os dados ou o processamento estão isolados da partição horizontal, uma avaria numa partição horizontal permanece isolada dessa partição horizontal. |
Strangler Fig | Fornece uma abordagem para substituir sistematicamente os componentes de um sistema em execução por novos componentes, muitas vezes durante uma migração ou modernização do sistema. A abordagem incremental deste padrão pode ajudar a mitigar os riscos durante uma transição. |
Limitação | Impõe limites à taxa ou débito de pedidos recebidos a um recurso ou componente. Pode estruturar os limites para ajudar a evitar o esgotamento de recursos que possam originar avarias. Também pode utilizar este padrão como um mecanismo de controlo num plano de degradação correto. |
Passos seguintes
Reveja os padrões de conceção da cloud que suportam os outros pilares do Azure Well-Architected Framework: