ZenMode

ZenMode

Share this post

ZenMode
ZenMode
How to Design YouTube’s Video Upload System (Google L7 Interview Breakdown)

How to Design YouTube’s Video Upload System (Google L7 Interview Breakdown)

We will breakdown the system design problem asked in google for L7

venkat's avatar
venkat
Apr 01, 2025
∙ Paid
2

Share this post

ZenMode
ZenMode
How to Design YouTube’s Video Upload System (Google L7 Interview Breakdown)
2
Share

Welcome to ZenMode Newsletter, where we pick apart a simple-to-complex system design interview questions (L2- L7) and focus on the depth and nuance expected in top-tier interviews.

This question was asked by Google for an L7 senior position.
Design a YouTube upload system.


For engineers aiming high (Senior Staff, L7+), designing systems with this kind of scale and resilience is exactly the kind of tough challenge you'll face in interviews. It forces you to grapple with distributed processing, storage optimization, making things fail gracefully, and just massive scale.

Intrigued? Let's explore the system design that makes YouTube's upload magic happen.

⭐Tip: For a Senior Staff (L7+) level interview, designing this system means going beyond basic flows. It demands a deep understanding of distributed processing, storage optimization, fault tolerance, network protocols, and managing on a massive scale.

If you'd like to try it first, do so before reading on

1. Requirements & Constraints

Understanding the requirements means thinking about extremes and guarantees.

1.1 Functional Requirements:

  • Video Upload: Users can upload videos in various formats (MP4, MOV, AVI, etc.) and sizes (potentially Terabytes).

  • Metadata Association: Users provide title, description, tags, category, privacy settings (public, private, unlisted), etc., during or after upload.

  • Resumable Uploads: Uploads must survive network interruptions and client/browser crashes.

  • Parallel Uploads: Allow users to upload multiple videos simultaneously.

  • Processing: Transcode uploaded videos into multiple resolutions (e.g., 144p, 360p, 720p, 1080p, 4K) and formats (e.g., H.264, VP9, AV1) suitable for Adaptive Bitrate Streaming (ABR).

  • Thumbnail Generation: Extract or allow users to upload representative thumbnails.

  • Content ID / Copyright Check: Scan videos against a database of copyrighted material. (Critical business requirement).

  • Status Tracking: Provide users with real-time upload progress and processing status.

  • Basic Validation: Perform initial checks (file format, size limits, basic integrity).

1.2 Non-functional Requirements:

  • Extreme Scalability: Handle millions of concurrent uploads globally. Scale ingestion throughput horizontally.

  • High Durability: Uploaded videos (source) must never be lost (e.g., 11 9s of durability). Processed versions also need high durability.

  • High Availability: The upload endpoints and processing pipeline must be highly available, minimizing user-facing errors.

  • Fault Tolerance: The system must tolerate failures of individual components (servers, networks, processing jobs) without losing data or halting progress for other uploads.

  • Low Upload Latency: Minimize the time from the user clicking "upload" to the file being fully received by the YouTube infrastructure. Geographic proximity matters.

  • Optimized Time-to-Playback: Minimize the time from upload completion to the video being available for viewing in at least one standard resolution.

  • Cost-Effectiveness: Optimize compute (transcoding is expensive) and storage costs (petabytes daily).

  • Observability: Comprehensive monitoring, logging, and tracing across the distributed pipeline are essential for debugging and performance analysis.

  • Security: Protect against malicious uploads and ensure user privacy settings are enforced.


Designing a Video Upload System (YouTube Scale)

Today, we tackle the design of a highly scalable and resilient Video Upload System, akin to the backend pipeline powering YouTube. While users experience a seemingly simple "upload" button, the infrastructure required to reliably ingest, process, and prepare potentially petabytes of video data daily from millions of users worldwide represents a significant distributed systems challenge. The below diagram conceptually illustrates a user interacting with an upload interface.

Figure 1: Conceptual Video Upload Interface

(This diagram conceptually represents the key components a user would interact with or see on a video upload screen as described: file selection, progress, metadata input fields, thumbnail options, status updates, and the final action button.)

The scale of platforms like YouTube is staggering. Recalling stats from our requirement discussions (even if focused on viewing) helps set the context for upload demands:

  • Total number of monthly active users: 2 billion+.

  • Content Creators: 50 million+.

  • Videos Uploaded: While exact public figures vary, estimates range from hundreds of hours to over 500 hours of video uploaded every minute. This translates to hundreds of terabytes, potentially petabytes, of raw video data ingested daily.

Designing for this scale requires meticulous attention to scalability, durability, fault tolerance, and cost-effectiveness. It's a quintessential challenge for engineers operating at Senior Staff (L7) levels and above, demanding mastery of distributed systems principles.


Step 1 - Understand the Problem and Establish Design Scope

This post is for paid subscribers

Already a paid subscriber? Sign in
© 2025 venkat
Privacy ∙ Terms ∙ Collection notice
Start writingGet the app
Substack is the home for great culture

Share