Makro is Southeast Asia’s largest cash & carry (worth $9bn). With over 30 years of experience in serving B2B customers in Thailand, they arrived in India aiming to meet the ever-evolving needs of their members by offering them a one-stop-shop for a wide range of products.
Their existing order management system (OMS) ran on a very niche technology, IBM Sterling. Using this solution meant that operators required a significant amount of time to come up to speed on how to use it. Any necessary changes were very slow and required significant coordination with the third-party vendor.
An OMS is critical for order fulfilment (Picking, Packing, Shipping and Delivery) by the store operations team. It occupies the central place for the entire order management workflow for Makro and receives these orders from various channels.
- Expensive legacy system – was difficult to scale.
- Limited monitoring on the existing solution – meant delays in troubleshooting production issues.
- Manual deployment and testing – causing delays and downtime.
- Legacy security posture of the application.
- Difficult to make changes – resulting in delays adapting to market changes.
Finding the right solution
We assessed Makro’s current solution, release cycle and business goals through workshops with the development team. Our solution needed to allow them to make changes more easily and more frequently. It was also key to follow modern industry best practices in deployment and automation – with minimal manual intervention.
Here’s what we did
- Worked with their team to create an OMS system from the ground up, following a microservices architecture on AWS.
- Created automated infrastructure provisioning defined as code.
- Streamlined the development workflow (previously a bottleneck) by building an automated CI CD pipeline using Builder Code Platform (Gitlab on AWS).
- Introduced Automated Validation and smoke testing into the pipeline to ensure quality of the code.
- Handled deployment failures through automated rollback.
- Created the environment with Terraform, Ansible and deployments orchestrated through GitLab and Capistrano.
- Provided monitoring with AWS CloudWatch.
- Secured with a combination of AWS Config and AWS CloudTrail.
- Did an in-place rolling deployment – to be able to release with no downtime.
- Leveraged AWS Oracle RDS to provide a resilient and scalable database layer.
- Created a stack written in Angular and Ruby on Rails.
- Built a reliable and scalable solution around EC2 and AutoScaling groups. (We used multiple availability zones for databases and instances.)
- Used AWS ElastiCache to improve performance.
- Protected the public facing front-end from common attacks (such as SQL injection or cross-site scripting) with AWS WAF (Web Application Firewall).
- Applied OS patches and updates with Ansible (handled application patches through the standard release process).
- Ensured the configuration remains consistent and is always auditable with AWS Config.
- Set up monitoring with AWS CloudWatch alerts, delivered through AWS SNS.
- Monitored site availability with uptime.com.
- Performed detailed application instrumentation using Prometheus and Grafana.
- Developers work on features and fixes on branches.
- On pushing an update to a branch, tests are run automatically.
- Once the engineer is satisfied their work is ready to be deployed, they create a Merge Request (MR).
- This MR is reviewed by another engineer, who gives feedback or accepts the change.
- Accepted changes are merged into master, tests are run again and a version number is created.
- Now the release is automatically deployed to a staging environment.
- Additional testing happens (may also include user acceptance testing).
- When it’s ready to go live, the version is flagged for a production release.
- This final step triggers the deployment of the release into production.
Builder Code Platform
The code repositories and automation orchestration are hosted on our centrally managed platform powered by AWS and GitLab [link to public article with details].
Each client has their dedicated namespace with groups allowing only their developers access to their code and deployment systems.
- AWS Config
- AWS WAF
- EC2 + Autoscaling
We successfully replaced Makro’s legacy order management systems on IBM Sterling with a cost effective, reliable platform running on AWS.
- Since deployment by Builder.ai went live in Nov 2019, Makro’s OMS has processed approx 1.5 million orders.
- The daily average is ~3000 orders.
- Used by 120+ Makro stores to process orders.
- 5 releases a month (previously 1 release every 2 months).
- Enhanced monitoring.
- Improved Security posture with WAF, CloudTrail and Config.
- Migrated from an inflexible, proprietary system to an easily deployable, agile system.
About the partner
At Builder.ai, we make building and running software as easy as ordering pizza.