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:
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.
:wq!
Nenhum comentário:
Postar um comentário