Padrões de Design de Nuvem
Os arquitetos projetam workloads combinando serviços de plataforma, funcionalidade e código para atender aos requisitos funcionais e não funcionais dos workloads. O projeto de workloads requer a compreensão desses requisitos de workload e, em seguida, a escolha de topologias e abordagens que resolvam os desafios apresentados pelas restrições do workload. Padrões de design de nuvem que abordam muitos desafios comuns.
O design de sistemas está fortemente mergulhado em padrões de design. A infraestrutura, o código e os sistemas distribuídos são projetados em torno de uma combinação de padrões de design. Esses padrões de design são úteis para criar aplicativos confiáveis, seguros, otimizados para custos, operacionalmente sólidos e com performance na nuvem.
Esses padrões de design não são específicos de nenhuma tecnologia e são relevantes para qualquer sistema distribuído, seja ele hospedado no Azure ou em outras plataformas de nuvem, e alguns podem até mesmo se estender a workloads na infraestrutura local ou híbridos.
Os padrões de design de nuvem ajudam o processo de design
As cargas de trabalho na nuvem são propensas às armadilhas da computação distribuída. Alguns exemplos de falácias de design de nuvem são:
- A rede é confiável
- A latência é zero
- A largura de banda é infinita
- A rede é segura
- A topologia não muda
- Existe um administrador
- O controle de versão de componentes é simples
- A implementação da observabilidade pode ser atrasada
Os padrões de design não eliminam noções como essas, mas podem ajudar a conscientizar, compensar e mitigá-las. Cada padrão de nuvem tem suas próprias vantagens e desvantagens. Você precisa prestar mais atenção ao motivo pelo qual está escolhendo um determinado padrão do que à forma de implementá-lo.
Uma carga de trabalho bem arquitetada considera como esses padrões de design em todo o setor devem ser usados como os blocos essenciais para a arquitetura da carga de trabalho. Cada pilar do Well-Architected do Azure é representado nesses padrões de design, muitas vezes com o padrão de design introduzindo compensações com as metas de outros pilares.
Catálogo de padrões
Cada padrão neste catálogo descreve o problema ao qual o padrão se destina, as considerações para a aplicação do padrão e um exemplo com base no Microsoft Azure. Alguns padrões inclui exemplos de código ou snippets de código que mostram como implementar o padrão no Azure.
Padrão | Resumo | Pilares da estrutura bem arquitetada do Azure |
---|---|---|
Embaixador | Crie serviços auxiliares que enviam solicitações de rede em nome de um consumidor de serviço ou aplicativo. |
|
Camada anticorrupção | Implemente uma camada de fachada ou adaptador entre um aplicativo moderno e um sistema herdado. |
|
Solicitação/resposta assíncrona | Desvincule o processamento de back-end de um host de front-end: quando o processamento de back-end precisa ser assíncrono, mas o front-end ainda precisa de uma resposta clara. |
|
Back-ends para Front-ends | Crie serviços de back-end separados para serem usados por aplicativos ou interfaces de front-end específicos. |
|
Bulkhead | Isole os elementos de um aplicativo em pools para que, se um deles falhar, os outros continuem funcionando. |
|
Cache-Aside | Carregue dados sob demanda em um cache a partir de um armazenamento de dados. |
|
Coreografia | Permita que cada serviço decida quando e como uma operação comercial será processada, em vez de depender de um orquestrador central. |
|
Interruptor de Circuito | Trate as falhas que possam consumir uma quantidade variável de tempo para serem corrigidas ao se conectar a um serviço ou recurso remoto. |
|
Verificação de declaração | Divida uma mensagem grande em uma verificação de declaração e uma carga para evitar sobrecarregar um barramento de mensagem. |
|
Transação de Compensação | Desfaça o trabalho executado por uma série de etapas que, juntas, definem uma operação que acabe sendo consistente. |
|
Consumidores Concorrentes | Habilite vários consumidores simultâneos para processar as mensagens recebidas no mesmo canal de mensagens. |
|
Consolidação de Recursos de Computação | Consolidar várias tarefas ou operações em uma única unidade de computação. |
|
CQRS | Separar as operações que leem dados de operações que atualizam dados usando interfaces separadas. |
|
Carimbos de implantação | Implante várias cópias independentes de componentes de aplicativos, incluindo armazenamentos de dados. |
|
Configuração de carga de trabalho de borda | Centralize a configuração para resolver o desafio de configurar vários sistemas e dispositivos no chão de fábrica. | |
Fornecimento de Eventos | Use um repositório somente de acréscimo para registrar a série inteira de eventos que descrevem as ações realizadas nos dados em um domínio. |
|
Repositório de configuração externo | Mova as informações de configuração para fora do pacote de implantação de aplicativo para um local centralizado. |
|
Identidade Federada | Delegar autenticação a um provedor de identidade externa. |
|
Gatekeeper | Proteger aplicativos e serviços usando uma instância de host dedicado que atua como intermediário entre clientes e o aplicativo ou serviço, valida e corrige solicitações e passa solicitações e dados entre eles. |
|
Agregação de Gateway | Use um gateway para agregar várias solicitações individuais em uma única solicitação. |
|
Descarregamento de Gateway | Descarregue a funcionalidade de serviço especializado ou compartilhado para um proxy do gateway. |
|
Roteamento de Gateway | Faça o roteamento de solicitações para vários serviços usando um único ponto de extremidade. |
|
Geode | Implante serviços de back-end em um conjunto de nós geográficos. Cada um deles pode atender solicitações de cliente em qualquer região. |
|
Monitoramento do Ponto de Extremidade de Integridade | Implemente verificações funcionais dentro de um aplicativo cujas ferramentas externas podem acessar por meio de pontos de extremidade expostos em intervalos regulares. |
|
Tabela de Índice | Crie índices nos campos em armazenamentos de dados que são frequentemente referenciados por consultas. |
|
Eleição de Líder | Coordene as ações executadas por uma coleção de instâncias de tarefa de colaboração em um aplicativo distribuído elegendo uma instância como a líder que assume a responsabilidade por gerenciar as demais instâncias. |
|
Exibição Materializada | Gere exibições pré-preenchidas nos dados em um ou mais armazenamentos de dados quando os dados não estiverem formatados como o ideal para as operações de consulta necessárias. |
|
Ponte de Mensagens | Crie um intermediário para habilitar a comunicação entre sistemas de mensagens que, de outra forma, são incompatíveis devido ao protocolo ou formato. |
|
Pipes e Filtros | Dividir uma tarefa que executa processamento complexo em uma série de elementos separados que podem ser reutilizados. |
|
Fila de Prioridade | Priorize as solicitações enviadas a serviços para que as solicitações com uma prioridade mais alta sejam recebidas e processadas mais rapidamente do que aquelas com uma prioridade mais baixa. |
|
Publicador/Assinante | Permite a um aplicativo anunciar eventos para vários consumidores de seu interesse assincronamente, sem acoplar os remetentes aos destinatários. |
|
Quarentena | Verifique se os ativos externos atendem a um nível de qualidade acordado pela equipe antes de serem autorizados a consumi-los no workload. |
|
Nivelamento de Carga Baseado em Fila | Use uma fila que funcione como um buffer entre uma tarefa e um serviço que ela invoca para simplificar cargas pesadas intermitentes. |
|
Padrão de limitação de taxa | Padrão de limitação para evitar ou minimizar erros de limitação relacionados a esses limites e prever com mais precisão a taxa de transferência. |
|
Repetir | Permita que um aplicativo trate falhas previstas e temporárias quando tentar se conectar a um serviço ou recurso de rede ao repetir de forma transparente uma operação que falhou anteriormente. |
|
Saga | Gerencie a consistência de dados entre microsserviços em cenários de transações distribuídas. Uma saga é uma sequência de transações que atualiza cada serviço e publica uma mensagem ou evento para disparar a próxima etapa de transação. |
|
Supervisor de Agente do Agendador | Coordene um conjunto de ações em um conjunto distribuído de serviços e outros recursos remotos. |
|
Comboio Sequencial | Processe um conjunto de mensagens relacionadas em uma ordem definida, sem bloquear o processamento de outros grupos de mensagens. |
|
Fragmentação | Divida um armazenamento de dados em um conjunto de partições horizontais ou fragmentos. |
|
Sidecar | Implante os componentes de um aplicativo em um processo ou contêiner separado para fornecer isolamento e encapsulamento. |
|
Hospedagem de Conteúdo Estático | Implante conteúdo estático em um serviço de armazenamento baseado em nuvem que pode enviá-lo diretamente para o cliente. |
|
Estrangulador Fig | Migre incrementalmente um sistema herdado substituindo gradualmente partes específicas de funcionalidade por serviços e aplicativos novos. |
|
Limitação | Controle o consumo de recursos usados por uma instância de um aplicativo, um locatário individual ou todo o serviço. |
|
Valet Key | Use um token ou chave que fornece aos clientes acesso direto e restrito a um determinado recurso ou serviço. |
|
Próxima etapa
Examine os padrões de design da perspectiva do pilar Well-Architected do Azure que o padrão busca otimizar.
- Padrões de design para dar suporte ao pilar de confiabilidade
- Padrões de design para dar suporte ao pilar de segurança
- Padrões de design para dar suporte ao pilar de Otimização de Custos
- Padrões de design para dar suporte ao pilar de Excelência Operacional
- Padrões de design para dar suporte ao pilar de Eficiência de Performance