Gooru is a Non-Profit Organization providing a free and personalized learning platform that enables teachers to create, curate, and share collections of web resources on any K-12 topic.
The learning navigator developed by Gooru assists student development and progress through real-time data. It also enables teachers to track the progress and monitor the requirements of every student by combining powerful assessments and analytics with a catalog of learning resources. This learning platform was used by:
- School Districts / Schools – Adopt Gooru as a primary classroom tool for conducting the sessions.
- Teachers – Adopt Gooru as a primary or an additional aid in classroom and use Gooru functionality as is with students.
- Developer community – Use APIs of Gooru to develop their own apps on top of Gooru ecosystem.
- Content providers – To bring in their content into Gooru either via bulk upload or an incremental update.
Gooru required an architecture optimization and continuous support of their current eLearning platform 2.0 that supports more that 100+ schools and 10,000+ students across North America.
They were looking to re-architect the deployment of version 3.0 with 24/7 support and setting up DevOps processes. Their key concerns included:
- Redesign of deployment architecture on AWS.
- Automation of release and deployment process.
- Cost optimization & cost conscious infrastructure management.
- High availability of production systems with 99.9% availability.
- Shared support model to cover US and India time zones.
BlazeClan conducted an exhaustive study of the existing system and charted out a roadmap for product refresh, architectural optimization of 2.0, successful setup and re-architecting deployment 3.0 version.
BlazeClan team of certified SAs defined a 4 step strategy to overcome these challenges that included:
- Discovery of the existing architecture and cleaning of the AWS environment. This also included refinement of IAM user management and authorization authentication as per the underlying best practices. Post this, remapping and tagging exercise was conducted to provide an immediate cost control on the existing environment.
- Knowledge Sharing workshops were conducted for a deeper understanding of the complete environment. This helped the team to create a support structure for the complete environment in 24/7 model. The BlazeClan team assisted in provisioning, deployment of product and monitoring of server components for more than 250 instances on AWS.
- Identification of architectural issues and re-architecting exercise was carried out. A new architecture was defined with the help of the application team. A 12 sprint plan for 4 months was charted out to complete the execution.
DevOps on AWS
- The team comprehended the need to adopt a DevOps based approach for infrastructure automation. They created templates for deploying each component of the infrastructure making it more flexible and scalable.
- Configuration management that included setting up of the server, installing the packages, was performed using Puppet.
- Continuous integration, deployment and delivery were executed using Bamboo and AWS CodeDeploy. Bamboo helped in automating the release management of the software application. Automated deployment of code from S3 or Git repository to any Amazon EC2 instances or instances running on-premises was handled using AWS CodeDeploy.
- AWS CloudWatch was used to monitor the performance of the system. A trigger was configured using AWS Lambda and AWS CloudWatch logs to ensure an immediate response in case of any alerts at the HAProxy level.
DevOps Flow Diagram
- High availability: Successful deployment of version 3.0 followed by 24/7 monitoring resulted in making the platform highly available to the students and teachers.
- Scalability: The Company achieved the ability to scale the application as and when required along with granular level control of the environment.
- Reduced Cost: Managing the server 24/7 reduced the risk and downtime, resulting in cost optimisation of approximately 10% on a monthly basis.
- Fault Tolerant: Continuous Monitoring resulted in achievement of a fault tolerant architecture.
- Micro services Architecture: The Company now has a small, highly modular and loosely coupled architecture.
BlazeClan availed a number of AWS services to execute this project successfully.
- Amazon EC2 was used for compute capacity management for their application deployment. It helped in reducing the time required to spin up new server instances to minutes, allowing them to quickly scale capacity, both up and down, as per their requirement.
- Amazon S3 was used to store and retrieve any amount of data from anywhere and everywhere.
- AWS NAT Gateway was used to allow instances in a private subnet to connect to the Internet or to other AWS services.
- AWS CloudWatch was used to monitor the performance of the system
- Puppet helped in configuration management that included setting up of the server, installing the packages, user creation and setting up the OS.
- Bamboo and GIT were the open source DevOps tool that was used for build and release management. Bamboo is a continuous integration (CI) server that was used to automate the release management for a software application, creating a continuous delivery pipeline. It was integrated with the Git repositories.
- AWS CodeDeploy helped in automating the deployment of the code from S3 or Git repository to any Amazon EC2 instances or instances running on-premises.
- Datadog being a SaaS-based monitoring and analytics platform was used for monitoring infrastructure and application components.