I’ve always had the impression that the microservices movement was trying nothing more than to apply SOA with common sense. Meaning, applying SOA without going overboard with tooling, for instance. And without the militaristic top-down approach. Etc.
Martin Fowler put it much more eloquently in his talk during the goto; conference early last year.
And what I did appreciate most in his talk, was his comparison between a monolithic and a microservices approach:
- Monoliths have the advantage of supporting: simplicity, consistency, inter-module refactoring
- Microservices on the other hand favorably support: partial deploying, high-availability, preserving modularity, multiple platforms.
Just by looking at the advantages of both, it seems almost obvious that one should start by implementing monoliths. Only when it becomes really painful should one start thinking about chopping the monolith up into microservices. Now, if you do properly modularize your monolith and keep it nicely modularized just up to the moment in time where you need to start chopping, moving from a monolith to a microservices architecture should be doable in a short amount of time.
So please, after going overboard on SOA, let’s not go overboard on Microservices. Of course, if the past is an indication for the future, five years from now, we’ll probably start applying microservices with common sense (I wonder how we will call it then 😉 )