Retailers’ investments today are digital driven and omnichannel focus, willing to reach out the best from any business opportunity. Omnichannel doesn’t mean only technology but processes and organizations are impacted: streamlining and changing the core processes around order, pick up, delivery and return means embracing channels, logistics, delivery services, stock availability and people. In this scenario Retailers want to offer the customer with more flexibility in terms of order payments, pickup points, delivery, refund and return; a scalable process to all stores, brands and countries. Last but not least, Retailers are looking for a solution that connects all the major actors in the order flow (stores, commerce, customer service, and accountability), with a unique system of Order Management.
Retail Reply built a solution to address these needs. The approach used was driven by the goal to design a scalable and elastic platform in order to manage the pick and unpick of volumes in different time frames (E.g. Black Friday, Promotion and seasonal sales).
The application is composed by the following different services:
A micro-services application based on AWS Managed Service Java Spring Boot delivered in a Kubernetes cluster exploiting the AWS managed services. Just deep diving the solution, we have the management layer of the cluster provided by Amazon EKS service and the worker nodes are provisioned via AutoScaling Groups. To grant isolation between the different application environments, three different EKS clusters have been implemented each one in a dedicated Amazon VPC instance. The resources are spread across three available zones inside the region and traffic is balanced using an Application Load Balancer. The database for the application is Amazon Aurora RDS with PostgreSQL compatibility. One cluster for each environment has been created. The external integrations with third-party components are achieved via an API Gateway that proxies the requests for this application. The VPC networks are linked with other AWS accounts which provide services for this application via peering connection to exploit the AWS backbone network. A managed Kafka cluster (Amazon MSK) is used to manage message queues. This simplify the decoupling of the frontend and backend components, by changing some processes from synchronous to asynchronous.