sábado, 27 de abril de 2024

O que são Microserviços?


Fala pessoal, tudo bem?

Hoje o assunto é microserviços. 

Imagine que você está construindo uma cidade, mas em vez de construir um único prédio gigante, você decide construir vários prédios menores, cada um com sua própria função específica. Isso é basicamente o que são os microserviços - uma abordagem de desenvolvimento de software onde um aplicativo é dividido em vários serviços independentes e autônomos, cada um focado em uma única função ou tarefa.

Cada microserviço opera de forma independente, o que significa que pode ser desenvolvido, implantado e escalonado separadamente dos outros. Isso oferece uma série de vantagens:

  • Escalabilidade e Flexibilidade: Como cada microserviço é independente, você pode escalá-los individualmente de acordo com a demanda, o que resulta em um sistema mais flexível e eficiente.
  • Desenvolvimento Ágil: Equipes podem trabalhar em serviços separados sem interferir umas nas outras, permitindo um desenvolvimento mais rápido e iterativo.
  • Resiliência e Tolerância a Falhas: Se um microserviço falhar, isso não afetará necessariamente todo o sistema, pois outros serviços podem continuar funcionando normalmente.
  • Tecnologia e Linguagens Diversificadas: Como os microserviços são independentes, você pode usar diferentes tecnologias e linguagens de programação para cada um, escolhendo a mais adequada para cada tarefa específica.

Segue um exemplo de uma arquitetura envolvendo microserviços:



Client Apps

Hoje os acessos aos serviços acontecem tanto por smartphones quanto por acesso web, ou até ambos.

API Gateway

Existe uma camada chamada API Gateway que é para fazer o roteamento das aplicações/endpoints aos seus respectivos microserviços.

Microserviços

Os microserviços com seus bancos respectivos bancos de dados.

Fila/Mensageria

Uma fila de mensagens onde um ou mais serviços podem postar e consumir.

Trazendo um exemplo mais do nosso dia-a-dia, é comum que todos nós façamos compras online. 

Para isso, acessamos o nosso site de e-commerce preferido, podemos já no primeiro momento nos autenticar ou não, navegar pelos produtos, adicionar produtos no carrinho, efetivar a compra, etc ... Aqui cada empresa terá seu modelo, com suas características, coisas a mais, coisas menos ... mas em essência é isso.

Então, nós teríamos uma arquitetura de microserviços mais ou menos assim:



Arquitetura de Microserviços para um E-commerce

No entanto, gerenciar um sistema baseado em microserviços também apresenta desafios, como a complexidade na comunicação entre serviços e a necessidade de uma infraestrutura robusta de monitoramento e gerenciamento. Em resumo, os microserviços oferecem uma abordagem flexível e escalável para o desenvolvimento de software, permitindo a construção de sistemas mais ágeis e resilientes.

Os microserviços são hospedados e rodam em containers e dado a quantidade de microserviços que podemos ter no ambiente, a complexidade para gestão disso aumenta também.

Aqui entra o Kubernetes, uma poderosa ferramenta para fazer a gestão/administração de containers.

Isso vai ser assunto para um próximo post.


Abs e até a próxima.
:wq!