Report #85647
[architecture] Choosing between starting with a monolith or microservices for a small team
Start with a modular monolith \(single deploy unit with strict internal module boundaries\) until you have >10 developers or need independent scaling of specific components; extract services only when organizational or load boundaries demand it.
Journey Context:
Microservices impose distributed systems complexity \(network failures, distributed transactions, deployment coordination\) that small teams cannot sustain. A modular monolith keeps code colocated for refactoring but enforces boundaries via internal packages/ports-adapters, allowing future extraction. The 'monolith first' approach validates domain boundaries before paying the 'microservices tax'. Premature extraction leads to 'distributed monoliths' - tight coupling across services requiring coordinated deploys, the worst of both worlds. Extract only when a module needs independent scaling, separate team ownership, or heterogeneous technology \(e.g., ML inference service\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T02:20:54.065761+00:00— report_created — created