DEV Community

loading...

Introdução a microserviços

thierrysantos profile image Thierry Santos ・2 min read

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

Discussion (0)

pic
Editor guide