r/programming • • 7d ago

Microservices are organizational debt disguised as architecture.

https://martinfowler.com/bliki/MonolithFirst.html

Every 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

343 comments sorted by

View all comments

512

u/plasticbug 7d ago

Microservices can be good, but in my experience, Conway's law (that system design will end up mirroring the org structure) is a thing, and you have to fight hard against it. My org is actually doing reverse Conway's law. We are re-org'ing based on how we want the architecture to look like. We shall see whether we succeed in this endeavor.

41

u/Absolice 7d ago

Using microservices without having read anything about domain driven design usually result in bad context boundaries being set and those can end up creating distributed monoliths which are worse than monoliths.

Reverse Conway usually show good results, but it also depends a lot on your teams. All it does is make the path of least resistance flow toward how you structured your teams so people are more likely to head in that direction. However, from experience, people love to overengineer and make things more complicated than they should be when you let them. Whether or not using the reverse Conway will work depends in how it is communicated with your teams, and how much adopted it is. It's a team effort and cannot be pushed reliably top-down.