Skip to content
BytePatterns

Design a System on AWS

AWS for Interviews: lesson 12 of 18

Draw the request path, then walk the six pillars as follow-ups.

Lesson 12 of 18 · 8 min

Design a System on AWS

Step 1 of 12

The prompt: users upload photos and see a thumbnail within seconds. Start from the request path, one box at a time.

The Idea

The Well-Architected Framework reviews a design against six pillars: operational excellence, security, reliability, performance efficiency, cost optimization and sustainability. In an interview, draw the request path first, then walk the pillars as follow-up questions you answer before they are asked.

Real-World Example

Photo uploads. The API returns a presigned URL and the browser uploads straight to S3. An event notification feeds an SQS queue; a Lambda function writes thumbnails to a second bucket — writing back to the trigger bucket risks a loop — and records status in DynamoDB. CloudFront serves thumbnails; failures land in a dead-letter queue with an alarm.

The Tradeoff

The queue makes thumbnails ready in seconds rather than instantly, and every managed piece is one more thing to monitor. Say so, then say why it is worth it: bursts are absorbed and one bad file cannot block the rest.

Hands-On

# illustrative — needs AWS credentials; bucket and key are placeholders
import boto3

s3 = boto3.client("s3")
url = s3.generate_presigned_url(
    "put_object",
    Params={"Bucket": "uploads-raw", "Key": "u/42/cat.jpg", "ContentType": "image/jpeg"},
    ExpiresIn=300,  # seconds
)
# the browser PUTs the file to `url` with the same Content-Type

Your turn

Put the steps in the right order.

  1. A Lambda function writes the thumbnail to a second bucket
  2. The browser asks the API for a presigned upload URL
  3. S3 sends an event notification for the new object to the queue
  4. The browser PUTs the file directly to S3

Mini quiz

1 / 3

Which of these is NOT one of the six Well-Architected pillars?

Sources

New lessons land every few weeks

Leave an address and we will tell you when the next one is up. That is the only reason we will use it.

One address, stored so we can email you. Nothing else, ever.