The client is a multi-tenant learning management system based on moodle. Its main focus is to target students who are weak in English. The program consists of a curriculum based on Texas and Georgia education systems.
After about a year of the product being live, the number of concurrent users greatly increased. We could no longer scale the web servers vertically as we had already scaled up to the maximum instance available. A challenge was to configure Moodle and set up a different component which were set up locally, which were:
Besides this, we also had to cater to the usage increment on the database. The activity on moodle by users is written intensively. We also had a high usage of analytics and reporting.
The Folio3 team had to implement horizontal scaling as quickly as possible. We implemented it on EC2-Autoscaling. AWS EC2-Autoscaling would determine if new instances need to be added and on an instance launch, a script would pull the docker image from ECR.
We used Jenkins for CICD.
Team is now shifting from EC2-Autoscaling to AWS ECS along with CloudFormation for infrastructure automation. Amazon ECS stands for Elastic Container Service is an aws service similar to k8s, but is less complex and suited well for monolithic applications. We decided to use cloudformation, so that in order to deploy to other regions we don’t have to make an effort.
For databases, we earlier used Read Replica with a single writer – diverting all reporting queries to read instances and operations to write instances – but now are transitioning to MySql Aurora, which allows multiple writers in the cluster. This will be a permanent solution for us, as it will autoscale automatically when needed.