Padrões de Conceção de Nuvem

Estes padrões de conceção são úteis para criar aplicações fiáveis, dimensionáveis e seguras na cloud.

Cada padrão descreve o problema que o padrão aborda, as considerações para aplicar o padrão e um exemplo baseado no Microsoft Azure. A maioria dos padrões inclui exemplos de código ou trechos que mostram como implementar o padrão no Azure. No entanto, a maioria dos padrões é relevante para qualquer sistema distribuído, seja hospedado no Azure ou em outras plataformas de nuvem.

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.

Desafios no desenvolvimento da cloud

Gestão de dados

Gestão de Dados

O gerenciamento de dados é o elemento-chave dos aplicativos em nuvem e influencia a maioria dos atributos de qualidade. Normalmente, os dados são hospedados em locais diferentes e em vários servidores para desempenho, escalabilidade ou disponibilidade. Isto pode apresentar vários desafios. Por exemplo, deve ser mantida uma consistência de dados e estes têm normalmente de ser sincronizados em diferentes localizações.

Estrutura e implementação

Conceção e implementação

Um bom design engloba consistência e coerência no projeto e implantação de componentes, manutenibilidade para simplificar a administração e o desenvolvimento e reutilização para permitir que componentes e subsistemas sejam usados em outros aplicativos e cenários. As decisões tomadas durante a fase de projeto e implementação afetam significativamente a qualidade e o custo total de propriedade de aplicativos e serviços hospedados na nuvem.

Ícone de mensagens

Mensagens

A natureza distribuída dos aplicativos em nuvem requer uma infraestrutura de mensagens que conecte os componentes e serviços, idealmente acoplados de forma flexível para maximizar a escalabilidade. As mensagens assíncronas são amplamente utilizadas e oferecem muitos benefícios, mas também trazem desafios como ordenar mensagens, gerenciamento de mensagens suspeitas, idempotência e muito mais.

Catálogo de padrões

Padrão Resumo Categoria
Ambassador Crie serviços de programa auxiliar que enviam pedidos de rede em nome de um serviço ou aplicação de consumidor. Conceção e Implementação,
Excelência Operacional
Camada Anti-corrupção Implemente uma camada de fachada ou de adaptador entre uma aplicação moderna e um sistema legado. Conceção e Implementação,
Excelência Operacional
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. Mensagens
Back-ends para Front-ends Crie serviços de back-end separados para serem consumidos por aplicações ou interfaces de front-end específicas. Conceção e implementação
Bulkhead Isole os elementos de uma aplicação em conjuntos, de modo a que se um falhar, os outros continuam a funcionar. Fiabilidade
Cache-Aside Carregar dados a pedido para uma cache a partir de um arquivo de dados Gestão de Dados,
Eficiência de Desempenho
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. Mensagens,
Eficiência de Desempenho
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. Fiabilidade
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. 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. Fiabilidade
Consumidores Concorrentes Permita que vários consumidores em simultâneo processem mensagens recebidas no mesmo canal de mensagens. Mensagens
Consolidação de Recursos de Computação Consolidar várias tarefas ou operações numa única unidade computacional Conceção e implementação
CQRS Segregue operações de leitura de dados a partir de operações que atualizam dados através de interfaces separadas. Gestão de Dados,
Conceção e Implementação,
Eficiência de Desempenho
Carimbos de Implementação Implemente várias cópias independentes de componentes de aplicações, incluindo arquivos de dados. Fiabilidade,
Eficiência de Desempenho
Configuração da carga de trabalho de borda A grande variedade de sistemas e dispositivos no chão de fábrica pode tornar a configuração da carga de trabalho um problema difícil. Conceção e implementação
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. Gestão de Dados,
Eficiência de Desempenho
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. Conceção e Implementação,
Excelência Operacional
Identidade Federada Delegue a autenticação para um fornecedor de identidade externo. Segurança
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. Segurança
Agregação de Gateway Utilize um gateway para agregar vários pedidos individuais num único pedido. Conceção e Implementação,
Excelência Operacional
Descarregamento de Gateway Descarregue funcionalidade de serviço partilhado ou especializado para um proxy de gateway. Conceção e Implementação,
Excelência Operacional
Encaminhamento de Gateway Encaminhe pedidos para vários serviços com um único ponto final. Conceção e Implementação,
Excelência Operacional
Geodes 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. Fiabilidade,
Excelência Operacional
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. Fiabilidade,
Excelência Operacional
Tabela de Índice Crie índices sobre os campos nos arquivos de dados que são frequentemente referenciados por consultas. Gestão de Dados,
Eficiência de Desempenho
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. Conceção e Implementação,
Fiabilidade
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. Gestão de Dados,
Excelência Operacional,
Eficiência de Desempenho
Pipes e Filtros Divida uma tarefa que realiza processamento complexo numa série de elementos separados que podem ser reutilizados. Conceção e Implementação,
Mensagens
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. Mensagens,
Eficiência de Desempenho
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. Mensagens
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. Fiabilidade,
Mensagens,
Resiliência,
Eficiência de Desempenho
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. Fiabilidade
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. Fiabilidade
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. Mensagens
Supervisor de Agente do Scheduler Coordene um conjunto de ações entre um conjunto distribuído de serviços e outros recursos remotos. Mensagens,
Fiabilidade
Transporte sequencial Processe um conjunto de mensagens relacionadas numa ordem definida sem bloquear o processamento de outros grupos de mensagens. Mensagens
Fragmentação Divida um arquivo de dados num conjunto de partições horizontais ou shards. Gestão de Dados,
Eficiência de Desempenho
Sidecar Implemente componentes de uma aplicação num processo ou contentor separado, para oferecer isolamento e encapsulamento. Conceção e Implementação,
Excelência Operacional
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. Conceção e Implementação,
Gestão de Dados,
Eficiência de Desempenho
Strangler Fig Migre incrementalmente um sistema legado, ao substituir gradualmente partes específicas de funcionalidades por novas aplicações e serviços. Conceção e Implementação,
Excelência Operacional
Limitação Controle o consumo dos recursos utilizados por uma instância de uma aplicação, um inquilino individual ou um serviço completo. Fiabilidade,
Eficiência de Desempenho
Chave Valet Utilize um token ou chave que oferece aos clientes um acesso direto restrito a um recurso ou serviço específico. Gestão de Dados,
Segurança