CX benefits of microservices: Scaleable, inexpensive, rapid response
The benefits of microservices for improving customer experience are immense, allowing companies to tune services for the best results.
When discussing a 2-3 year architecture roadmap for an e-commerce system that’s already been running a few years, the typical question is—do we need to go microservices architecture?
Microservices are a hot buzzword right now, so it’s natural to consider them for the evolution of the system. However, the primary drivers for re-architecting a monolithic system into microservices are really of business and operational nature, such as:
The ultimate goal of the microservices architecture is to break this application down into relatively independent services that serve default content, provide information on inventory status, and serve personalized offers and recommendations. These services can then be tuned, scaled, and managed to achieve the best user experience.
If requirements are on the business roadmap, it’s feasible to consider architecting the system around microservices, because even with the added complexity, trying to achieve the above-mentioned goals with the monolithic system would become increasingly difficult and costly.
The idea here is to have a system composed of several self-contained, scalable, replaceable services.
The benefits of microservices for improving customer experience are immense, allowing companies to tune services for the best results.
Then the question is, how do we execute on this plan? Rewriting the system from scratch is usually unacceptable. There’s an investment into the current platform, the functionality is tested and proven, or there are other functional enhancements that need to be completed in the current system.
It may be a better approach to agree on the target architecture and start gradually moving the system towards the target by including the re-architecting activities in the roadmap development plan:
If by making a change to the MyAccount service requires that all other modules be recompiled and redeployed, then it’s not a good candidate for a migration (yet). But there may be other candidate modules that cover their own specific domain concerns:
As you can see, this picture can quickly start feeling busy, with the number of services growing and adding to the feeling of increased complexity of the solution. To deal with this, the teams need to pay extra attention to the following aspects of the project:
Architecture clarity: This doesn’t necessarily mean a ‘big design up front’ approach, but the team needs to share a common vision and understanding about which services the system will be composed of, and how the services are going to be built, deployed, and monitored. The team needs to be prepared to adopt different practices (API-first), frameworks (Spring Cloud), common application infrastructure elements—API Gateway, authentication server, service registry, etc. Not all of them are always necessary, but it must be a conscious architectural decision whether they are going to be part of the system or not.
DevOps: This is another popular buzzword, but extremely important in this context. As the system grows, the number of services can become overwhelming, so in the microservices world, DevOps is a necessary element. That means automation and streamlining of builds, testing deployment, restarts, auto-scaling, alerting, etc. We are not dealing with a single binary file deployed to a few application servers. There could be dozens of smaller pieces of functionality each potentially running in multiple instances, it’s not something that anybody want to support manually. Just imagine manually collecting logs from all these running apps…
Interest in headless commerce solutions is surging, but some vendors are creating confusion about the technology. Learn what headless commerce really is – and what it's not.
There are many ways to get the migration to microservices wrong: By simply following the technology buzz, without a real business case for it, identifying unsuitable services that are too dependent on one another, failing to adopt DevOps practices to address complexity, not developing the right skills within the team etc.
However, with proper planning and risk management, after some time (and stress, and doubts, and panicking of the PM) the team should start feeling some positive impact:
The architecture roadmap is the tool that helps to set the direction for the system evolution for two-three years into the future.
It needs to be well-aligned with the business roadmap, strategic technology and industry direction and with the team skills and capability. Its importance is especially increased with an introduction of new architectural concepts and approaches like microservices.
Editor’s Note: This post was originally published by Thinkwrap Commerce, and was syndicated with permission.