Name App
A simple containerized web application deployed on AWS using a highly available three-tier architecture. Infrastructure is provisioned with Terraform and application deployment is automated through GitHub Actions.
Application Architecture
The application runs across three Availability Zones inside an AWS VPC. Public subnets contain the Application Load Balancer and NAT Gateway, while the application servers and PostgreSQL database remain private.
Automated Deployment
Every push to the main branch builds and tests the Docker image, pushes it to Amazon ECR and triggers an Auto Scaling instance refresh so new instances pull the latest image.
Git Push
Code is pushed to the main branch.
GitHub Actions
Docker image is built and dependencies are tested.
Amazon ECR
Image is tagged and pushed to the private registry.
Instance Refresh
ASG replaces instances using the latest deployment.
ALB Health Check
Only healthy application instances receive traffic.
Application
A minimal Flask application where users can submit their names and view stored records from PostgreSQL. The interface also exposes the application instance, AWS Region and Availability Zone handling the request.
AWS Infrastructure
Supporting AWS console screenshots showing the deployed infrastructure and application health.
CI/CD Pipeline
GitHub Actions handles the container build, validation, Amazon ECR push and deployment trigger.
Monitoring
CloudWatch alarms monitor EC2 CPU utilization, ALB healthy targets and RDS CPU utilization.
Technology Stack
Python · Flask · PostgreSQL · HTML · CSS
Docker · Amazon ECR
Terraform · Amazon VPC · EC2 · RDS · ALB
EC2 Auto Scaling · Multi-AZ deployment
GitHub Actions · OIDC · ECR · ASG Instance Refresh
Amazon CloudWatch · ALB Health Checks
IAM · Security Groups · Secrets Manager · Private Subnets
VPC · 3 AZs · Public/Private Subnets · IGW · NAT Gateway
Asia Pacific (Mumbai) · ap-south-1
What I Built
Infrastructure as Code
AWS networking, security groups, ALB, Auto Scaling, RDS, NAT Gateway and supporting infrastructure are provisioned with Terraform.
Containerized Application
Flask application is packaged as a Docker image and stored in a private Amazon ECR repository.
Private Application Tier
EC2 application instances run inside private subnets and receive traffic only through the ALB.
Private Database
PostgreSQL runs on Amazon RDS inside private subnets and accepts connections from the application security group.
Automated Deployment
GitHub Actions automatically builds, tests and publishes the image before triggering an ASG instance refresh.
Monitoring & Health Checks
CloudWatch alarms and ALB health checks provide visibility into application and infrastructure health.
Deployment Workflow
Source Code
Terraform infrastructure, Docker configuration, Flask application code and GitHub Actions workflow are available in the repository.
View GitHub Repository ↗