Padrões de Design de Nuvem
Esses padrões de design são úteis para a criação de aplicativos confiáveis, dimensionáveis e seguros na nuvem.
Cada padrão descreve o problema ao qual o padrão se destina, as considerações para a aplicação do padrão e um exemplo com base no Microsoft Azure. A maioria dos padrões inclui exemplos de código ou snippets de código que mostram como implementar o padrão no Azure. No entanto, a maioria dos padrões é relevante para qualquer sistema distribuído, se hospedados no Azure ou em outras plataformas de nuvem.
Desafios de desenvolvimento em nuvem
Gerenciamento de DadosO gerenciamento de dados é o elemento principal de aplicativos em nuvem e influencia a maioria dos atributos de qualidade. Os dados geralmente são hospedados em locais diferentes e em vários servidores para fins de desempenho, escalabilidade ou disponibilidade. Isso pode apresentar vários desafios. Por exemplo, deve ser mantida a consistência dos dados e dados normalmente precisam ser sincronizados em diferentes locais. |
|
Design e implementaçãoUm bom design abrange a consistência e a coerência no design do componente e implantação, facilidade de manutenção para simplificar a administração e desenvolvimento e capacidade de reutilização para permitir que componentes e subsistemas possam ser usados em outros aplicativos e cenários. As decisões tomadas durante a fase de design e implementação impactam significativamente a qualidade e o custo total de propriedade de aplicativos e serviços hospedados na nuvem. |
|
Sistema de mensagensA natureza distribuída dos aplicativos de nuvem exige uma infraestrutura de mensagens que conecta os componentes e serviços, idealmente de uma maneira flexível para maximizar a escalabilidade. O sistema de mensagens assíncronas é amplamente usado e fornece muitos benefícios, mas também traz desafios, como a ordenação de mensagens, o gerenciamento de mensagens suspeitas, a idempotência e muito mais. |
Catálogo de padrões
Padrão | Resumo | Categoria |
---|---|---|
Embaixador | Crie serviços auxiliares que enviam solicitações de rede em nome de um consumidor de serviço ou aplicativo. | Design e implementação, Excelência operacional |
Camada anticorrupção | Implemente uma camada de fachada ou adaptador entre um aplicativo moderno e um sistema herdado. | Design e implementação, Excelência operacional |
Solicitação/resposta assíncrona | Desvincule o processamento de back-end de um host de front-end: quando o processamento de back-end precisa ser assíncrono, mas o front-end ainda precisa de uma resposta clara. | Sistema de mensagens |
Back-ends para Front-ends | Crie serviços de back-end separados a serem consumidos por aplicativos de front-end específico ou interfaces. | Design e implementação |
Bulkhead | Isole os elementos de um aplicativo em pools para que, se um falhar, os outros continuem a funcionar. | Confiabilidade |
Cache-Aside | Carregar dados sob demanda em um cache de um armazenamento de dados. | Gerenciamento de dados, Eficiência de desempenho |
Coreografia | Permita que cada serviço decida quando e como uma operação comercial será processada, em vez de depender de um orquestrador central. | Mensagens, Eficiência de desempenho |
Interruptor de Circuito | Trate as falhas que possam consumir uma quantidade variável de tempo para serem corrigidas ao se conectar a um serviço ou recurso remoto. | Confiabilidade |
Verificação de declaração | Divida uma mensagem grande em uma verificação de declaração e uma carga para evitar sobrecarregar um barramento de mensagem. | Sistema de mensagens |
Transação de Compensação | Desfaça o trabalho executado por uma série de etapas que, juntas, definem uma operação que acabe sendo consistente. | Confiabilidade |
Consumidores Concorrentes | Habilite vários consumidores simultâneos para processar as mensagens recebidas no mesmo canal de mensagens. | Sistema de mensagens |
Consolidação de Recursos de Computação | Consolidar várias tarefas ou operações em uma única unidade de computação | Design e implementação |
CQRS | Separar as operações que leem dados de operações que atualizam dados usando interfaces separadas. | Gerenciamento de dados, Design e implementação, Eficiência de desempenho |
Carimbos de implantação | Implante várias cópias independentes de componentes de aplicativos, incluindo armazenamentos de dados. | Confiabilidade Eficiência de desempenho |
Configuração de carga de trabalho de borda | A grande variedade de sistemas e dispositivos na área de produção pode dificultar a configuração da carga de trabalho. | Design e implementação |
Fornecimento de Eventos | Use um repositório somente de acréscimo para registrar a série inteira de eventos que descrevem as ações realizadas nos dados em um domínio. | Gerenciamento de dados, Eficiência de desempenho |
Repositório de configuração externo | Mova as informações de configuração para fora do pacote de implantação de aplicativo para um local centralizado. | Design e implementação, Excelência operacional |
Identidade Federada | Delegar autenticação a um provedor de identidade externa. | Segurança |
Gatekeeper | Proteger aplicativos e serviços usando uma instância de host dedicado que atua como intermediário entre clientes e o aplicativo ou serviço, valida e corrige solicitações e passa solicitações e dados entre eles. | Segurança |
Agregação de Gateway | Use um gateway para agregar várias solicitações individuais em uma única solicitação. | Design e implementação, Excelência operacional |
Descarregamento de Gateway | Descarregue a funcionalidade de serviço especializado ou compartilhado para um proxy do gateway. | Design e implementação, Excelência operacional |
Roteamento de Gateway | Faça o roteamento de solicitações para vários serviços usando um único ponto de extremidade. | Design e implementação, Excelência operacional |
Nó geográfico | Implante serviços de back-end em um conjunto de nós geográficos. Cada um deles pode atender solicitações de cliente em qualquer região. | Confiabilidade Excelência operacional |
Monitoramento do Ponto de Extremidade de Integridade | Implemente verificações funcionais dentro de um aplicativo cujas ferramentas externas podem acessar por meio de pontos de extremidade expostos em intervalos regulares. | Confiabilidade Excelência operacional |
Tabela de Índice | Crie índices nos campos em armazenamentos de dados que são frequentemente referenciados por consultas. | Gerenciamento de dados, Eficiência de desempenho |
Eleição de Líder | Coordene as ações executadas por uma coleção de instâncias de tarefa de colaboração em um aplicativo distribuído elegendo uma instância como a líder que assume a responsabilidade por gerenciar as demais instâncias. | Design e implementação, Confiabilidade |
Exibição Materializada | Gere exibições pré-preenchidas nos dados em um ou mais armazenamentos de dados quando os dados não estiverem formatados como o ideal para as operações de consulta necessárias. | Gerenciamento de dados, Excelência operacional, Eficiência de desempenho |
Pipes e Filtros | Dividir uma tarefa que executa processamento complexo em uma série de elementos separados que podem ser reutilizados. | Design e implementação, Sistema de mensagens |
Fila de Prioridade | Priorize as solicitações enviadas a serviços para que as solicitações com uma prioridade mais alta sejam recebidas e processadas mais rapidamente do que aquelas com uma prioridade mais baixa. | Mensagens, Eficiência de desempenho |
Publicador/Assinante | Permite a um aplicativo anunciar eventos para vários consumidores de seu interesse assincronamente, sem acoplar os remetentes aos destinatários. | Sistema de mensagens |
Nivelamento de Carga Baseado em Fila | Use uma fila que funcione como um buffer entre uma tarefa e um serviço que ela invoca para simplificar cargas pesadas intermitentes. | Confiabilidade Mensagens, Resiliência, Eficiência de desempenho |
Padrão de limitação de taxa | Padrão de limitação para evitar ou minimizar erros de limitação relacionados a esses limites e prever com mais precisão a taxa de transferência. | Confiabilidade |
Repetir | Permita que um aplicativo trate falhas previstas e temporárias quando tentar se conectar a um serviço ou recurso de rede ao repetir de forma transparente uma operação que falhou anteriormente. | Confiabilidade |
Saga | Gerencie 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 disparar a próxima etapa de transação. | Sistema de mensagens |
Supervisor de Agente do Agendador | Coordene um conjunto de ações em um conjunto distribuído de serviços e outros recursos remotos. | Mensagens, Confiabilidade |
Comboio Sequencial | Processe um conjunto de mensagens relacionadas em uma ordem definida, sem bloquear o processamento de outros grupos de mensagens. | Sistema de mensagens |
Fragmentação | Divida um armazenamento de dados em um conjunto de partições horizontais ou fragmentos. | Gerenciamento de dados, Eficiência de desempenho |
Sidecar | Implante os componentes de um aplicativo em um processo ou contêiner separado para fornecer isolamento e encapsulamento. | Design e implementação, Excelência operacional |
Hospedagem de Conteúdo Estático | Implante conteúdo estático em um serviço de armazenamento baseado em nuvem que pode enviá-lo diretamente para o cliente. | Design e implementação, Gerenciamento de dados, Eficiência de desempenho |
Estrangulador Fig | Migre incrementalmente um sistema herdado substituindo gradualmente partes específicas de funcionalidade por serviços e aplicativos novos. | Design e implementação, Excelência operacional |
Limitação | Controle o consumo de recursos usados por uma instância de um aplicativo, um locatário individual ou todo o serviço. | Confiabilidade Eficiência de desempenho |
Valet Key | Use um token ou chave que fornece aos clientes acesso direto e restrito a um determinado recurso ou serviço. | Gerenciamento de dados, Segurança |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de