Semua soal system design

Design YouTube

Ingest, transcode, and stream video to a global audience with a CDN and adaptive bitrate.

Prompt latihan

  1. Problem Statement, Functional Requirements, and Scale Assumptions

    Tentukan ruang lingkup platform hosting dan streaming video: pengguna mengunggah video, video di-transcode ke beberapa resolusi, pengguna menjelajahi feed video dan mencari berdasarkan judul, dan video di-stream secara adaptif berdasarkan kondisi jaringan. Kecualikan secara eksplisit live streaming, Shorts (video bentuk-pendek), YouTube Music, YouTube Premium (langganan bebas-iklan), dan moderasi komentar dari desain awal. Nyatakan asumsi skala awal (pengguna terdaftar, unggahan video per hari, tayangan per hari, ukuran video rata-rata, rasio tayang:unggah) sebelum mengusulkan komponen apa pun.

  2. Non-Functional Requirements

    Tentukan NFR utama: latensi mulai pemutaran video (target <2 detik dari klik hingga frame pertama), waktu pemrosesan unggahan (video harus tersedia untuk ditonton dalam hitungan menit setelah unggahan selesai), kontinuitas stream (buffering minimal saat kondisi jaringan berfluktuasi, adaptive bitrate), ketersediaan (pemutaran video harus sangat tersedia bahkan saat kegagalan backend transcoding), dan pengiriman global (video harus dimuat cepat untuk pengguna di seluruh dunia).

  3. Quantitative Analysis

    Estimasikan pertumbuhan storage video harian (unggahan per hari × ukuran video mentah rata-rata), storage ter-transcode (setiap video yang diunggah menghasilkan ~5 varian resolusi × ukuran terkompresi), bandwidth CDN (tayangan harian × ukuran video rata-rata × bitrate streaming × durasi tonton rata-rata), storage metadata (baris metadata video × total video), dan QPS streaming puncak. Turunkan rasio baca:unggah dan justifikasi CDN sebagai penggerak biaya dominan.

  4. API Design

    Tentukan operasi API untuk memulai unggahan video (mengembalikan pre-signed object storage URL), memeriksa status pemrosesan unggahan, mengambil playback manifest video (HLS/DASH), mengambil feed rekomendasi (berbasis cursor), dan mencari video. Sertakan bentuk request/response, siklus hidup status unggahan (processing → available → failed), dan struktur response playback manifest (daftar URL resolusi dan petunjuk bitrate untuk adaptive streaming).

  5. High-Level Design

    Usulkan komponen utama: upload service (menerima video mentah, menyimpan ke object storage, memicu transcoding), transcoding pipeline (worker terdistribusi menghasilkan segmen HLS/DASH pada beberapa resolusi), CDN (menyajikan segmen video secara global dengan edge caching), metadata service (menyimpan metadata video dan data pengguna), recommendation service (menghasilkan feed terpersonalisasi), dan search service (mengindeks judul dan deskripsi video). Telusuri sebuah video dari selesainya unggahan melalui transcoding, distribusi CDN, dan pemutaran pertama.

  6. Additional High-Level Design Prompts

    Bahas tiga area lanjutan: (1) Deduplikasi video, bagaimana mendeteksi unggahan video duplikat atau nyaris-duplikat pada skala besar (perbandingan perceptual hash pada fingerprint video, bukan hash level-byte) untuk menghemat biaya storage dan transcoding; (2) Unggahan yang dapat dilanjutkan, bagaimana pengguna dapat menghentikan unggahan video besar dan melanjutkan dari chunk terakhir yang di-ack (sesi multipart upload sisi-klien dengan state sisi-server); (3) Akurasi jumlah tayangan, bagaimana memelihara jumlah tayangan yang akurat untuk video populer tanpa menciptakan write hotspot per-video (sharding counter, counter aproksimasi dengan konsolidasi eventual).

  7. Deep Dives

    Deep dive ke tiga area: (1) Transcoding pipeline, worker encoding video terdistribusi memproses video mentah yang diunggah secara asinkron; video dipecah menjadi chunk dan di-transcode secara paralel pada 360p, 480p, 720p, 1080p, 4K (tidak semua resolusi untuk semua video, video pendek murah melewati 4K); format output: segmen HLS (HTTP Live Streaming) 6-10 detik per file .ts dengan manifest .m3u8, atau DASH; segmen didorong ke object storage lalu ditarik oleh CDN; retry saat worker gagal (job transcode segmen idempoten); (2) Adaptive bitrate streaming, player klien menerima manifest HLS yang mendaftar resolusi yang tersedia; ia memantau kecepatan unduh dan kepenuhan buffer; jika buffer turun di bawah 10 detik, ia beralih ke URL segmen resolusi lebih rendah; jika buffer sehat, ia beralih ke resolusi lebih tinggi; peralihan ini terjadi per-segmen secara transparan; (3) Recommendation engine, riwayat tonton pengguna, sinyal engagement (like, fraksi tonton, event skip), fitur konten (judul, deskripsi, transkrip) dimasukkan ke ranking dua-tahap: candidate generation (mengambil top-N kandidat dari collaborative filtering atau kemiripan konten) dan ranking (men-skor kandidat dengan neural ranker menggunakan fitur engagement); dihitung ulang secara periodik (setiap beberapa jam), bukan per request.

  8. Final Review Handoff Readiness

    Ringkas keputusan desain utama: pipeline unggahan (langsung-ke-object-storage dengan pre-signed URL), transcoding (worker segmen paralel, output HLS, retry idempoten), CDN (jalur baca dominan, edge caching), adaptive bitrate (peralihan kualitas berbasis-buffer sisi-klien), rekomendasi (candidate generation dua-tahap + neural ranking). Soroti dua pertanyaan terbuka (durasi segmen optimal untuk HLS, trade-off antara akurasi seek dan ukuran manifest, dan cold-start untuk rekomendasi video baru) dan usulkan rollout bertahap: unggahan + transcoding dasar dulu, pengiriman CDN kedua, rekomendasi terakhir.

Preview solusi

Design YouTube, Solusi Referensi Scope Problem Sebuah platform hosting dan streaming video di mana user meng-upload video, video di-transcode ke banyak resolusi, user menjelajahi dan mencari katalog video, dan video di-stream secara adaptif berdasarkan kondisi jaringan. Di luar scope: live streaming, YouTube Shorts, YouTube Music, YouTube Premium (bebas ikla…

Lihat paket belajar di pricing