“Microservices” the way it stands is beginning to become a must-have word 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. End of the day 90% of the implementations are going to fail. Why?
Because microservices by themselves are not the silver bullet. Definitely, it is an excellent armor but by no means the only piece that you would 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 would 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
- yada yada…
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 secs instead of milliseconds then who would like to stay with Google any more? BTW if you are worried about privacy then you should be using duckduckgo in any case. Next, the customers would expect your system to be available when they want it with very very very minimal if any outage. When was the last time Facebook was down on you? This is called Resilience.
Further over Christmas holidays, back to school, game day deals etc when the load on your site increases by 2000% then 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 would not be able to achieve any of this. The microservices would 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 is built on a platform which is message-driven. The components must be communicating with each other via asynchronous and non-blocking messages. An 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 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”
Hence, next time when someone tells you that we can lead your digital transformation journey using microservices, then stop, laugh a bit, ask the right questions and refer back to these posts if you need to make a decision.