Deploying a Student Project on AWS: What I Actually Learned

March 28, 2025#aws#deployment#serverless

AWS learning path

What I actually deployed

A Next.js app, a Postgres database, user-uploaded images, and a scheduled job. Six services later, the architecture is: Next.js on EC2, Postgres on RDS, images in S3 behind CloudFront, and one Lambda for the cron job. That is four services doing real work.

What earned its keep

  • RDS + EC2 in the same VPC. Private subnet, security groups, no public exposure. This pairing is the single most underrated setup in cloud learning.
  • S3 + CloudFront. Images served from a CDN with long cache headers — instant page loads, near-zero cost.
  • One Lambda on a schedule. The nightly "release locked seats" job. Pay-per-invocation beats paying for a server that sleeps.

What was a detour

DynamoDB. My data is relational; a document store was a second database with worse joins. API Gateway. The app talks to my own API — an ALB does the same job with less configuration.

The lesson that stuck

Cloud services are not a menu to order from — they are a toolbox, and the tool you skip is a decision too. I spent two weeks integrating a service I removed in two hours.

The message-queues post is the sibling lesson on the backend side.

***