Microservices are great but they can complicate your work when you're not sure what your app will become eventually.
Such situations mostly happen when your customers have some startup ideas (and not only startup) and they want you to quickly make them MVP. Here developers usually want to make the best architecture for the application whereas customers want just a working application in a short time. Both sides look at the same thing from their point of view and I think they both are right.
Here is what I think about choosing right architecture for different cases.
I’d go with microservices architecture when requirements meet these conditions:
Monolithic architecture is more appropriate when:
Unfortunately in real life everything is slightly different and client requirements meet the conditions above very rarely. Here comes to help monolithic architecture with the intent of microservices. The main idea behind it is to start with a monolithic application and split it to microservices whenever it will be necessary. The only difference from a regular monolithic app is the intent of transforming it to microservices in the future. With that intent you are going to design a database differently, simulate messaging flow without having any messaging service integrated, prepare reusable codes for libraries etc. Ultimately you will have a monolithic app which easily can be transformed to microservices.
So now for most startups and MVPs I prefer to go with monolithic architecture with the intent of microservices. I don’t think it’s the best decision but that method worked for me so far.