A highly available phonebook web application deployed on AWS with auto-scaling capabilities, built using Python Flask, MySQL RDS, and Infrastructure as Code with Terraform.
This project demonstrates enterprise-level cloud architecture by implementing a scalable phonebook application. It showcases:
- High Availability using AWS Application Load Balancer
- Auto-scaling EC2 instances
- Managed MySQL database with AWS RDS
- Infrastructure as Code using Terraform
- CI/CD best practices
- Search: Find contacts quickly with case-insensitive search
- Add/Update: Create and modify contact information
- Delete: Remove outdated contacts
- Data Validation: Smart input validation for names and phone numbers
- Auto-scaling: Handles traffic spikes automatically
- High Availability: Runs across multiple availability zones
- Application Load Balancer with auto-scaling EC2 instances
- MySQL RDS for persistent storage
- Multiple security groups for enhanced security
- Distributed across availability zones
- Backend: Python Flask
- Database: AWS RDS (MySQL 8.0)
- Infrastructure:
- AWS (ALB, EC2, Auto Scaling, RDS)
- Terraform for IaC
- Security: Custom security groups, isolated database tier
-
Prerequisites
- AWS Account
- Terraform installed
- AWS CLI configured
-
Deployment
# Clone repository git clone [repository-url] # Initialize Terraform terraform init # Deploy infrastructure terraform apply # Access application (URL in Terraform output)
- Load balanced across availability zones
- Auto-scales between 1-3 instances
- t2.micro EC2 instances with custom launch template
- Private subnet RDS instance
- Automated deployment with Terraform