So I agree with everything you wrote. Microservices can be extremely reliable and performant, and at hyperscale are often the only choice.
But these things require a lot of design effort, and hardening. They don’t happen by default. If you take your monolith, convert it to microservices and deploy it, the chances are your performance will significantly decrease (per the same compute cost), not increase.
I know I sounded very harsh on microservices, but I have nothing against them. It’s just that people jump straight to microservices without really understanding the tradeoffs.
So I agree with everything you wrote. Microservices can be extremely reliable and performant, and at hyperscale are often the only choice.
But these things require a lot of design effort, and hardening. They don’t happen by default. If you take your monolith, convert it to microservices and deploy it, the chances are your performance will significantly decrease (per the same compute cost), not increase.
I know I sounded very harsh on microservices, but I have nothing against them. It’s just that people jump straight to microservices without really understanding the tradeoffs.
Very much agree. And you can get the maintainability benefits of modularisation without the performance overhead with good old refactorings.