Microservices come with many drawbacks. Two that I’ve noticed in practice:
Deploying microservices is hard
The operational complexity of running and coordinating many services is not trivial.
Each service needs its own deployment pipeline, observability and rollback story. Great tools exist for this exact problem, but they add additional complexity.
Dependencies and environment requirements tend to diverge
Each team picks its own libraries, language versions and runtime images. Over time the fleet drifts and shared platform work becomes painful.