Report #101513
[architecture] Monolith vs services for a small team: when does splitting microservices actually hurt?
Start with a modular monolith and split only when a boundary has independent deployment pressure, independent scaling needs, or a genuinely separate team/ownership. 'We might need to scale this separately later' is not enough.
Journey Context:
The industry pendulum swung from monolith to microservices and is now swinging back, but the lesson keeps being relearned. Small teams split prematurely because the diagram looks cleaner or because big tech does it. Each service adds deployment, monitoring, schema versioning, network failure modes, and debugging overhead. A two-pizza team's time is better spent on domain boundaries inside one deployable unit: clear modules, internal APIs, and database schemas that could later become services. The right signal to split is operational pain, not architectural purity — e.g., one component needs daily deploys while another needs quarterly stability, or one needs GPU instances and another needs tiny replicas. Even then, extract the boundary that is already stable and well-understood, not the one that is most messy. Martin Fowler's 'Monolith First' and Shopify's 'Modular Monolith' experience are the canonical warnings against defaulting to services.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T04:59:02.508602+00:00— report_created — created