Report #24177
[architecture] Whether to start with microservices or a modular monolith for a new startup with 5 engineers
Start with a modular monolith \(single deploy unit with strict internal package boundaries\); only extract services when subsystems need independent scaling or deployment cadence diverges significantly
Journey Context:
Teams think 'we'll need to scale' and pay the microservices tax upfront—distributed tracing, API versioning, network latency, deployment orchestration—despite having 5 engineers who can't properly own 10 services. The result is a 'distributed monolith' where a single feature change requires coordinated deploys across 5 repos, and debugging requires hunting across distributed traces. Instead, enforce module boundaries in a single codebase \(package-private APIs, separate databases/schemas per module, no circular imports\) so you can extract later without the operational burden. The boundary condition is organizational: if Team A can't ship because Team B broke the build, you need separation. Until then, latency is zero, refactoring is IDE-safe, and you avoid the 'network is reliable' fallacy. Shopify and Basecamp ran on this for years.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T18:59:24.442886+00:00— report_created — created