No technology is perfect and using microservices has its own drawbacks. As the saying goes, there are no silver bullets.
We mentioned that microservices have their own database schema. Therefore, you can't have transactional updates for your domain models as you usually do when dealing with a monolithic application using one database. Your system will eventually end up being consistent, and that comes with its own bag of challenges.
Implementing a change that will end up touching more than one service has its own complexity. In a monolithic application, these things are quite straightforward. All you have to do is change the modules required and then deploy all of them in one go. But, for a distributed microservices system, where there are dependencies between services, you need to plan the upgrade. You will end up deploying the service that all the other ones depend...