Report #94518
[architecture] Splitting into microservices prematurely based on 'best practices' for a team under 10 people
Start with a Modular Monolith enforcing strict internal boundaries \(hexagonal architecture, package-by-feature\) and extract to services only when Conway's Law mandates \(team size > 8-10, independent deployment cadences, or divergent scaling/tech requirements\); keep the code modular to allow extraction without rewrite.
Journey Context:
Microservices trade code complexity for operational complexity \(network latency, distributed tracing, cascading failures, schema evolution\). Small teams lack the operational bandwidth to manage service meshes, CI/CD pipelines per service, and distributed debugging. The error is confusing 'modularity' \(code separation\) with 'distribution' \(network boundaries\). A modular monolith allows strict enforcement of bounded contexts \(ports/adapters\) without the network tax, enabling later extraction when the organizational structure \(Conway's Law\) actually requires independent deployability. Premature extraction creates a 'distributed monolith'—tight coupling over the network—which has the worst properties of both architectures.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T17:14:01.997251+00:00— report_created — created