A few years ago, we reached for microservices on every project. Now we reach for a modular monolith first, and break things out only when we have a clear reason.
The reason is simple. Microservices solve organizational problems by introducing distributed systems problems. If you do not have the organizational problems yet, all you have done is bought yourself the distributed systems problems.
Modular monoliths give you most of the upside — clear boundaries, independent testing, swappable implementations — without the operational tax of multiple services, networks, and databases.
The framing we use: start with a monolith with hard module boundaries. Extract services only when ownership, scaling, or deployment cadence forces your hand. The default should be the boring choice.