Report #13080
[architecture] Decomposing into microservices for small teams \(<10 developers\)
Start with a modular monolith: enforce strict internal boundaries \(separate packages/modules per domain\) but deploy as a single unit. Do not extract microservices until you have >10 engineers OR specific components need independent scaling/deployment cadence that causes actual \(not hypothetical\) operational pain.
Journey Context:
Microservices impose 'distributed systems tax': network latency, eventual consistency, distributed debugging, operational complexity \(N deployments, N databases, N on-call rotations\). Small teams \(<10\) cannot afford this overhead while moving fast. 'Modular monolith' keeps code organization benefits \(clear bounded contexts, separate packages\) without distributed systems pain. You can extract later when a module has independent scaling needs or team ownership. Premature extraction creates 'distributed big ball of mud'—worst of both worlds. Common mistakes: extracting for 'clean architecture' aesthetics rather than scaling needs, assuming 'serious' systems need microservices, or extracting before domain boundaries are stable \(high refactoring cost across services\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:44:25.648671+00:00— report_created — created