Question #817
A company is developing a global video streaming platform that allows users to upload and transcode videos in real-time. At peak, the service must handle 15,000 concurrent uploads worldwide. After upload, videos must be processed to generate adaptive bitrate streams, which are then distributed via a content delivery network (CDN).
Which architecture should a solutions architect recommend?
Store uploaded videos in Amazon Elastic File System (Amazon EFS). Use Amazon CloudWatch Logs to track upload events. Deploy Amazon EC2 instances that monitor CloudWatch Logs to trigger video processing. Store transcoded videos in a separate EFS directory. Configure Amazon CloudFront with an EC2 instance as the origin.
Store uploaded videos in an Amazon S3 bucket and configure S3 event notifications to publish to Amazon Simple Notification Service (Amazon SNS). Use EC2 instances behind an Application Load Balancer (ALB) to consume SNS messages for processing. Store transcoded videos in Amazon EFS. Scale EC2 instances using CloudWatch metrics for SNS message volume. Set CloudFront's origin to the ALB.
Store uploaded videos in an Amazon S3 bucket and configure S3 event notifications to send messages to an Amazon Simple Queue Service (SQS) queue. Deploy auto-scaling EC2 instances to process videos by pulling messages from the SQS queue. Store transcoded videos in another S3 bucket. Scale EC2 instances based on SQS queue depth using CloudWatch. Configure CloudFront with the processed S3 bucket as the origin.
Store uploaded videos on a shared Amazon Elastic Block Store (EBS) volume attached to EC2 Spot instances. Track processing status in an Amazon DynamoDB table. Use Amazon EventBridge rules to scale EC2 instances. Configure CloudFront with an Elastic Load Balancer (ELB) as the origin.
Explanation
Option C is correct because:
1. S3 for Uploads: Amazon S3 is ideal for handling high concurrency and large-scale object storage, unlike EFS/EBS (Options A/D), which are better for shared file/block storage.
2. SQS for Event-Driven Processing: S3 event notifications trigger SQS messages, ensuring reliable, decoupled processing. Scaling EC2 instances based on SQS queue depth (via CloudWatch) allows efficient resource utilization, unlike SNS (Option B), which lacks built-in queuing.
3. Transcoded Videos in S3: Storing processed videos in another S3 bucket aligns with static content best practices and integrates seamlessly with CloudFront.
4. CloudFront with S3 Origin: Directly using S3 as the CDN origin reduces latency and complexity compared to ALB/EC2 origins (Options A/B/D).
Why others are incorrect:
- A: EFS is unsuitable for high-throughput uploads; CloudWatch Logs are inefficient for triggering real-time processing.
- B: SNS requires subscribers (e.g., HTTP endpoints) and lacks built-in queuing, making scaling less efficient.
- D: EBS/Spot Instances are unreliable for critical workloads; ELB as origin adds unnecessary overhead.
Answer
The correct answer is: C