Padrões de design na nuvem
Na dinâmica paisagem da computação em nuvem, os padrões de design emergiram como uma ferramenta poderosa para a construção de aplicativos robustos, escaláveis e eficientes. Esses padrões, destilados a partir das experiências de desenvolvedores experientes, fornecem um roteiro para abordar desafios comuns que surgem em arquiteturas baseadas em nuvem.
1. Embaixador
Crie serviços auxiliares que enviem solicitações de rede em nome de um serviço ou aplicativo de consumidor.
2. Camada Anti-Corrupção
Implemente uma fachada ou camada de adaptação entre um aplicativo moderno e um sistema legado.
3. Solicitação-Resposta Assíncrona
Desacoplar o processamento de back-end de um host de front-end, onde o processamento de back-end precisa ser assíncrono, mas o front-end ainda precisa de uma resposta clara.
4. Backends para Frontends
Crie serviços de back-end separados a serem consumidos por aplicativos ou interfaces de front-end específicos.
5. Bulkhead
Isolar elementos de um aplicativo em pools para que, se um falhar, os outros continuem a funcionar.
6. Cache-Aside
Carregar dados sob demanda em um cache a partir de um armazenamento de dados.
7. Coreografia
Deixe que cada serviço decida quando e como uma operação de negócio é processada, em vez de depender de um orquestrador central.
8. Disjuntor
Lidar com falhas que podem levar um tempo variável para serem corrigidas ao se conectar a um serviço ou recurso remoto.
9. Teste de Reivindicação
Dividir uma mensagem grande em um teste de reivindicação e uma carga útil para evitar sobrecarregar um barramento de mensagens.
10. Transação Compensatória
Desfazer o trabalho realizado por uma série de etapas, que juntas definem uma operação eventualmente consistente.
11. Consumidores Concorrentes
Permitir que vários consumidores simultâneos processem mensagens recebidas no mesmo canal de mensagens.
12. Consolidação de Recursos Computacionais
Consolidar várias tarefas ou operações em uma única unidade computacional.
13. CQRS (Segregação de Responsabilidade de Comando e Consulta)
Segregar operações que leem dados de operações que atualizam dados usando interfaces separadas.
14. Carimbos de Implantação
Implantar várias cópias independentes de componentes de aplicativos, incluindo armazenamentos de dados.
15. Configuração de Carga de Trabalho na 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.
16. Event Sourcing
Use um armazenamento somente anexável para gravar a série completa de eventos que descrevem as ações realizadas em dados em um domínio.
17. Loja de Configuração Externa
Mover informações de configuração para fora do pacote de implantação do aplicativo para um local centralizado.
18. Identidade Federada
Delegar a autenticação a um provedor de identidade externo.
19. Guardião
Proteger aplicativos e serviços usando uma instância de host dedicada que atua como um intermediário entre clientes e o aplicativo ou serviço, valida e saneia solicitações e as passa entre eles.
20. Agregação de Gateway
Use um gateway para agregar várias solicitações individuais em uma única solicitação.
21. Descarregamento de Gateway
Descarregar funcionalidade de serviço compartilhada ou especializada para um proxy de gateway.
22. Roteamento de Gateway
Rotear solicitações para vários serviços usando um único ponto de extremidade.
23. Geodésicos
Implantar serviços de back-end em um conjunto de nós geográficos, cada um dos quais pode atender a qualquer solicitação do cliente em qualquer região.
24. Monitoramento de Ponto de Extremidade de Integridade
Implementar verificações funcionais em um aplicativo que ferramentas externas podem acessar por meio de pontos de extremidade expostos em intervalos regulares.
25. Tabela de Índice
Crie índices sobre os campos em armazenamentos de dados que são referenciados com frequência por consultas.
26. Eleição de Líder
Coordenar as ações realizadas por uma coleção de instâncias de tarefas colaborativas em um aplicativo distribuído, elegendo uma instância como o líder que assume a responsabilidade por gerenciar as outras instâncias.
27. Visão Materializada
Gerar visualizações pré-populadas dos dados em um ou mais armazenamentos de dados quando os dados não estiverem idealmente formatados para as operações de consulta necessárias.
28. Pipes e Filtros
Dividir uma tarefa que realiza processamento complexo em uma série de elementos separados que podem ser reutilizados.
29. Fila de Prioridade
Priorizar solicitações enviadas a serviços para que as solicitações com maior prioridade sejam recebidas e processadas mais rapidamente do que as de menor prioridade.
30. Publicador/Assinante
Permitir que um aplicativo anuncie eventos para vários consumidores interessados de forma assíncrona, sem acoplar os remetentes aos receptores.
31. Nivelamento de Carga com Base em Fila
Use uma fila que atua como um buffer entre uma tarefa e um serviço que ela invoca para suavizar cargas intermitentes pesadas.
32. Padrão de Limitação 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 o throughput.
33. Retry
Permitir que um aplicativo lide com falhas temporárias previstas ao tentar se conectar a um serviço ou recurso de rede, repetindo transparentemente uma operação que tenha falhado anteriormente.
34. Saga
Gerenciar a consistência de dados em microserviços em cenários de transação distribuída. 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 da transação.
35. Agente Supervisor de Agendador
Coordenar um conjunto de ações através de um conjunto distribuído de serviços e outros recursos remotos.
36. Comboio Sequencial
Processar um conjunto de mensagens relacionadas em uma ordem definida, sem bloquear o processamento de outros grupos de mensagens.
37. Fragmentação
Dividir um armazenamento de dados em um conjunto de partições ou fragmentos horizontais.
38. Sidecar
Implantar componentes de um aplicativo em um processo ou contêiner separado para fornecer isolamento e encapsulamento.
39. Hospedagem de Conteúdo Estático
Implantar conteúdo estático em um serviço de armazenamento baseado em nuvem que pode entregá-los diretamente ao cliente.
40. Figueira Estranguladora
Migrar gradualmente um sistema legado substituindo gradualmente peças específicas da funcionalidade por novos aplicativos e serviços.
41. Limitação
Controlar o consumo de recursos usados por uma instância de um aplicativo, um locatário individual ou todo um serviço.
42. Chave de Manobrista
Use um token ou chave que forneça aos clientes acesso direto restrito a um recurso ou serviço específico.
Ao entender e aplicar esses padrões, os desenvolvedores podem aproveitar o poder da nuvem, criando soluções que são escaláveis, resilientes e altamente eficientes.
À medida que o ecossistema de nuvem continua a evoluir, a importância dos padrões de design só aumentará. Mantendo-se informados e adotando essas abordagens comprovadas, os desenvolvedores podem navegar pela complexidade da computação em nuvem com confiança, entregando aplicativos inovadores e confiáveis que atendam às necessidades em constante mudança do cenário digital de hoje.
Recursos
https://learn.microsoft.com/pt-br/azure/architecture/patterns