AWS Cloud-Enabled DevOps Enables Cashify to Dominate Reverse E-commerce
01. Existing Systems
Cashify has complex back-end operations running on with several Java and PHP-based applications. These applications—comprising e-commerce, quote engine and partner portals—have been deployed on AWS Cloud using AWS EC2 with AWS RDS Aurora and autoscaling.
Cashify’s quote engine has business integrations with e-commerce companies and it has strategic partnerships for repairing and supply chain. Its application supports several services—front end, back-end admin panel, customer fulfilment, logistic partner portal, repairing partner portal, etc.
A number of teams are working to enhance the application, fix bugs and patches which required high level coordination and exposed the application to vulnerabilities.
Earlier Cashify used GitHub private repository to store code and custom scripts to deploy. This had caused inadvertent errors to creep in making deployment unstable. In case of problems roll-back was slow and painful as release process was manual.
Also manual processes were impeding high velocity innovation as it entailed downtime and it was affecting business partnerships who had ongoing promotions and campaigns.
02. Key Business Requirements
Cashify turned to Umbrella to help overcome its challenges by implementing an automated release management process as Umbrella had deep understanding about its business and insights into the deployment.
Specifically, Cashify wanted to achieve the following:
03. AWS Services & Third Party Tools
Umbrella configured AWS Container Service ECS for quick deployment of releases and cost-efficiency. Speed-to-market is a competitive differentiator and AWS ECS is an ideal choice—as managed platform AWS ECS allows developers to focus on the code without worrying about managing resources such as CPU and memory. Containers are lightweight and the built-in automation of AWS ECS enables to schedule multiple containers on the same node resulting in high utilization of resources.
Jenkins is used to build and create images which are stored in Docker Hub. Among AWS services, Amazon S3 and AWS CodeDeploy are used to store artefacts and make continuous integration and deployment.
Amazon CloudWatch monitors deployment process and Cloud resources, raising an alarm when threshold is breached or errors during release. AWS Cloud Trail maintains logs of all API calls to achieve enhanced security and visibility and take corrective action in case of performance degradation.
04. Solution Overview
Most applications are deployed on containers with each service on separate containers, wherein Jenkins builds applications by picking up code from GitHub and creating artefacts which are integrated with Docker images and deployed on AWS ECS in a highly available and scalable architecture. AWS ECS creates new task definitions before deployment whenever new releases are made. Test is conducted on premise while production is released manually on AWS Cloud.
For applications deployed in non-container environment, Jenkins builds and stores code in Amazon S3 from which AWS CodeDeploy automatically picks up to deploy in a highly available and scalable architecture. Access to AWS CodeDeploy is controlled by AWS IAM with automatic provision to roll back to previous version in case of error.
05. Cashify Deployment in Non Containers
05. Cashify Deployment in Containers
06. Deployment Highlights
07. Business Benefits
Says Amit Sethi, Co-Founder and CTO at Cashify, “Integrating DevOps practices has changed our approach to business and how we innovate. We use speed-to-market as a differentiator where thinking off the hat is becoming the new normal. We experiment more, modify features and adapt to external inputs on a real-time basis as internal systems and process facilitate our new market posture. Seamless collaboration amongst teams has sharpened focus on innovation rather than wasting time in coordinating efforts.”