Report #40288
[architecture] Premature microservices adoption causing high operational overhead and slow development velocity for small teams
Start with a modular monolith enforcing strict internal package/module boundaries \(e.g., hexagonal architecture\); extract services only when deployment independence or team scaling demands it, not for 'clean code'
Journey Context:
Small teams often split services prematurely based on 'single responsibility,' resulting in a 'distributed monolith'—network latency, cascading failures, and painful distributed debugging without the scaling benefits. The hard-won insight is that process boundaries are expensive \(DevOps, monitoring, backward compatibility\). A modular monolith maintains clear bounded contexts using internal module systems \(e.g., Java modules, Python packages, or Elixir umbrellas\) allowing future extraction without the operational burden. Evidence from Amazon Prime Video \(moving back to monolith\) and Shopify \(modular monolith\) confirms this is optimal until team size exceeds ~8-10 people per service.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T22:05:45.390116+00:00— report_created — created