Os microsserviços são uma arquitetura e uma abordagem para escrever programas de software. Com eles, as aplicações são desmembradas em componentes mínimos e independentes. Diferentemente da abordagem tradicional monolítica em que toda a aplicação é criada como um único bloco, os microsserviços são componentes separados que trabalham juntos para realizar as mesmas tarefas.
Uma determinada parte da aplicação está onerando muito servidor.
Integração de código, ou seja você tem um time muito grande utilizando o mesmo repositório de código e está perdendo o controle
Você tem um monólito que está atendendo bem.
Se você tem um monolito e algum serviço dele está gerando problemas de escalabilidade e integração de código, por que não só tornar este serviço como Microserviço? Você não precisa migrar tudo!!
Se usada sem necessidade pode gerar esforço de tempo da equipe e custo de infraestrutura até por que por ser uma arquitetura distribuida você precisa adicionar mais controles:
Em uma arquitetura Microserviço temos muitos patterns, a Netflix teve a necessidade de implementar esses patterns abriu para a comunidade: https://netflix.github.io/
Legal né! :)
| Pattern | Implementação Netflix |
|---|---|
| Service Discovery | Eureka |
| Circuit Breaker | Hystrix |
| Intelligent Routing | Zuul |
| Client Side Load Balancing | Ribbon |