About Harappa : Harappa is an Edtech company. Harappa begins where formal education ends. The purpose of Harappa is to provide professionals with skills to confidently navigate their most-crucial career milestones, with Confidence.
Problem Statement : Their tech team was utilizing AWS for Managing the entire infrastructure and they were facing certain challenges listed below
The existing infrastructure in aws was not highly available and they wanted to achieve 100% uptime for the system.
Launching infrastructure was also a manual task which used to consume a lot of time.
Deployment of application was also a manual process which was very inefficient and in-consistent.
There was no alerting and monitoring setup for servers and applications.
Applications were deployed on tightly coupled strategies.
Solution’s implemented: The goal was to resolve all of the above problems along with implementing the AWS well-architected Principles to cover all the pillars like Operational Excellence, Security , Reliability etc
Auto Scaling(ASG) with EC2 instance: EC2 instances were launched using ASG for the deployment of backend apis. ASG will provide elasticity to the instances, deal with high traffic on the instances, if any of the instances goes down then ASG will relaunch the instance. ASG launched instances in multiple AZs so that instances can deal with the problem of high availability.
Cloudformation: Infrastructure for the deployment of applications is launched using the cloudformation template. Cloudformation launched resources like ASG, EC2 instance, target group , launch template and CPU alarm. This covers around 80% automation to deploy the new infrastructure thus providing flexibility to launch new environments in a minimum timeframe.
Deployment: Continuous integration and continuous deployment were built to deploy applications on ec2 instances. We are using Github Action and Aws Code deploy for Continuous Delivery . Continuous Integration ( CI ) part is taken care of by Github Action and Continuous Deployment ( CD ) part is taken care of by Aws code deploy.
Monitoring and Alerting: We are using prometheus & grafana for capturing and visualizing the metrics, for alerting we are using alertmanager with prometheus. Also we are using EFK (Elasticsearch Filebeat Kibana) for storing and visualizing logs of applications. ILM policies have been properly setup for data rotation and keeping the cost in check
Loosely coupled: Initially Multiple applications were deployed on a single ec2 instance which is replaced with loosely coupled design to provide flexibility, scalability, and resiliency in the application, and makes it easier to modify or replace individual components without affecting the entire system. For the deployment of frontend applications we are using aws amplify.
The system was elastic and can scale based on the traffic.
System Failure was eradicated by providing high Availability.
Ease of use for the Developer to deploy & debug.
Infrastructure launched with automation which saves a lot of time.