Cloud Infrastructure Case Study

AWS Three-Tier Web Application Infrastructure

An AWS infrastructure implementation for deploying a supplied Django blog application across a multi-AZ network architecture with load balancing, automatic scaling, managed database services, secure content delivery, and failover routing.

  • Project type: AWS cloud infrastructure course project
  • Primary role: Infrastructure design, configuration, deployment, and integration
  • Application code: Supplied Django application
  • Deployment status: AWS resources decommissioned

Back to Portfolio

Project Overview

The project focused on deploying a supplied Django blog application into an isolated AWS VPC. The infrastructure separated public-facing traffic, application servers, and the database layer while supporting media storage, automatic scaling, HTTPS delivery, and a static failover page.

Project Context and My Role

The Django application and initial project requirements were supplied as part of a Clarusway course project. The work focused on creating and configuring the AWS environment, connecting the application to Amazon RDS and Amazon S3, preparing EC2 launch automation, and integrating networking, security, scaling, content delivery, and failover components.

Architecture

Primary request flow and media/event flows used a combination of load balancing, managed services, and event-driven functions to process uploads and serve content securely.

Architecture diagram of the AWS three-tier Django application deployment
Multi-AZ AWS architecture with CloudFront, Route 53, load balancing, EC2 application instances, Amazon RDS, Amazon S3, AWS Lambda, and DynamoDB.

Route 53

→ Amazon CloudFront

→ Application Load Balancer

→ Auto Scaling Group

→ Amazon EC2 instances running Django

→ Amazon RDS for MySQL

Django application

→ Amazon S3

→ S3 event notification

→ AWS Lambda

→ Amazon DynamoDB

Route 53 health check

→ Primary: CloudFront and the application environment

→ Secondary: Amazon S3 static maintenance page

Network Design

The infrastructure used a dedicated VPC across two Availability Zones. Each AZ contained one public and one private subnet. Public subnets hosted internet-facing components; private subnets hosted application and database resources. An Internet Gateway and route tables provided external connectivity, with NAT-based outbound access for private resources. Security group rules allowed traffic from the load balancer to application instances and from instances to the database.

Application and Data Layers

  • Django application deployed to Amazon EC2
  • Launch Template used to automate instance preparation
  • Auto Scaling Group distributed across Availability Zones
  • Application Load Balancer used for traffic distribution and health checks
  • Amazon RDS for MySQL used for relational application data
  • Amazon S3 used for uploaded media
  • Amazon DynamoDB used to record S3 object information
  • AWS Lambda triggered by S3 events

Availability and Traffic Management

Application Load Balancer was used for traffic distribution and health checking. Auto Scaling Group maintained application capacity across AZs. Amazon CloudFront provided content delivery; AWS Certificate Manager managed TLS certificates and HTTP-to-HTTPS redirection. Route 53 health checks and failover routing used a static S3 maintenance page as the secondary target.

Technology Stack

Networking

  • Amazon VPC
  • Public and private subnets
  • Route tables
  • Internet Gateway
  • NAT connectivity
  • Security Groups

Compute and Scaling

  • Amazon EC2
  • Launch Templates
  • Auto Scaling Group
  • Application Load Balancer
  • Bash user data

Data and Storage

  • Amazon RDS for MySQL
  • Amazon S3
  • Amazon DynamoDB

Delivery and DNS

  • Amazon CloudFront
  • Amazon Route 53
  • AWS Certificate Manager

Application and Integration

  • Django
  • Python
  • AWS Lambda
  • S3 event notifications

Architecture Decisions and Modernization Notes

Multi-AZ subnet design separated public, application, and database concerns. Load balancing and Auto Scaling supported replaceable application instances. Amazon RDS provided a managed relational database layer, and Amazon S3 separated uploaded media from application instances. CloudFront and Route 53 provided content delivery and DNS routing. The implementation followed the course requirements available at the time. For a current redesign, administrative access and IAM permissions would be further restricted through least-privilege policies and managed access mechanisms. A current redesign would also evaluate managed NAT Gateway or other modern outbound-access patterns depending on cost and architecture requirements.

Project Status

The original AWS resources, domain configuration, and live environment have been decommissioned. The project is retained as an AWS infrastructure implementation and architecture case study.

Back to Portfolio