Skip to content

Latest commit

 

History

History
67 lines (49 loc) · 1.85 KB

README.md

File metadata and controls

67 lines (49 loc) · 1.85 KB

Scalable Phonebook Application

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.

Overview

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

Features

  • 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

Architecture

  • Application Load Balancer with auto-scaling EC2 instances
  • MySQL RDS for persistent storage
  • Multiple security groups for enhanced security
  • Distributed across availability zones

Technologies

  • 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

Quick Start

  1. Prerequisites

    • AWS Account
    • Terraform installed
    • AWS CLI configured
  2. Deployment

    # Clone repository
    git clone [repository-url]
    
    # Initialize Terraform
    terraform init
    
    # Deploy infrastructure
    terraform apply
    
    # Access application (URL in Terraform output)

Infrastructure Details

  • 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