Wawancara Desain Sistem: Rancang Netflix
"Rancang Netflix" adalah masalah yang didominasi pembacaan, dikuasai oleh satu fakta: menyajikan video pada skala global jauh lebih merupakan masalah pengiriman konten dan penyimpanan daripada masalah komputasi. Pewawancara ingin melihat Anda memisahkan control plane (penjelajahan, pencarian, rekomendasi) dari data plane (benar-benar men-streaming byte) dan bernalar tentang cara mengirim data berskala petabyte sedekat mungkin dengan pengguna.
Kerjakan secara berurutan: perjelas kebutuhan, perkirakan skala, rancang pipeline upload/transcoding, lalu jalur pemutaran melalui CDN, dan tutup dengan bitrate adaptif serta trade-off. Panduan di bawah mengikuti struktur ini agar Anda melatih penalaran, bukan menghafal sebuah arsitektur.
1. Memperjelas kebutuhan
Pisahkan kebutuhan fungsional dari non-fungsional dan batasi ruang lingkup secara ketat. Intinya adalah: pengguna menjelajahi katalog dan melakukan streaming video dengan lancar di berbagai perangkat dan kondisi jaringan.
- Fungsional: menjelajahi/mencari katalog, memulai pemutaran, kualitas adaptif, melanjutkan dari posisi terakhir, multi-perangkat.
- Non-fungsional: ketersediaan sangat tinggi, latensi mulai yang rendah, pemutaran lancar (tanpa buffering), jangkauan global.
- Di luar ruang lingkup (katakan secara eksplisit): detail internal ML rekomendasi, penagihan, detail DRM — sebutkan saja, lalu tunda.
2. Memperkirakan skala
Angka-angka ini mendukung desain yang mengutamakan CDN. Anggap ratusan juta pelanggan dan jutaan stream yang bersamaan pada saat puncak. Satu stream tunggal mengonsumsi beberapa Mbps, sehingga output gabungan mencapai puluhan terabit per detik — mustahil dilayani dari beberapa data center pusat saja, yang langsung memotivasi caching di edge.
3. Pipeline ingesti dan transcoding
Master yang diunggah diproses secara offline, bukan di jalur pemutaran. Setiap judul ditranscoding menjadi banyak rendition — berbagai resolusi dan bitrate — dan disegmentasi menjadi potongan kecil (beberapa detik masing-masing) untuk streaming adaptif.
- Transcoding farm: mengonversi master menjadi rendition H.264/H.265/AV1 pada beberapa bitrate; ini adalah pekerjaan batch yang sangat mudah diparalelkan.
- Segmentasi dan packaging: membagi setiap rendition menjadi segmen-segmen pendek dengan manifest (HLS/DASH) yang mendeskripsikannya.
- Menyimpan output di object storage (semacam S3) sebagai sumber kebenaran, lalu mendorong konten populer ke edge.
4. CDN dan jalur pemutaran
Pemutaran dilayani dari edge, bukan dari origin. Segmen video di-cache pada node CDN yang secara fisik dekat dengan pengguna (Netflix mengoperasikan appliance Open Connect miliknya sendiri di dalam ISP). Klien mengambil manifest, lalu menarik segmen dari node edge terdekat yang sehat.
Control plane (katalog, pencarian, profil pengguna, 'lanjutkan menonton') adalah kumpulan layanan API stateless yang terpisah, didukung oleh basis data dan cache sendiri — ia mengembalikan metadata dan URL manifest, dan sepenuhnya terpisah dari pengiriman byte yang berat.
- Cache edge (CDN/Open Connect): melayani sebagian besar byte; menempatkan judul populer di muka per wilayah sebelum permintaan terjadi.
- Penyimpanan origin: object store yang mendukung cache miss.
- API control plane: katalog, otorisasi pemutaran, bookmark — payload kecil, diskalakan secara horizontal, dengan cache di depannya.
5. Streaming bitrate adaptif
Pemutaran yang lancar di bawah kondisi jaringan yang bervariasi berasal dari klien, bukan server. Player memantau throughput dan tingkat buffer, dan beralih kualitas segmen naik atau turun antar segmen menggunakan daftar rendition di manifest — bitrate lebih tinggi pada koneksi cepat, lebih rendah untuk menghindari buffering pada koneksi lambat.
6. Trade-off yang perlu diucapkan
Tutup dengan tegangan yang didengarkan pewawancara: biaya penyimpanan untuk precompute semua rendition versus latensi transcoding on-the-fly (Netflix melakukan precompute — penyimpanan lebih murah daripada keterlambatan startup); cache semuanya versus cache yang populer di edge (katalog long-tail tidak bisa seluruhnya ada di setiap edge); dan konsistensi kuat versus eventual untuk data control plane seperti 'lanjutkan menonton' (eventual sudah cukup). Menyebutkan hal ini adalah yang membuat jawaban terasa senior.
Latih desain sistem Netflix dengan bantuan real-time
Asisten wawancara desain sistem dari Natively dapat membantu Anda tetap terstruktur selama sesi live — menyarankan dimensi berikutnya yang perlu dibahas dan menampilkan trade-off secara real-time, semuanya di perangkat Anda sendiri.
