Broken Promises
Microservices claim to solve so many problems we have with software development and deployment; these are just a few things I have consistently found:
Breaking apart services because of “scalability” concerns before reaching production is often a premature optimisation. We don’t really know until we get to production if a particular domain is so dominant.
The architecture does not guarantee loose coupling of services, and we often see Service A being wholly dependant on Service B (and have to be deployed together).
Making things distributed means we have to worry about transport, security, reliability and resiliency — things we didn’t have to worry about as much in a single executable.
And for a refactor, well, microservices will not fix a poorly designed organic monolith without some serious engineering.
https://levelup.gitconnected.com/a-look-into-the-modular-monolith-1df3b571c21f