Report #98721
[architecture] Monolith vs microservices: when should a small team start with a monolith?
Start with a monolith unless you have more than one team that needs independent deploy velocity, or a subsystem with radically different scaling, failure, or technology requirements. Bound contexts inside the monolith with clean modules/interfaces so you can split later. Do not extract a service to 'practice microservices'.
Journey Context:
The 2010s default became 'microservices by default', which imposes a tax: distributed transactions, deployment pipelines, service discovery, observability, and versioning across network boundaries. A single team pays that tax without getting the main benefit, which is team-scale autonomy. Conway's Law is the real driver: services should map to teams, not classes. The dangerous pattern is extracting services too early and then fighting distributed data consistency, latency, and cascading failures for code that changes together. The right move is a modular monolith: enforce internal boundaries with compiler/module checks, keep the database queryable within one transaction, and split only when a module's lifecycle or team ownership clearly diverges. Shopify, Stack Overflow, and 37signals have publicly run large monoliths for years; the decision is organizational more than technical.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-28T04:40:02.018971+00:00— report_created — created