This project demonstrates a production-style AWS architecture built manually using the AWS Management Console.
It showcases real-world AWS infrastructure design, focusing on high availability, scalability, auto-healing, and load-balanced web applications.
This architecture deploys a highly available web application across multiple Availability Zones using:
- VPC with public subnets
- Internet Gateway + Route Tables
- Security Groups with least privilege
- EC2 instance with Apache (via user-data script)
- Custom AMI creation
- Launch Template based on AMI
- Application Load Balancer (ALB)
- Target Group (TG)
- Auto Scaling Group (ASG)
The system automatically:
- distributes traffic
- scales based on load
- replaces unhealthy EC2 instances
- maintains desired capacity
Example:
AWS Architecture_ Auto Scaling Load Balancer.png
- Custom VPC created (CIDR example:
10.0.0.0/16) - Two public subnets in two different AZs
- Public Route Table associated with both public subnets
- Internet Gateway attached
Purpose: Multi-AZ setup ensures high availability.
- ALB Security Group
- Inbound: HTTP (80) from anywhere
- EC2 Security Group
- Inbound: HTTP (80) only from ALB SG
- More secure approach: no public access to EC2
Purpose: Enforces least-privilege traffic flow.
- Amazon Linux / Ubuntu instance
- EC2 SG attached
- User Data used to install Apache + custom HTML:
#!/bin/bash
sudo apt update -y
sudo apt install apache2 -y
echo "<h1>Welcome to my Auto Scaling Project</h1>" > /var/www/html/index.html
sudo systemctl start apache2
sudo systemctl enable apache2Result: A running web server in your custom VPC.
- A custom AMI created from the EC2 instance
- This AMI contains pre-installed Apache + app files
Purpose: Enables fast, consistent, identical environment deployment.
- Launch Template created using:
- Custom AMI
- Instance type
- EC2 Security Group
- User data (optional, since AMI already configured)
Purpose: ASG uses this template to create new instances automatically.
- Target type: Instances
- Health check:
/on port 80 - Will dynamically register EC2 instances launched by ASG
- ALB created in both public subnets
- Listener: HTTP (80)
- Target Group attached
Result: ALB distributes traffic across all healthy EC2s.
- ASG configured using Launch Template
- VPC Subnets: Both public subnets
- Desired capacity: 1
- Min: 1, Max: 2
- Health checks: ELB
- Automatically registers instances to Target Group
Outcome:
- If traffic increases → ASG scales out
- If instance fails → ASG replaces it
- If load decreases → ASG scales in
- VPC design
- Multi-AZ architecture
- Security Group modeling
- EC2 provisioning
- Application Load Balancer
- Auto Scaling Group
- Launch Templates
- AMI lifecycle
- High Availability (HA)
- Auto Healing
- Horizontal Scaling
- Elastic Load Balancing
- Golden Image pattern
- Infrastructure segmentation
- Clear understanding of cloud infrastructure
- Ability to design scalable systems
- Knowledge of traffic flow & security boundaries
- Understanding of stateless architecture
- High traffic websites
- Auto scaling web apps
- Disaster recovery setups
- Fault-tolerant systems
- Production-grade backend servers
- Infrastructure as Code (Terraform)
- Configuration Management (Ansible)
- CI/CD with Jenkins + GitHub Actions
- Containerization (Docker & Kubernetes)
- ALB + ASG + RDS multi-tier architecture
Ramkumar Baghel
Cloud & DevOps Enthusiast | AWS | Terraform | Linux | Docker | CI/CD