Coursera is an educational technology company with a mission to provide universal access to the world’s best curricula. The company partners with top universities and organizations worldwide to offer online courses for anyone to take, for free. Coursera has more than 13 million users from 190 countries enrolled and offers more than 1,000 courses from 119 institutions, everything from Programming in Python to Songwriting.
Coursera had a large monolithic application for processing batch jobs that was difficult to run, deploy, and scale.
A new thread was created whenever a new job needed to be completed, and each job took up different amounts of memory and CPU, continually creating inefficiencies.
A lack of resource isolation allowed memory-limit errors to bring down the entire application.
The infrastructure engineering team attempted to move to a microservices architecture using Docker containers, but they ran into problems as they tried to use Apache Mesos to manage the cluster and containers—Mesos was complicated to set up and Coursera didn’t have the expertise or time required to manage a Mesos cluster.
Docker containers on Amazon EC2 Container Service (ECS) enabled Coursera to easily move to amicroservices -based architecture.
Each job is created as a container and Amazon ECS schedules the container across the Amazon EC2 instance cluster.
Amazon ECS handles all the cluster management and container orchestration, and containers provide the necessary resource isolation.
Ease of use: Because Amazon ECS setup is straightforward and it manages all of the details of the cluster, the team had a prototype up and running in under two months.
Speed and agility: Time to deploy software changes went from hours to minutes, and each team can now develop and update its respective applications independently because the applications are resource isolated with no cross-dependencies.
Scalable capacity: Auto Scaling groups allow the compute capacity to scale up to handle dynamic job loads.
Operational efficiency: No extra infrastructure engineering time is spent installing software and maintaining a cluster—Amazon ECS handles everything from cluster management to container orchestration.
“Amazon ECS enabled Coursera to focus on releasing new software rather than spending time managing clusters.”
Frank Chen, Software Engineer