Uma forma de desenvolver sistemas onde cada pedaço pode ser pensado, desenvolvido e disponibilizado de forma independente.
(similaridades com SOA: Service Oriented Archtechture)
Microsserviços devem ser considerados, principalmente nestas situações
Percebe-se que há uma forte relação com outras práticas como:
Pois é o que possibilita a implantação (deploy) dos microsserviços de maneira independente.
Cada pedacinho do sistema (ou seja, o microsserviço em si) torna-se mais simples. Mas o sistema como um todo fica mais complexo.
Uma boa gestão e orquestração dos microsserviços se torna mandatório para o bom andamento do sistema. Também podemos chamar isso de governança.
Desenvolvimento e testes exigem uma abordagem diferente. Refatorar entre os limites de serviços se torna bastante complicado. Testar uma aplicação com muitas dependências de serviço é bastante desafiador.
"Estudos indicam" que a resolução de problemas ficam cerca de 73% mais complicadas.
Como a comunicação entre os microsserviços se dá através de um gateway de API com chamadas HTTP, a latência e o congestionamento são uma realidade. Principalmente se houverem chamadas encadeadas.
Outro desafio: maior necessidade de storage.