Why I Stopped Writing Microservices for Everything
2026-03-20 · #architecture
Three years ago, I was the person who wanted to split every bounded context into its own service, its own repo, its own deploy pipeline. It felt clean. It felt right.
Then I spent six months debugging distributed transactions, fighting with service mesh configs, and explaining to my team why a simple feature now required changes in four repos.
The turning point
We had an incident where a request touched 7 services. The latency was fine, but the cognitive overhead of tracing it was not. Our P95 debug time had doubled since the migration.
What I do now
Start with a well-structured monolith. Extract only when you have a proven scaling bottleneck or a genuinely independent domain. The modularity should live in your code, not necessarily in your infrastructure.
A monolith with good boundaries beats microservices with bad ones. Every time.