Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sezzgi/scalable-phonebook-application


https://github.com/sezzgi/scalable-phonebook-application

aws mysql phonebook python scalable-applications terraform

Last synced: 9 days ago
JSON representation

Awesome Lists containing this project

README

        

# 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**
```bash
# 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