CONTACT

The Client

The Quality Education and Skills Training (QUEST) Alliance is a not for profit organisation that focuses on research-led innovation and advocacy in the field of teaching and learning. The Quest App is a digital learning platform focussed on providing 21st Century employability skills to the youth of the country. With the Quest App, QUEST Alliance hopes to open doors to 1 Million young users and help them take charge of their learning enabling them to develop skills, critical awareness and confidence to seize opportunities, to positively impact their own lives and improve their communities. The Quest App Platform is supported by Accenture.

Service Offerings

Services

Architecture Design
Backend Development
Frontend Development
DevOps
Quality Assurance

Tech Stack Used

PHP Codeigniter

PHP Laravel

Kotlin

Elastic Cache

Amazon ALB

Amazon Cloudfront

AWS RDS

AWS S3

AWS SES

Cloudflare

Twilio

Business Requirements

QUEST runs a digital learning platform – The Quest App, available on web and mobile. QUEST was planning to onboard 250K users and wanted to ensure that the platform could withstand the expected load. The existing application was not designed to handle such high loads and could only handle 200 concurrent users. The system needed to be scaled to handle a load of at least 10K concurrent users.

Solution

We initially did a technical analysis of the existing system to identify the bottlenecks and other issues that were causing the application to break at higher loads. Then based on our findings we recommended a set of changes which would help the application handle the expected load. The set of changes included:

  • Upgraded RDS instance to R5.Xlarge from R5.Large
  • Implemented horizontal auto scaling for application instance with minimum 2 Medium servers to max 4 Medium servers based on the load
  • Implemented application load balance
  • Updated mpm_prefork.conf in all server
  • Updated MaxRequestWorkers in mpm_prefork.conf
  • Algorithm for instance switching is round robin
  • Sticky session enabled
  • File that are uploaded and generated are saved in S3
  • Updated database indexing

Deployment Architecture

We implemented Blue Green deployment using Automatic Load Balancing (ALB) to reduce downtime and improve availability.

Challenges

  • DNS issue while using AWS Route 53 & cloudflare
  • Load testing timeout issue: 50X with cloudflare.
  • Turning cloudflare off, resolved the issue

Results

  • After implementing the recommended changes, the application was able to handle 10000+ hits/seconds
  • By implementing horizontal auto scaling, we were able to optimize cloud cost as compared to running 3-4 instances in parallel.

How can we help you?

Get in touch with us to schedule a consultation