View videos with title and description
Search video
Upload videos
Scalability
Performance
Durability
Availability
Reliability
Estimate the scale of the system you are going to design...
Get videos/video_id
Get users/
Post videos/video_id
Video
id
title
description
uploaded_by
creation_time
updated_time
status
s3_url
User
User uploads a video
Video is broken into chunks for uploading
Video will also be converting to different resolution after the upload.
Chunks will be stored in storage like S3 and CDN for fast retrievel.
Video player
Video upload service
Video search service
Video metadata service
Protocol to use to upload video - long polling/web socket
To handle concurrent uploads, we could use message queue
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?