Abílio Azevedo.

Padrões de design na nuvem

Cover Image for Padrões de design na nuvem
Abílio Azevedo
Abílio Azevedo

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.

Leia mais

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


Mais posts

Cover Image for A psicologia do Dinheiro

A psicologia do Dinheiro

Morgan Housel oferece insights valiosos sobre a gestão financeira e tomada de decisões. O autor enfatiza que o sucesso financeiro depende mais do comportamento do que da inteligência ou conhecimento técnico. Housel destaca a importância da visão de longo prazo e da resiliência diante da volatilidade do mercado, encorajando a forcamos na sustentabilidade em vez de ganhos de curto prazo.

Cover Image for Bellsant

Bellsant

Estou na vanguarda do desenvolvimento de um aplicativo de saúde e bem-estar de ponta. Nossa pilha de tecnologia combina React Native para desenvolvimento móvel multiplataforma com um backend NodeJS sem servidor, aproveitando o AWS Lambda para escalabilidade e eficiência de custos.

Abílio Azevedo
Abílio Azevedo

NewsLetter

Eu enviarei o conteúdo postado aqui no blog. Sem Spam =)

Engenheiro de software experiente, formado em Engenharia Elétrica, com mais de 10 anos de experiência prática na construção de aplicativos móveis, web e back-end robustos e escaláveis em vários projetos, principalmente no setor de fintech. Mobile (React Native), Web (React e Next.JS) e Backend (Node.JS, PHP e DJANGO). Meu objetivo é criar produtos que agreguem valor às pessoas. - © 2024, Abílio Azevedo