For a small team and an unproven domain, microservices usually impose distributed-systems tax — network failures, eventual consistency, distributed tracing, and per-service CI/CD — without the payoff, so I'd recommend a well-modularized monolith with clear bounded contexts first.
The legitimate triggers are organizational (Conway's Law: many teams needing independent release cadence) and technical (components with very different scaling or availability profiles). Get the module boundaries right in the monolith, then extract along those seams with the strangler-fig approach rather than a big-bang rewrite.
- Splitting before the domain boundaries are understood.
- Ignoring the operational cost: deployments, monitoring, network failures.