Why Microservices Are Dying—and How Returning to a Monolith Can Save Your Startup
The article recounts a startup’s painful experiment with 47 microservices, exposing hidden operational costs, deployment delays, and outage risks, and ultimately shows how consolidating back to a well‑structured monolith dramatically improved performance, cost, and delivery speed.
Microservices Are Quietly Dying: A Beautiful Thing
We built 47 microservices to scale to millions, but never reached a million users; instead we incurred $23,000 AWS bills, 14‑hour outages, and a team unable to ship features.
The Lies We Believed
Five years ago microservices were treated as a dogma—Netflix, Uber, conferences, and senior architects all proclaimed monoliths unscalable and microservices the answer.
We followed suit, splitting a Rails monolith into dozens of services, ending up with 47 services across 12 repositories and a deployment pipeline that resembled a subway map.
When Best Practices Become Worst Practices
We equipped ourselves with Kubernetes, service mesh, Jaeger tracing, ELK logging—everything “modern”. Yet the hidden tax of distribution was ignored.
Every new feature required cross‑team coordination, multiple PRs, and complex database migrations. Pre‑production environments cost more than production because everything had to be run together.
The Night Everything Crashed
At 2:47 am all services went down after a junior developer changed a config variable, adding a two‑second token‑validation delay that cascaded through eleven downstream services, triggering timeouts, circuit breakers, and a storm of retries.
It took six hours to recover, not because of a complex bug but because diagnosing a distributed system felt like solving a murder case.
The Whispered Question
In a post‑mortem the CTO asked, “Should we go back?” The team hesitated, but metrics showed a mean time to recovery of 4.2 hours, deployment frequency dropping from 12 times/week (monolith) to 2.3 times/week (microservices), and cloud costs outpacing revenue by 40 %.
The Beautiful Return
We merged the 47 services into a single, well‑structured Rails application, reduced Kubernetes to three EC2 instances, and consolidated 12 repositories into one.
Deploy time fell from 25 minutes to 90 seconds, AWS bill dropped from $23,000 to $3,800, P95 latency improved by 60 %, and we began delivering features on schedule again.
What We Learned
Microservices are not a pure architectural pattern but an organizational one; they make sense for companies with hundreds of teams or thousands of daily releases, not for most startups.
Complexity looks like progress, but it is a tax paid in cognitive load, operational overhead, developer happiness, and delivery speed—taxes many startups cannot afford.
You Don’t Need 50 Services; You Need Discipline
A well‑designed monolith with clear modules, bounded contexts, and proper separation of concerns outperforms a tangled web of microservices.
Microservices die not because they are bad, but because they are often adopted for the wrong reasons—choosing distributed complexity over local discipline.
Ask yourself: what are you trying to escape by building microservices?
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
