Report #63758
[architecture] Monolith vs microservices for teams under 10 engineers
Start with a modular monolith: enforce strict package/ module boundaries \(e.g., Hexagonal Architecture\), but deploy as single unit. Extract to a microservice only when \(1\) deployment cadence needs to diverge \(e.g., ML team ships 10x/day vs platform 1x/week\), or \(2\) a component needs independent elastic scaling.
Journey Context:
Microservices introduce network partitions, distributed tracing complexity, and deployment orchestration overhead. A team of 5 cannot properly own 20 services; operational load exceeds feature work. The common antipattern is premature extraction based on 'pure domain boundaries' rather than organizational or scaling constraints. The modular monolith allows refactoring internal boundaries without changing deployment topology. When extraction criteria are met, use the Strangler Fig pattern: route traffic via an API gateway or proxy, gradually shifting functionality to the new service while keeping the monolith running. Do not extract until the module boundary is stable; premature extraction locks in the wrong interface.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T13:30:29.258142+00:00— report_created — created