It’s difficult to start with microservices because that requires knowing more about the domain and boundaries within the domain that one could know up front. Due to lack of understanding, a microservices-first architecture often fails and it’s easier to start with a monolith and slowly peel away services.
In my own experience, I’ve found this to be largely true. You don’t yet know the right abstractions, even if it’s a familiar problem.
See also:
- Software architectural pattern
- Integrating between AWS services adds incidental complexity is a corollary and this occurs even with using a small number of services.