Independent deploys actually fucking suck. Had to experience it to realize I really don't want it.
And of course the rest of the post is true as well. Everything become a complicated unsolvable mess.
Microservices gave us independent deployments. They also gave us 47 ways for the system to partially fail.
Before microservices:
- System was up or down
- Debugging was linear
- Outages were obvious
After microservices:
- Payments work but emails don't
- Search works but recommendations don't
- Everything is "degraded"
- Users report problems we can't reproduce
We traded simplicity for flexibility. Most days, I'm not sure we got the better end of that deal.
The question I wish I'd asked: Are we prepared to debug distributed systems, or just excited about deploying them independently?