You Had Me at Microservices! Oh, No...
You can't lead a digital transformation with microservices alone. See how reactive architecture will help you meet your performance and customer experience goals.
Join the DZone community and get the full member experience.Join For Free
"Microservices," the way it stands, is becoming a must-have for a lot of enterprises. It is being touted as the main component if you are leading a digital transformation journey. System integrators are having a field day calling themselves microservices experts. At the end of the day, 90% of implementations are going to fail. Why?
Because microservices by themselves are not the silver bullet. It is excellent armor, but by no means the only piece that you need to convert your legacy monolith — which, by the way, has seen the business grow leaps and bounds — into a lean, modern microservices architecture which will make your digital transformation journey successful. It is going to ruin a lot of C-level reputations.
Let us take a step back. What are you trying to achieve with your digital transformation journey? Some of the key characteristics noted are improved efficiency, customer satisfaction, and so on.
One of the key characteristics of improving customer satisfaction is to be responsive. That means that when the customer wants to access your system, you should be available and should be able to respond back within the acceptable SLA for the customer. If Google sends back results in 5 seconds instead of milliseconds, then who would stay with Google anymore? (If you are worried about privacy, then you should be using duckduckgo).
Next, customers expect your system to be available when they want it with very, very, very minimal, if any, outages. When was the last time Facebook was down on you? This is called resilience.
Over Christmas holidays, back to school, game day deals, etc: when the load on your site increases by 2,000%, how to do you maintain the same SLA or milliseconds for your customers? Simple: you scale up or scale out! Easier said than done. Just by building microservices and packaging them, you will not be able to achieve any of this. The microservices have to be built so that they are elastic. They would need to scale up and down, scale out and in, based on the demands of the traffic. This is called elasticity.
All of the above are built on a platform which is message-driven. The components must be communicating with each other via asynchronous and non-blocking messages. The icing on the cake would be systems which utilize event sourcing and CQRS so that you are prepared for the future use cases. Further, the microservices should be defined utilizing the principles of Domain Driven Design.
All these concepts collectively point to reactive architecture and are well-documented in the Reactive Manifesto. Proceed without knowing them at your own peril!
Again, this list is not comprehensive; you might want to look at the following blog post as well "And you thought you were doing microservices"
Next time someone tells you that you can lead your digital transformation journey using microservices, stop, laugh a bit, ask the right questions, and refer back to this post if you need to make a decision.
Published at DZone with permission of Vikas Hazrati, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.