# Designing a Scalable and Serverless Photo Album Application on AWS
1. Storage with Managed Cloud Services
We will use Amazon S3 (Simple Storage Service) for storing photo and media assets. S3 is a highly
scalable, durable, and cost-effective object storage service, and it integrates seamlessly with other AWS
services.
2. Scalability to Handle Increasing Demand (serverless/event-driven solution)
To cope with the expected growth, we will use AWS Lambda and other serverless services that
automatically scale based on incoming traffic. AWS Lambda is event-driven and executes code in
response to triggers, allowing it to handle varying workloads efficiently. By adopting a serverless
approach, your application will automatically scale up and down as needed, minimizing the need for
manual intervention.
3. Load Balancing to Maintain Optimal Compute Capacity
We will utilize AWS Elastic Load Balancing (ELB) to distribute incoming traffic across multiple instances,
ensuring the desired load stays between 50% and 60%. ELB automatically scales with demand, providing
seamless load distribution and high availability.
4. Adopting a Serverless/Event-Driven Solution
As mentioned earlier, AWS Lambda will play a central role in the architecture. It will be used to handle
various events, such as photo uploads, media processing triggers, and more. Additionally, AWS Step
Functions can be employed to orchestrate complex workflows involving multiple Lambda functions.
5. Cost-Effective Database Solution
Considering the simple table structure, we recommend migrating from a traditional relational database
to Amazon DynamoDB. DynamoDB is a fully managed NoSQL database that offers low-latency, high-
performance access, and cost-effectiveness for read and write operations.
6. Improving Global Response Times
To improve response times in different regions worldwide, we will utilize Amazon CloudFront, a content
delivery network (CDN). CloudFront caches and delivers your media assets from edge locations close to
your end-users, reducing latency and improving user experience.
7. Future Handling of Video Media
To support video media in the future, we recommend using AWS Elemental MediaConvert. It is a
serverless video transcoding service that can automatically convert uploaded videos to various formats,
resolutions, and bitrates.
8. Media Reprocessing and Transformation
For reformatting and transcoding media, we propose the following design:
a. Event-Driven Transformation: Upon media upload to S3, an S3 event trigger will invoke a Lambda
function to start the media transformation process.
b. Lambda-based Media Processing: The Lambda function will be responsible for identifying the type of
media and creating a corresponding job in an Amazon Simple Queue Service (SQS) queue.
c. Decoupled and Scalable Worker Nodes: Multiple EC2 instances (worker nodes) will be configured to
listen to the SQS queue for incoming transformation jobs. Each EC2 instance can be specialized for a
specific task (e.g., video transcoding, image resizing). This ensures efficient utilization of resources and
parallel processing.
d. Dynamic Job Allocation: To accommodate potential AI-based tagging or other processing services in
the future, we can leverage AWS Elastic Container Service (ECS) or AWS Fargate. These managed
container services can be used to deploy and manage custom processing tasks without worrying about
the underlying infrastructure.
Workflow:
User → AWS API Gateway → Lambda → SQS (media stored when triggered by lambda) → Fargate →
SQS → fargate
Lambda → S3 → CloudFront → user
Lambda → DynamoDB