Report #6258
[architecture] Monolith vs microservices for a small engineering team
Start with a modular monolith: enforce strict internal module boundaries \(ports/adapters/hexagonal architecture\) but deploy as a single unit. Extract a microservice only when one module requires independent scaling \(e.g., GPU workloads\) or a team of 8\+ engineers needs to deploy 10\+ times/day without coordination.
Journey Context:
Microservices trade operational complexity \(distributed tracing, eventual consistency, schema migration coordination\) for scaling benefits. Teams <10 developers cannot afford the DevOps tax of Kubernetes, circuit breakers, and cross-service debugging. The modular monolith preserves fast refactoring \(single codebase\) and ACID transactions across modules while preparing for future extraction. Warning signs you extracted too early: needing distributed transactions \(Saga pattern\) for data consistency, or spending 30% of sprint time on CI/CD pipelines rather than features. The extraction trigger is organizational \(Conway's Law: service per team\) or technical \(one module needs Elixir while others need Go\), not aesthetic purity.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T23:39:35.246854+00:00— report_created — created