The Client
McQueen Autocorp is a leading US-based used car selling company with a buyer network spread across the entire United States. McQueen Autocorp offers a nationwide modern car selling service, facilitates sellers with an instant offer for their car(s) using price prediction algorithms and real-time bids from an extensive network of licensed buyers.
Disclaimer - The name McQueen Autocorp is a placeholder as there is an NDA signed between both parties.
Challenges
Our client experienced difficulty scaling components independently and maintaining code as their automotive application received more traffic.
- Over 200 microservices operated on a single node, creating a single point of failure.
- This server downtime affected all products, significantly impacting operations.
- These outages were costly as the website traffic heavily depended on ads.
- Rapid and massive system scalability was needed to combat frequent traffic overload.
- Scaling was challenging due to ongoing efforts to expand business operations.
- We had to ensure robust cloud security to protect the website against DDoS attacks, SQL injections, and cross-site scripting.
- Lack of redundancy and scalability posed risks to business continuity and user experience.
Solution
Using Docker and Kubernetes, Maruti Techlabs planned a roadmap to migrate a fully functional application from monolithic to microservices architecture.
- We started by designing an architectural diagram to outline the scalable setup of microservices using Kubernetes.
- Then, our team conducted a PoC to validate the scalability and functionality of Kubernetes-migrated modules.
- Hereafter, we migrated to Kubernetes and created a dedicated repository and CI/CD pipeline for each microservice.
- Over the next 2 years, we started a phased migration plan to transition 200+ microservices across Dev, Staging, and Production environments.
- We used the Strangler Pattern to replace monolithic components with microservices incrementally.
- Subsequently, we containerized microservices using Docker to package them efficiently for deployment.
- Further, we orchestrated containers with Kubernetes, enabling streamlined management and scaling of services.
- Then, we configured all services in a "Highly Available" setting to ensure scalability and reliability.
- Finally, we deployed services across three availability zones to maintain availability even during rare data center outages.
Results
This massive transformation brought remarkable results.
- Selective scaling of software services and components is now possible.
- Load-balancing and traffic routing has become easier and more effective.
- Kubernetes provides rollouts without downtime.
- Different application services are now easier to manage due to process isolation.
- Deployment of new features now takes less time.