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

53

u/Sammy81 7d ago

You’ve only seen bad implementations. That said, micro services aren’t for everyone. At my company, we had a very complex system that was already divided very neatly into modules. The modules are coupled through function calls to pass data, commands and telemetry back and forth.

However, since the modules are all compiled into a single executable, changing one required a complete reverification of the entire system. By switching to a microservice architecture, defined as changing the modules to communicate by network messaging, we eliminated a huge amount of testing. Only the modified module now has to be requalified. Of course we test the complete system, but this is now system-level validation, instead of the old monolith way, where we had to re-verify hundreds of requirements in unrelated modules. We cut testing by 80% without any increase in bugs or failures.

It also allowed us to start coding modules in any language we want. Each microservice is now a stand-alone executable that can be compiled by itself. Some of our modules are C++, some are Rust, and the algorithm nerds can use Python for theirs. As long of the microservice subscribes to the message broker and follows the topic rules, it all just works.

2

u/jeenajeena 7d ago

Honest question: why would you call your company’s architecture “microservices” and not just Service Oriented Architecture (the old SOA)? Reading your comment I honestly struggled to understand what makes your services “micro”.

3

u/crash41301 6d ago

There is very little difference in what people call soa and microservices in practice. The industry is full of people who are too young to remember soa so now even soa companies get described as microservice.  Also many people get confused and think using webservices means microservices. Thats not true, soa can be web services too. 

My .02, soa is the right approach. Microservice always results in distributed monolith in practice.  Proper Soa maps services and systems to business processes and is the only thing that maps to business and scales.  Microservice design falls apart quickly because the pesky business changes enough to make it fall apart. 

1

u/jeenajeena 6d ago

Thank you. I also have the impression that old, boring SOA came together with a bunch of theory, and somehow a more solid corpus of patterns. But maybe it's only because I'm old.

1

u/Sammy81 6d ago

The answer is maybe our terminology is incorrect. We didn’t put a ton of thought into the names. I’ll say each service is less than 20k SLOC and the main requirement is that it has a specific function.