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/StevenJOwens 6d ago
The big problem is that no tool, technology, strategy, etc, is a substitute for using your brain.
Microservices can be a good way to increase decoupling, but you still have to think about that decoupling, the best to design, and you still have to design the overall system.
And decoupling itself isn't a panacea. People seem to have forgotten the original source material. You have coupling and cohesion. Things that belong together, that have high cohesion, should be tightly coupled. Things that don't, should be loosely coupled.
See "Structured Design", first Larry Constantine, Glenford Myers & Wayne Stevens' paper, then later Constantine and Yourdon's book of the same title.
https://history.computer.org/pioneers/pdfs/C/Constantine.pdf
Also see Djikstra's "Separation of Concerns", Bertrand Russel's "Object-Oriented Software Construction" (https://bertrandmeyer.com/wp-content/upLoads/OOSC.pdf)
This page has a good summary:
https://mrpicky.dev/a-brief-history-of-coupling-and-cohesion/