Padrões de Conceção de Cloud

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 fragmentos que mostram como implementar o padrão no Azure. No entanto, a maioria dos padrões é relevante para qualquer sistema distribuído, quer esteja alojado no Azure ou noutras plataformas na cloud.

Desafios no desenvolvimento da cloud

Gestão de dados

Gestão de Dados

A gestão de dados é o elemento-chave das aplicações na cloud e influencia a maioria dos atributos de qualidade. Normalmente, os dados são alojados em diferentes localizações 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

O bom design abrange a consistência e a coerência na conceção e implementação de componentes, a manutenção para simplificar a administração e o desenvolvimento e a reutilização para permitir a utilização de componentes e subsistemas noutras aplicações e cenários. As decisões tomadas durante a fase de conceção e implementação afetam significativamente a qualidade e o custo total de propriedade de aplicações e serviços alojados na cloud.

Ícone mensagens

Mensagens

A natureza distribuída das aplicações na cloud requer uma infraestrutura de mensagens que ligue os componentes e os serviços, idealmente pouco acoplados para maximizar a escalabilidade. As mensagens assíncronas são amplamente utilizadas e proporcionam muitos benefícios, mas também traz desafios como ordenar mensagens, gestão de mensagens venenosas, 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 do Edge A grande variedade de sistemas e dispositivos no piso da loja 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 Limitar o padrão para o ajudar a evitar ou minimizar erros de limitação relacionados com estes limites de limitação e para o ajudar a prever com maior precisão o débito. 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 Gerir 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 acionar o próximo passo de 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