Use a Monolith-First Architecture Because You Don't Yet Know the Boundaries

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: