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