Pesquisei arquiteturas de microsserviços tentando obter uma visão geral de alto nível de todos os prós e contras, por que e por que, etc. Muitas das informações que estou lendo / assistindo são provenientes da ThoughtWorks (Martin Fowler, Neal Ford, etc.). al).
A maior parte do trabalho de Martin Fowler sobre o assunto tem alguns anos, quando a Microservices (como um nome familiar em programação, se não na prática geral) ainda era jovem, por isso tomo muito disso com um pouco de sal.
Uma coisa em particular é esta:
Ao ouvir histórias sobre equipes que usam uma arquitetura de microsserviços, notei um padrão comum.
- Quase todas as histórias de microsserviços bem-sucedidas começaram com um monólito muito grande e dividido
- Quase todos os casos em que ouvi falar de um sistema que foi construído como um sistema de microsserviço do zero, acabaram em sérios problemas.
Esse padrão levou muitos de meus colegas a argumentar que você não deve iniciar um novo projeto com microsserviços, mesmo que tenha certeza de que seu aplicativo será grande o suficiente para fazer valer a pena. .
(ref: https://martinfowler.com/bliki/MonolithFirst.html - ênfase deles)
Agora, três anos depois e com microsserviços um termo mais onipresente, é geralmente aceitável que um novo sistema seja tipicamente melhor atendido por ter blocos de serviço maiores (-sem-microsserviço-mas-menor-que-monólito) para começar e fazer eles mais granulares como parte de uma medida evolutiva?
Ou existe uma norma para iniciar um projeto do zero com uma arquitetura granular de microsserviços, em contraste com as declarações acima?
Parece uma abordagem geral sã, mas curiosa dos pensamentos da comunidade.