Report #17241
[architecture] Premature microservice decomposition creating operational complexity for small teams
Start with a modular monolith enforcing strict internal boundaries \(package-by-feature, internal APIs, separate persistence per module\) and extract services only when Conway's Law requires team autonomy or independent scaling of a specific module.
Journey Context:
Small teams often split services by technical layer \(frontend, backend, API\) or premature domain boundaries, creating a distributed monolith where changes require coordinated deploys across services, yet they lack the DevOps bandwidth to manage distributed tracing, circuit breakers, and eventual consistency. The 'Modular Monolith' pattern recognizes that deployment units should follow organizational communication patterns \(Conway's Law\), not technical idealism. By enforcing module boundaries internally—using package visibility modifiers, internal REST/gRPC interfaces, and schema-per-module database separation—teams gain the development velocity of a single codebase while preserving the ability to split out high-churn modules later. Extraction becomes a routing change \(internal call → network call\) rather than a rewrite. The anti-pattern is 'distributed big ball of mud'—this prevents it by keeping complexity localized until scale demands distribution.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T04:50:41.597264+00:00— report_created — created