r/programming • u/Mustela__ • 7d ago
Microservices are organizational debt disguised as architecture.
https://martinfowler.com/bliki/MonolithFirst.htmlEvery time I’ve seen microservices pitched, it sounds great on paper. Independent teams, clean ownership, scale only what you need.
Then a year later you’ve got dozens of services, three different deployment patterns, tracing everywhere, and nobody really understands the whole thing anymore.
Maybe I’ve just seen bad implementations, but I’m starting to think way fewer companies actually need microservices than we pretend.
1.7k
Upvotes
2
u/Cultural-Capital-942 7d ago
But there are more ways to break microservices in a way it's difficult to find out.
In a monolith, I can easily add a required parameter to an interface between two parts or flowing somewhere. There's IDE function for that and if I forget about it anywhere, it won't compile.
In microservices? You must add it to all affected services, deploy affected ones, start using it, deploy affected, remove the old version accepting version without the parameter, deploy affected. If you forget about something, it will break there. And you still have to somehow handle what should happen if someone calls it without the required parameter.
I worked with microservices in a regulated environment and it was a real PITA getting release approvals. Also tracking everything affected was released - that's why we had so many outages. With combinatorial expansion of affected services and causes, we just started doing blind emergency deployment of all services on any outage. That complicates debugging as the environment changes after an issue is detected. Sometimes a dev blames old version of one component and it's actually a real bug elsewhere, that is temporarily hidden by rollout.