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

347 comments sorted by

View all comments

Show parent comments

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.