We need to talk about something that’s been quietly happening across the industry: the microservices retreat.
According to the 2025 CNCF survey, 42% of organizations that initially adopted microservices have consolidated at least some services back into larger deployable units. The primary drivers? Debugging complexity, operational overhead, and network latency issues that impacted user experience.
This isn’t a hot take from a blogger. This is survey data from the Cloud Native Computing Foundation itself.
Our Own Reckoning
I lead a 40-person engineering team at a Fortune 500 financial services company. Three years ago, we went all-in on microservices. We decomposed our core platform into 12 services because… well, because that’s what you did in 2022 if you wanted to be “modern.”
Last year, we consolidated back to 3 modular services. The results:
- Deployment time: 45 minutes → 12 minutes
- Debugging time per incident: 4 hours average → 1.5 hours
- AWS monthly costs: Down 35%
- Developer velocity: Features shipping 2x faster
Was I embarrassed? A little. Was our team relieved? Absolutely.
The Amazon Wake-Up Call
When Amazon Prime Video published their case study showing a 90% infrastructure cost reduction by moving their video monitoring from microservices to a monolith, it gave permission for the rest of us to have this conversation openly.
Even Amazon’s CTO Werner Vogels said it best: “Building evolvable software systems is a strategy, not a religion. And revisiting your architectures with an open mind is a must.”
If Amazon—the original poster child for service-oriented architecture—can admit that microservices weren’t the right fit for a specific use case, why are the rest of us still pretending?
The Real Problem: We Built for the Wrong Scale
Looking back at our microservices adoption, we fell into classic traps:
-
Team size mismatch: We had 8 developers managing 12 services. The emerging industry consensus is:
- 1-10 developers → Build monoliths
- 10-50 developers → Modular monoliths
- 50+ developers → Microservices might be justified
-
No real scaling needs: We didn’t have different components that needed to scale independently. We just… assumed we would someday.
-
60% overhead: According to DZone research, teams spend 35% more time debugging microservices than modular monoliths. For us, it was worse—we were spending more time on service mesh configuration than shipping features.
-
The deployment lie: 90% of microservices teams still batch deploy like monoliths anyway. We did. So what was the point?
The Modular Monolith: The Middle Ground Nobody Talks About
What we landed on was a modular monolith architecture:
- Clear module boundaries enforced through internal interfaces
- Separate database schemas within the same database
- Could theoretically extract to services if needed—but we haven’t needed to
- Single deployment but organized codebase
This gives us the architectural discipline without the distributed systems tax.
When Microservices Actually Make Sense
I’m not saying microservices are never the answer. They make sense when:
- You have 50+ engineers who genuinely need independent deployment
- Different components have wildly different scaling requirements
- You have a dedicated platform/DevOps team to manage the complexity
- You’ve actually hit scaling limits with a monolith (not theoretical ones)
For everyone else? The modular monolith is probably your answer.
Questions for This Community
- Has anyone else gone through a microservices → consolidation journey? What triggered it?
- How do you have this conversation with leadership who bought into the microservices vision years ago?
- For those still on microservices: Are you genuinely seeing the benefits, or managing complexity for complexity’s sake?
Would love to hear from both sides. This isn’t about declaring winners—it’s about making honest architectural decisions for our actual contexts.