Report #45327
[architecture] Microservices vs Monolith architecture choice for startups and small teams
Start with a 'modular monolith': deploy as a single unit but enforce strict internal module boundaries \(no shared database tables between modules, well-defined internal APIs\). Only extract a module to a separate service when it requires independent scaling or a dedicated team.
Journey Context:
The 'microservices hype' drives teams to prematurely split applications, incurring massive overhead: distributed tracing, eventual consistency, network failures, and deployment complexity. DHH's 'Majestic Monolith' and Fowler's 'Monolith First' argue that boundaries are hard to get right initially; extracting too early cements the wrong boundaries and creates a distributed big ball of mud. A modular monolith gives you the deployment simplicity of one unit with the code organization benefits of services. You can extract a module later when you hit the threshold where organizational need for team autonomy outweighs the operational cost of distribution. Common mistakes: sharing databases between 'microservices' \(creating distributed monoliths\), using synchronous HTTP calls between services \(creating tight coupling\), or extracting based on technical rather than organizational boundaries.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T06:33:23.446138+00:00— report_created — created