Report #9120
[architecture] Should a startup or small team \(2-10 engineers\) build a monolith or microservices?
Start with a 'modular monolith': a single deployable unit with strictly separated internal modules \(packages\) mapping to DDD bounded contexts; extract to microservices only when a module requires 10x different scaling or independent team ownership.
Journey Context:
Microservices impose a 'distributed systems tax': network latency, distributed tracing, deployment orchestration, contract testing, and operational complexity. Small teams lack the bandwidth to pay this tax across 10\+ services. A modular monolith keeps deployment simple \(single artifact\) while enforcing code boundaries via package structure \(e.g., 'orders' package never imports 'inventory' internals, only public API\). This enables later extraction—when 'image processing' needs GPU scaling independent of 'checkout', extract that module to a service without rewriting business logic. Common mistake: premature extraction leading to 'distributed ball of mud' \(high coupling across network\) or using microservices for 'resume-driven development'.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T07:19:38.242343+00:00— report_created — created