After a decade of watching this debate play out across multiple organizations, I’ve come to a conclusion that I rarely see articulated: the microservices vs monolith debate is fundamentally about control, not technology.
The pattern I keep seeing:
When I dig into why a team chose microservices, the stated reasons are usually technical: independent scaling, fault isolation, polyglot flexibility. But when I dig deeper, the actual driver is almost always organizational:
- “We couldn’t get the platform team to prioritize our changes”
- “The other team kept breaking our code”
- “We wanted to deploy without waiting for the release train”
These are control problems, not technology problems. Microservices are a mechanism for redistributing control away from central architecture groups toward product-aligned teams.
Conway’s Law as political archaeology:
Melvin Conway’s observation from 1967 is more relevant than ever: organizations produce systems that mirror their communication structures. But there’s a dimension that often gets missed.
Someone once told me: “You can read the history of an enterprise’s political struggles in its system architecture.” I’ve found this to be painfully accurate.
That one service that has 47 microservices while every other domain has 3? There was a power struggle there. The module that’s inexplicably isolated with its own database? Someone was protecting territory. The API gateway that routes everything through one team? Someone consolidated control.
The Inverse Conway Maneuver:
ThoughtWorks popularized the idea of intentionally designing your organization to achieve your desired architecture. Split teams into small, autonomous units with clear ownership first, and the architecture will follow.
This is powerful, but it has a shadow side: you’re not just reorganizing code. You’re reorganizing power. Who gets to make decisions? Who owns what? Who has to ask permission from whom?
When you move from a monolith to microservices, you’re telling central architecture: “You no longer control how we deploy, what languages we use, or how we structure our data.” That’s a political act.
Why the debate never dies:
The microservices vs monolith debate survives because it’s a proxy war for a deeper question: How much autonomy should teams have?
- Microservices advocates are often saying: “Trust the teams. Let them own their destiny.”
- Monolith advocates are often saying: “We need coherence. Someone has to see the whole picture.”
Both positions are valid. Neither is purely technical.
What I’ve learned:
-
Be honest about the real driver. If you’re choosing microservices because you want team autonomy, say that. Don’t hide behind “independent scaling” if that’s not the actual bottleneck.
-
Architecture won’t solve org problems. If teams can’t collaborate on a monolith, they won’t magically collaborate across service boundaries either. You’ve just made the coordination more explicit.
-
The modular monolith is a political compromise, not just a technical one. It says: “We’ll share a deployment, but respect each other’s boundaries.” That requires trust and norms, which are organizational investments.
What’s been your experience? Have you seen architecture decisions that were really about control?