Padrões de Conceção de Nuvem
Os arquitetos projetam cargas de trabalho combinando serviços de plataforma, funcionalidade e código para atender aos requisitos funcionais e não funcionais em cargas de trabalho. Projetar cargas de trabalho requer a compreensão desses requisitos de carga de trabalho e, em seguida, escolher topologias e abordagens para resolver os desafios apresentados pelas restrições da carga de trabalho. Padrões de design de nuvem que abordam muitos desafios comuns.
O design de sistemas está fortemente mergulhado em padrões de projeto. Infraestrutura, código e sistemas distribuídos são projetados em torno de uma combinação de padrões de projeto. Esses padrões de design são úteis para criar aplicativos confiáveis, seguros, com custo otimizado, operacionalmente sólidos e de alto desempenho 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 hospedado no Azure, em outras plataformas de nuvem e alguns podem até se estender a cargas de trabalho locais ou híbridas.
Os padrões de design na nuvem ajudam no processo de design
As cargas de trabalho na nuvem são propensas às falácias da computação distribuída. Alguns exemplos de falácias de design de nuvem são:
- A rede é fiável
- A latência é zero
- A largura de banda é infinita
- A rede é segura
- A topologia não muda
- Há um administrador
- O controle de versão de componentes é simples
- A implementação da observabilidade pode ser adiada
Os padrões de design não eliminam noções como essas, mas podem ajudar a trazer conscientização, compensações e mitigações delas. Cada padrão de nuvem tem suas próprias compensações. Você precisa prestar mais atenção ao motivo pelo qual está escolhendo um determinado padrão do que a como implementá-lo.
Uma carga de trabalho bem arquitetada considera como esses padrões de projeto em todo o setor devem ser usados como os principais blocos de construção para o design da carga de trabalho. Cada pilar do Azure Well-Architected é representado nesses padrões de design, geralmente com o padrão de design introduzindo compensações com os objetivos de outros pilares.
Catálogo de padrões
Cada padrão neste catálogo descreve o problema que o padrão aborda, considerações para aplicar o padrão e um exemplo baseado no Microsoft Azure. Alguns padrões incluem exemplos de código ou trechos que mostram como implementar o padrão no Azure.
Padrão | Resumo | Pilares do Azure Well-Architected Framework |
---|---|---|
Ambassador | Crie serviços de programa auxiliar que enviam pedidos de rede em nome de um serviço ou aplicação de consumidor. |
|
Camada Anti-corrupção | Implemente uma camada de fachada ou de adaptador entre uma aplicação moderna e um sistema legado. |
|
Pedido-resposta assíncrono | Dissociar o processamento de back-end de um host front-end onde o processamento de back-end tem de ser assíncrono mas o front-end continua a necessitar de uma resposta clara. |
|
Back-ends para Front-ends | Crie serviços de back-end separados para serem usados por interfaces ou aplicativos frontend específicos. |
|
Bulkhead | Isole elementos de um aplicativo em pools para que, se um falhar, os outros continuem a funcionar. |
|
Cache-Aside | Carregue dados sob demanda em um cache de um armazenamento de dados. |
|
Coreografia | Permita que cada serviço decida quando e como uma operação de negócio será processada em vez de depender de um orquestrador central. |
|
Disjuntor Automático | Processe falhas que possam demorar um período de tempo a corrigir ao ligar a um serviço ou recurso remoto variável. |
|
Verificação de Afirmações | Divida uma mensagem grande numa verificação de afirmações e num payload para evitar sobrecarregar um barramento de mensagens. |
|
Compensação de Transação | Anule o trabalho realizado por uma série de passos, que em conjunto definem uma operação eventualmente consistente. |
|
Consumidores Concorrentes | Permita que vários consumidores em simultâneo processem mensagens recebidas no mesmo canal de mensagens. |
|
Consolidação de Recursos de Computação | Consolide várias tarefas ou operações em uma única unidade computacional. |
|
CQRS | Segregue operações de leitura de dados a partir de operações que atualizam dados através de interfaces separadas. |
|
Carimbos de Implementação | Implemente várias cópias independentes de componentes de aplicações, incluindo arquivos de dados. |
|
Configuração da carga de trabalho de borda | Centralize a configuração para enfrentar o desafio de configurar vários sistemas e dispositivos no chão de fábrica. | |
Origem do Evento | Utilize um arquivo só com anexos para registar a série completa dos eventos que descrevem ações tomadas nos dados de um domínio. |
|
Arquivo de Configuração Externo | Mova as informações de configuração para fora do pacote de implementação de aplicação para uma localização centralizada. |
|
Identidade Federada | Delegue a autenticação para um fornecedor de identidade externo. |
|
Controlador de chamadas | Proteja aplicações e serviços com uma instância de anfitrião dedicada que age como um mediador entre clientes e a aplicação ou serviço, valida e limpa pedidos, e transmite dados e pedidos entre eles. |
|
Agregação de Gateway | Utilize um gateway para agregar vários pedidos individuais num único pedido. |
|
Descarregamento de Gateway | Descarregue funcionalidade de serviço partilhado ou especializado para um proxy de gateway. |
|
Encaminhamento de Gateway | Encaminhe pedidos para vários serviços com um único ponto final. |
|
Geode | Implemente serviços de back-end num conjunto de nós geográficos, cada um dos quais pode atender qualquer pedido de cliente, em qualquer região. |
|
Monitorização do Ponto Final do Estado de Funcionamento | Implemente verificações funcionais numa aplicação que as ferramentas externas podem aceder através de pontos finais expostos em intervalos regulares. |
|
Tabela de Índice | Crie índices sobre os campos nos arquivos de dados que são frequentemente referenciados por consultas. |
|
Eleição de Coordenador | Coordene as ações executadas por uma coleção de instâncias de tarefa de colaboração numa aplicação distribuída, ao eleger uma instância como a líder que assume a responsabilidade para gerir as outras instâncias. |
|
Vista Materializada | Gere vistas pré-preenchidas sobre os dados em um ou mais arquivos de dados quando os dados não estão formatados idealmente para operações de consulta necessárias. |
|
Messaging Bridge | Crie um intermediário para permitir a comunicação entre sistemas de mensagens que, de outra forma, seriam incompatíveis devido ao protocolo ou formato. |
|
Pipes e Filtros | Divida uma tarefa que realiza processamento complexo numa série de elementos separados que podem ser reutilizados. |
|
Fila de Prioridade | Defina prioridades dos pedidos enviados para os serviços, de modo a que os pedidos com uma prioridade mais alta sejam recebidos e processados mais rapidamente do que aqueles com uma prioridade mais baixa. |
|
Publicador/Editor | Permita que uma aplicação anuncie os eventos para vários consumidores interessados de forma assíncrona, sem acoplar os remetentes aos destinatários. |
|
Quarentena | Garanta que os ativos externos atendam a um nível de qualidade acordado pela equipe antes de serem autorizados a consumi-los na carga de trabalho. |
|
Redistribuição de Carga Baseada na Fila | Utilize uma fila que age como uma memória intermédia entre uma tarefa e um serviço que este invoca para cargas pesadas intermitentes. |
|
Padrão de limite de taxa | Padrão de limitação para ajudá-lo a evitar ou minimizar erros de limitação relacionados a esses limites de limitação e para ajudá-lo a prever com mais precisão a taxa de transferência. |
|
Repetir | Permita que uma aplicação processe falhas previstas e temporárias quando tentar ligar a um recurso ou serviço de rede, ao repetir de forma transparente uma operação que falhou anteriormente. |
|
Saga | Gerencie a consistência de dados em 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 acionar a próxima etapa da transação. |
|
Supervisor de Agente do Scheduler | Coordene um conjunto de ações entre um conjunto distribuído de serviços e outros recursos remotos. |
|
Transporte sequencial | Processe um conjunto de mensagens relacionadas numa ordem definida sem bloquear o processamento de outros grupos de mensagens. |
|
Fragmentação | Divida um arquivo de dados num conjunto de partições horizontais ou shards. |
|
Sidecar | Implemente componentes de uma aplicação num processo ou contentor separado, para oferecer isolamento e encapsulamento. |
|
Alojamento de Conteúdo Estático | Implemente conteúdo estático num serviço de armazenamento baseado na cloud que o pode oferecer diretamente ao cliente. |
|
Strangler Fig | Migre incrementalmente um sistema legado, ao substituir gradualmente partes específicas de funcionalidades por novas aplicações e serviços. |
|
Limitação | Controle o consumo dos recursos utilizados por uma instância de uma aplicação, um inquilino individual ou um serviço completo. |
|
Chave Valet | Utilize um token ou chave que oferece aos clientes um acesso direto restrito a um recurso ou serviço específico. |
|
Próximo passo
Analise os padrões de design da perspetiva do Pilar Well-Architected do Azure que o padrão procura otimizar.