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 DadosO 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. |
|
Conceção e implementaçãoUm 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. |
|
MensagensA 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 |