In the digital world, the boundaries between industries are blurring which results in a disruption of previously mature markets including transportation, retail, consumer goods, and communications. As incumbents are adopting new business models to protect themselves, business and IT complexity is increasing. On top of this, the number of touch points through which brands engage consumers is growing exponentially and now include connected devices, chat bots, kiosks, virtual assistants and more.
To stay competitive, enterprises need to be able to tackle this increased complexity by fostering innovation and continuously providing new business value to their users. This often requires not only changes to the existing commerce platforms but the integration of new 3rd party and open source software components. All these changes need to be developed, tested and rolled out quickly if needed.
Key Microservices Principles:
Microservices, or microservice architecture, is an approach to application development in which an application is split into modular components or services.
Loosely Coupled. Microservices architecture consists of a multitude of independent services. Each microservice relies on its own data model and is developed, deployed and operated independently.
Service-Oriented. Microservices can provide direct business capabilities or serve as a proxy to a 3rd party service. Since no two microservices should be aware of each other, microservices orchestration is another possible task that is executed by microservices.
Bound Context. Each microservice is responsible for everything happening within its boundaries and does not interfere with what happens inside other microservices bounded context. The size of the microservice is defined during the design phase.
Benefits of Microservices Architecture:
The microservices architecture was pioneered by the internet companies who relied on its principles to develop in-house platforms. Today the growing popularity of microservices is driven by the promise of tangible benefits to both business and IT.
Business Agility. Microservices enable organization to split into a large number of cross-functional teams including business and IT. This allows each team to work on the relevant subset of overall solution functionality independently of other teams. This enables a DevOps approach in which development and operation teams are working closely together to enable continuous development, testing and deployment of applications. This allows an accelerated deployment of new functionality as separate microservices can be changed, tested and deployed independently .
Innovation. Adoption of the DevOps approach allows for a reduced cost of failure and accelerated innovation, enabling business to quickly roll out new experiences and touchpoints to see what works and what does not. This low cost of failure fosters a culture of change and innovation.
High Performance. Decoupling of microservices allows them to be scaled horizontally and independently based on individual load. Also, each microservice can be developed using the most optimal technology that fits its tasks which further optimizes performance. This also means a decrease in infrastructure costs.
High Availability. One of the important aspects of microservices is failure isolation – if one microservice fails, it does not affect the other microservices. Mission critical microservices can be run in multiple instances to ensure high availability and fault tolerance. This allows for businesses to reduce downtime minimizing revenue losses and ensuring superior customer experience.
To ensure that a commerce solution helps organization achieve its business goals, it is necessary to look at the aspects mentioned above through the prism of a business case:
Business goals should be the starting point for any technology, architectural or vendor decisions. Transition to microservices architecture by itself won’t drive revenue growth or increase customer satisfaction. After the business goals and the strategy of how the organization can achieve them are defined, only then does it make sense to start designing architecture.
Business requirements fulfilment, not the technology choices, will drive project success. Once the existing and potential future functional and non-functional requirements are satisfied, any additional complexity becomes a liability and an unnecessary risk.
Organizational capabilities are extremely important. If an organization wants to deploy a solution consisting of 100s of microservices and customize them, it needs to be ready to do this. A proper governance model with multiple independent teams experienced with a DevOps approach needs to be in place. This may require reorganization, change of business processes and re-education of personnel.