Today, a great deal is written every week about microservices on the Internet. I myself think that microservices offer many advantages, so I also build such services in my own open source workflow engine project. But today, I read an article about microservices which contained a funny picture. The picture should underpin the advantages of separating functions into a microservice architecture with an almost non-existent centralized management. The picture looks something like this:
I asked myself: Which of the two diagrams appears to me, as a software architect, as the clearer one...?
Have we not worked out for years an architecture that allows us to reduce complexity? With Java EE, which seems to be a synonym for the evil monolithic architecture, we now have a concept which allows us to combine and connect different components (services) in an easy way. And with Java EE application servers we have a professional platform to control all these kinds of services.
Of course, it is painful to learn all the concepts about EJBs, Transactions, JNDI Resources, and Pool-Management. And yes, as a beginner you are confronted with all these concepts if you try to succeed with the Java EE platform. But after that, you have a highly scalable, easy to manage platform running your piece of software.
When I am reading all the adulation for having separated databases, with services implemented in different languages, connected to each other without explicit contracts, I'm pretty sure that in the next few years we have a lot of work to bring back systems to the left side of the image.