O que é
É um estilo arquitetural que estrutura uma aplicação como um conjunto de serviços.
Focado em fazer uma coisa bem
Com o passar do tempo nossas aplicações tendem a crescer e ficar mais dificil saber onde fazer uma mudança, os códigos relacionados acabam ficando espalhado, corrigir um bug ou uma implementação fica cada vez mais difícil.
No nosso dia a dia nós lutamos para que coisas citada acima não ocorra, com isso criamos abstrações e módulos para deixar nossa aplicação mais coesa.
Coesão é a ideia de você agrupar código relacionado em um único lugar, é um importante tópico quando pensamos em microserviços.
Benefícios
-
Multiplas tecnologias
Como cada serviço é autonomo, você pode utilizar diferentes tecnologias, isso significa que você não precisa manter o mesmo banco de dados ou linguagem para todas os serviços.
-
Resiliencia
Se o serviço falhar, isso não faz com que seu sistema fique completamente fora, pois cada serviço é isolado, isso faz com que seu sistema fique funcionando parcialmente.
-
Escalabilidade
Podemos escalar somente os serviços necessários, diferente de um sistema monolitico que precisamos escalar a aplicação como um todo.
-
Deployment
Podemos fazer um deploy independente dos outros serviços, se ocorrer um problema, ele está isolado do resto do sistema.
-
Alinhamento organizacional
Você provavelmente já experienciou problemas com um time grande e uma grande base de código, normalmente times menores com menores base de código tendem a ser mais produtivos.
No Silver Bullet
Antes de seguirmos precisamos entender que microserviços não são as mil maravilhas, com ele vem toda complexidade de sistemas distribuidos, você adiciona um overhead que pode acabar mais atrapalhando do que ajudando, então vale entender se vale ou não a pena mudar sua arquitetura.
Projeto
Para aprender os demais conceitos iremos desenvolver uma aplicação adicionando monitoramento, testes, deployment, bancos de dados, modelando os serviços e o mais importante, entendendo os trade-offs de cada decisão.
Repositório: https://github.com/thierrysantos/microservice-example
Top comments (0)