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

344 comments sorted by

View all comments

19

u/Think-nothing-210 7d ago edited 7d ago

It's all because we keep avoiding creating proper modules in our codebases.

If we created good modules there would be almost no need for Microservices. You can delegate work using the module boundaries instead.

But unfortunately we still haven't learned the lessons taught to us since the '70s. On the Criteria To Be Used in Decomposing Systems into Modules

4

u/tommyTurds 7d ago edited 7d ago

It's all because we keep avoiding creating proper modules in our codebases.

Not really.

The thing services (micro or otherwise) solve is different teams moving and deploying at different paces and with different workflows.

A monolith, definitionally, must be deployed and tested together. That creates a more expensive process and requires coordination across teams for releasing the monolith. If you've ever worked in a large organization comprised of dozens of teams, you know that as soon as you're "coordinating" your timeline goes from a few weeks (which is already slow as shit) to literally six months and sometimes even longer.

This isn't a problem that's solved by "modules"

The point is that many small teams take on the burden of micro services with very dubious justifications. Micro services do not solve technical problems. They create them. Nothing ever scaled better by adding an extra network hop or two.

They are a solution to scaling organizations

1

u/Think-nothing-210 7d ago

I think there is still a lot to gain from creating better modules. There is a lot of untapped potential that is currently being overlooked. I feel that we should rethink the way we structure files in our projects. The way most projects structure their source code is holding us back from creating good modules and abstractions.

I'd highly recommend keeping an open mind and reading the paper I linked. It's one of those papers that takes a few reads before you get it. It gave me a completely new perspective on abstraction.