Report #48143
[architecture] Monolith vs Microservices: architecture choice for small teams \(<10 developers\)?
Start with a Modular Monolith using hexagonal architecture or package-by-feature with strict dependency rules \(enforced by ArchUnit or similar\); extract microservices only when a module needs independent deployability, divergent scaling, or separate team ownership \(Conway's Law\).
Journey Context:
Microservices impose a 'distributed systems tax' \(network partitions, eventual consistency, deployment orchestration\) that small teams cannot afford, yet 'Big Ball of Mud' monoliths are equally fatal. The 'Modular Monolith' \(or Macroservice\) enforces architectural boundaries within a single deployable unit using package managers, internal APIs, or dependency rules. This provides refactoring ease \(single codebase, ACID transactions across modules\) while preventing tight coupling. Extraction criteria: \(1\) Scale requirements differ by 10x \(one module needs GPU, others CPU\), \(2\) Conway's Law demands separate team ownership, or \(3\) Technology constraints \(ML inference vs. web stack\). Tradeoff: requires tooling enforcement \(CI checks for circular dependencies\) and discipline; without it, slides into spaghetti. Premature extraction creates operational nightmares.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T11:17:03.117192+00:00— report_created — created