█
LastWrite
  • > Curriculum
  • > Pricing
  • > For Educators
  • > About
  • > Contact
Log InGet Started

Questions, concerns, bug reports, or suggestions? We read every message, write to us at [email protected].

More ways to reach us →
LastWrite

Structured computer science lessons for aspiring developers and security professionals.

[email protected]

(201) 785-7951

Mon–Fri, 9 AM–5 PM EST

Learn

  • Curriculum
  • Pricing

Company

  • About
  • For Educators & Schools
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
© 2026 LastWrite. All rights reserved.
Curriculum/DevOps and Infrastructure/Cloud Platforms — AWS/Passion Project: 3-Tier App on AWS
240 minAdvanced

Passion Project: 3-Tier App on AWS

After this lesson, you will be able to: Deploy a full application on AWS using S3 for static assets, RDS for the database, EC2 or Lambda for the backend, and CloudFront for the CDN. Document the architecture.

Passion project for the AWS sub-track per Curriculum-Upgrade.md. Spend a weekend; build the deploy you'll point at in every cloud job interview.

Prerequisites:AWS Certification Path

Milestone 1 — Pick your shape

Two valid paths; pick one.

  1. 1

    Path A (Classic 3-tier): CloudFront → S3 (static) + ALB → EC2 (backend) → RDS Postgres

  2. 2

    Path B (Serverless): CloudFront → S3 (static) + API Gateway → Lambda → RDS Proxy → RDS Postgres

  3. 3

    Path B is cheaper if traffic is bursty; Path A is simpler if you've done EC2 before

Milestone 2 — Provision (use Terraform or CDK)

Click-ops is the practice run; IaC is the deliverable.

  1. 1

    Bootstrap a Terraform module: provider, VPC, public/private subnets in 2 AZs

  2. 2

    Resources: VPC, IGW, NAT, security groups, RDS Postgres (Multi-AZ for bonus), S3 bucket, CloudFront distribution

  3. 3

    IAM roles: instance profile (EC2) or execution role (Lambda); least-privilege policies

  4. 4

    Secrets: AWS Secrets Manager for DB password; data source in Terraform

  5. 5

    Apply incrementally, networking first, then storage, then compute

  6. 6

    Keep the Terraform state in S3 + DynamoDB lock (or Terraform Cloud free tier)

Milestone 3 — Deploy your app

Wire your real app code into the provisioned infra.

  1. 1

    Pick your app (a Next.js + Express, or the one from do-docker-passion)

  2. 2

    Backend (Path A): build, scp to EC2, install + systemd unit (from do-linux-04)

  3. 3

    Backend (Path B): build, zip / push container image, deploy Lambda via SAM or via Terraform

  4. 4

    Frontend: build static assets, aws s3 sync ./dist s3://my-static-bucket

  5. 5

    Wire DNS: Route 53 → CloudFront

  6. 6

    Get TLS via ACM (AWS Certificate Manager, free, auto-renewing)

  7. 7

    First end-to-end browse: home page loads, API returns data, DB write persists

Milestone 4 — Operationalise

Production isn't 'works once'; it's 'survives a Tuesday'.

  1. 1

    Set CloudWatch alarms: API 5xx rate, DB CPU > 80%, NAT bandwidth

  2. 2

    Enable CloudTrail (audit log)

  3. 3

    Set up a billing alarm at $20

  4. 4

    Backup: RDS automated daily; manual snapshot before any schema change

  5. 5

    Document the runbook: how to deploy, how to rollback, who to page

Milestone 5 — Architecture diagram + README

The diagram is the deliverable hiring managers will skim.

  1. 1

    Use AWS architecture icons (https://aws.amazon.com/architecture/icons/) in Excalidraw or draw.io

  2. 2

    Show: CloudFront, S3, ALB / API Gateway, EC2 / Lambda, RDS, NAT, all in their VPC subnets

  3. 3

    README: live URL, what's deployed, the architecture diagram, the Terraform repo link, the monthly cost estimate

  4. 4

    Bonus: a brief 'what I'd do differently at 10x scale' section

💡 How to talk about this in an interview

Pull up the AWS console + the architecture diagram on screen-share. Walk through the request lifecycle: 'browser → CloudFront cache check → S3 origin for static / API Gateway for /api → Lambda → RDS Proxy → RDS.' Show the Terraform: 'here's the VPC module; here's the RDS module.' Show CloudWatch dashboards. Mention cost: 'currently $35/mo; mostly NAT + RDS.' Five minutes of this proves you operate real AWS.

Cost gotchas to know in advance

NAT Gateway: ~$30/mo idle. The biggest 'wait what' line. Use S3 VPC Endpoint to avoid NAT for S3 traffic. RDS Multi-AZ: doubles RDS cost. Justified for prod; expensive for learning. Start single-AZ. CloudFront: free tier is generous (1TB egress, 10M requests/mo). Forgotten Elastic IPs: $5/mo each. Release after the EC2 is terminated. Realistic monthly bill for this project as configured: $30-60. Tear down within a few days when done learning.

Sign in and purchase access to unlock this lesson.

Sign in to purchase
←AWS Certification Path
Back to Cloud Platforms — AWS
AWS Job Readiness→