Aplicações modernas, como utilizar ? Quais tecnologias usar ?( AppMod Parte 2 )

Jaime Nagase
3 min readMar 20, 2024

--

Dando continuidade a parte 1 sobre AppMod que você pode ler aqui! Entramos agora em como utilizar as Aplicações Modernas de forma de forma consciente, ou pelo menos, aquilo que eu acho ser consciente.

Bom, vamos lá: para atingir todos os benefícios listados no artigo anterior algumas tecnologias, arquiteturas, e design de software devem ser adotadas, entre elas destaco:

  1. Tecnologias
  • Containers: Promovem portabilidade e eficiência operacional, assegurando que a aplicação funcione da mesma maneira em diferentes ambientes.
  • Microservices: Permitindo que diferentes equipes gerenciem serviços distintos, os microservices facilitam o isolamento de falhas. Se um serviço apresenta problemas, isso não impacta diretamente os outros, mantendo a estabilidade do sistema como um todo. Isso é crucial para sistemas grandes, onde várias equipes trabalham simultaneamente em diferentes partes do sistema.
  • Serverless: Reduzem custos e complexidade operacional, permitindo foco no desenvolvimento de negócios em vez da gestão de infraestrutura. E possui alta disponibilidade de seus serviços.
  • API First e APIs RESTful/GraphQL: Ao adotar uma abordagem API First, o design e a especificação da API são priorizados, assegurando que as APIs sejam robustas, bem documentadas e centradas nas necessidades dos usuários. Isso também facilita o gerenciamento de limites de uso (throttling) para evitar a sobrecarga dos serviços. Combinado com APIs RESTful e GraphQL, que oferecem métodos flexíveis e eficientes de comunicação entre serviços, essa estratégia melhora a interoperabilidade e a eficiência dos sistemas.
  • Bancos de dados NoSQL: Oferecem soluções versáteis para o gerenciamento de dados, suportando escalabilidade e desempenho otimizados.

2. Arquiteturas:

  • Arquitetura baseada em eventos: Agiliza os processos ao permitir que os componentes reajam a eventos em tempo real, facilitando a escalabilidade.
  • Arquitetura Orientada a Serviços (SOA): Proporciona flexibilidade na integração de sistemas, permitindo a reutilização de serviços.
  • Arquitetura baseada em nuvem (Cloud-native): Aproveita a escalabilidade e resiliência da nuvem, assegurando a eficiência e disponibilidade das aplicações.
  • Arquitetura Hexagonal: Separa a lógica de negócios das interfaces externas, facilitando testes e manutenção.
  • 12-Factor App: Estabelece práticas para desenvolvimento de software que aumentam a portabilidade e a escalabilidade em ambientes de nuvem.

3. Padrões de Design de Software:

  • Model-View-Controller (MVC): Ajuda na organização do código, promovendo a separação entre lógica de negócios, apresentação e interação do usuário.
  • Singleton: Restringe a instanciação de uma classe a um único objeto, garantindo um ponto de acesso global.
  • Factory Method: Permite a criação de objetos sem especificar a classe exata que será instanciada, aumentando a flexibilidade do código.
  • Domain-Driven Design (DDD): Enfatiza a modelagem complexa do domínio de negócios, facilitando a comunicação e a criação de software mais robusto e coeso.

A ideia por trás destas melhores práticas é segregar corretamente partes do ecossistema de forma que sejam interdependentes e que reflitam sua organização de tal forma que um time não impacte o outro, assim como uma unidade de negócios não impacte a outra!

Além disso, usando Microserviços, em containers ou serverless, você consegue escalar serviços independentes onde realmente há a necessidade, possuindo assim escalabilidade no lugar certo, evitando custos desnecessários.

Afinal usando as tecnologias e arquiteturas corretas você consegue melhorar seu SLA e evitar grandes incidentes!

Apenas lembrando que essas são apenas algumas melhores práticas, ainda existem outras mais que não listei e que possivelmente eu desconheça!

Abs!

--

--