Ministry of Education - Teachers platform Migration to AWS

July 3, 2024 by
Rama Odetallah

Start writing here...

Teachers has Moodle-based application which consists of APP and DB servers hosted in on-premise experiencing multiple issues, so, they decided to migrate their workload to AWS to leverage its advantages.


Previously, Teachers platform was deployed in traditional virtual machines (VMs) in on-premise, was tightly coupled, and featured low availability and scalability and lacked automation capabilities. Teacher project lacking any automation steps or a dedicated test environment. Consequently, updates were directly applied to the production environment without prior testing, potentially leading to unforeseen issues or disruptions.

This setup made it more likely for services to experience downtime or disruptions, causing frustration for customers unable to access what they needed. Secondly, when demand spiked, the system struggled to keep up, leading to slow performance or even crashes. Additionally, because updates and changes were difficult to implement quickly, Teacher couldn't respond promptly to customer needs or market trends, making them less competitive in the industry. Lastly, the lack of innovation and adaptability meant that customers might not see improvements or new features as quickly as they'd like, potentially causing them to seek out other providers. Overall, these issues made it harder for Teacher to keep customers happy and grow their business.

Great stories are for everyone even when only written for just one person. If you try to write with a wide, general audience in mind, your story will sound fake and lack emotion. No one will be interested. Write for one person. If it’s genuine for the one, it’s genuine for the rest.


The AWS Application Migration Service is used to migrate servers to the AWS cloud environment. To ensure high availability, we deployed our application across multiple Availability Zones (Multi-AZ) using AWS Auto Scaling Groups (ASG) under an Application Load Balancer to distribute traffic among the application servers. This setup prevents any single server from becoming overwhelmed and allows for automatic scaling based on traffic levels.

For securely managing and storing our database data, we use AWS RDS and ElastiCache. Additionally, to store shared data between application servers, we utilize AWS EFS.

Safeguarding our infrastructure is of utmost importance. We use Security Groups and Network ACLs (NACLs) with restricted access to enhance security.


The environment has been meticulously designed to ensure high availability and fault tolerance. For the application, an ASG has been employed, spanning Multi-AZ to guarantee uninterrupted service. All app critical data is stored in a shared storage solution provided by Amazon EFS, fostering data integrity and centralized management. To further enhance resilience, Amazon RDS for MySQL with primary and Read Replica in Multi-AZ mode has been configured, bolstering fault tolerance. In addition the reporting feature of their application has been significantly improved by using the Read Replica for generating analytical reports without affecting the primary instance performance.

Proactive monitoring is key to this setup, with custom alarms in place to promptly notify us of any unexpected behavior or deviations from normal operations. These alarms serve as an early warning system, allowing us to take swift corrective action when needed.

The availability and scalability for Teacher workload is increased about 70%