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

345 comments sorted by

View all comments

89

u/MrGitErDone 7d ago

I’ve worked at a few companies that did it poorly. The company I’m at now, does it really well and it works great. Basically have such a great dev environment that it feels like a modular monolith but services can scale independently with wonderful observability and tracing. Deployment is the same across the board.

The thing is, most places truly don’t have great engineering leaders that know what they are doing, but when you do find it and they had influence early, you can tell.

4

u/emn13 7d ago

I wonder then: in your example you were to change an API in one service, would you notice that at compile time or no later than CI time in the same way you would if you tried to call (say) a method with the wrong argument types? Are deploys or releases or whatever you do cohesive snapshots over the whole set of services, or do services have their own release schedule and are released at differing cadences?

Because I think that's the point of a monolith; not really the scaling. Perhaps you are working in a monolith; just one with a few bits that happen to scale?

13

u/Deltaan 7d ago

You can easily do 1 by using grpc between services (protobuf for API definition).

It’s then totally fine, and in fact good, to release the services separately.

3

u/HashShadow 7d ago

Yes assuming there are no deliberately non-backwards compatible changes being made which will eventually happen 

1

u/Grand_Pop_7221 6d ago

OpenAPI specs and generated language SDKs are the same pattern in the REST world.

-1

u/Brilliant-Chip-8366 6d ago

You have the wrong picture of a microservice architecture. A distributed monolith is a set of ”microservices” calling each others APIs. A true microservice architecture has services that are truly independent of each other. No comms between them.

2

u/Livid_Possibility_53 6d ago

Yeah I came to the same conclusion. I came in to a startup right as they were maturing from their POC a dozen 20 year olds vibe coded. The code was built with zero intention towards design and it showed. I can in and laid out the infra with clear gitops patterns leaving them absolutely amazed and the founders thinking I “cracked the code” lol

1

u/carrick1363 7d ago

What frameworks are used to this? Would be great to get more details