TUGAS 5 PPL - Low Level Design
Requirements of Netflix System Design
Functional Requirements:
Non-Functional Requirements:
High-Level Design of Netflix System Design
Netflix menggunakan dua cloud, yaitu AWS dan Open Connect. Kedua cloud ini bekerja bersama sebagai tulang punggung Netflix dan sangat bertanggung jawab untuk menyediakan video terbaik kepada pelanggan.
Aplikasi Netflix memiliki tiga komponen utama:
1. Client:
- Perangkat (Antarmuka Pengguna) yang digunakan untuk menjelajah dan memutar video Netflix, seperti TV, XBOX, laptop, atau ponsel.
2. OC (Open Connect) atau CDN Netflix:
- CDN adalah jaringan server terdistribusi di berbagai lokasi geografis, dan Open Connect adalah CDN global khusus milik Netflix.
- Open Connect menangani semua yang terkait dengan streaming video.
- CDN ini terdistribusi di berbagai lokasi dan ketika tombol play ditekan, video streaming dari komponen ini ditampilkan pada perangkat pengguna.
- Jadi, jika mencoba memutar video di Amerika Utara, video akan disajikan dari server Open Connect terdekat untuk respons yang lebih cepat.
3. Backend (Database):
- Bagian ini menangani semua yang tidak terkait dengan streaming video (sebelum tombol play ditekan), seperti onboarding konten baru, memproses video, mendistribusikan video ke server yang berada di berbagai belahan dunia, dan mengelola lalu lintas jaringan.
- Sebagian besar proses ini ditangani oleh Amazon Web Services.
Arsitektur Microservices Netflix
Gaya arsitektur Netflix dibangun sebagai kumpulan layanan yang dikenal sebagai arsitektur microservices. Arsitektur ini mendukung semua API yang diperlukan untuk aplikasi dan aplikasi web. Ketika permintaan tiba di endpoint, permintaan tersebut akan memanggil microservices lain untuk data yang diperlukan. Microservices ini juga dapat meminta data dari microservices lain. Setelah itu, respons lengkap untuk permintaan API dikirim kembali ke endpoint.
Dalam arsitektur microservices, layanan harus independen satu sama lain. Sebagai contoh, layanan penyimpanan video harus dipisahkan dari layanan yang bertanggung jawab untuk transcoding video.
Cara membuat arsitektur microservices andal:
Menggunakan Hystrix:
- Hystrix adalah library yang digunakan untuk menambahkan toleransi kesalahan dan latensi pada sistem terdistribusi. Hystrix membantu dengan menyediakan fallback opsi ketika layanan gagal atau lambat.
Memisahkan Microservices Kritis:
- Beberapa layanan kritis dapat dipisahkan dan dibuat kurang bergantung atau independen dari layanan lain.
- Layanan kritis ini dapat bergantung hanya pada layanan yang andal.
- Dalam memilih microservices kritis, fungsionalitas dasar seperti mencari video, menavigasi ke video, dan memutar video dapat dimasukkan.
- Dengan cara ini, endpoint dapat dibuat sangat tersedia sehingga dalam skenario terburuk sekalipun, pengguna masih dapat melakukan hal-hal dasar.
Menganggap Server sebagai Stateless:
- Konsep ini melibatkan perancangan layanan sedemikian rupa sehingga jika salah satu endpoint mengalami kesalahan atau tidak melayani permintaan tepat waktu, server lain dapat digunakan untuk menyelesaikan pekerjaan.
- Seperti mengelola sekelompok sapi untuk menghasilkan susu, jika satu sapi menghasilkan susu lebih sedikit, sapi tersebut dapat diganti dengan sapi lain. Demikian pula, dalam aplikasi ini, jika satu server gagal, server lain dapat digunakan tanpa ketergantungan spesifik pada satu server.
Low Level Design of Netflix System Design
Proses Onboarding Film/Video di Netflix
Netflix menerima video berkualitas tinggi dari rumah produksi, jadi sebelum menayangkan video kepada pengguna, Netflix melakukan beberapa tahap pra-pemrosesan.
- Netflix mendukung lebih dari 2200 perangkat dan setiap perangkat membutuhkan resolusi dan format yang berbeda.
- Untuk membuat video dapat dilihat di berbagai perangkat, Netflix melakukan transcoding atau encoding, yang melibatkan menemukan kesalahan dan mengonversi video asli ke berbagai format dan resolusi.
- Netflix juga membuat optimasi file untuk kecepatan jaringan yang berbeda. Kualitas video bagus saat Anda menonton video dengan kecepatan jaringan tinggi. Netflix membuat beberapa salinan (sekitar 1100-1200) untuk film yang sama dengan resolusi yang berbeda.
Proses Pemrosesan Data di Netflix Menggunakan Kafka dan Apache Chukwa
Ketika Anda mengklik video di Netflix, Netflix mulai memproses data dalam berbagai aspek dan membutuhkan waktu kurang dari satu nanosekon. Netflix menggunakan Kafka dan Apache Chukwa untuk mengonsumsi data yang diproduksi di berbagai bagian sistem. Netflix menyediakan hampir 500 miliar acara data yang dikonsumsi 1,3 PB/hari dan 8 juta acara yang dikonsumsi 24 GB/detik selama jam sibuk. Acara-acara ini mencakup informasi seperti:
- Log error
- Aktivitas antarmuka pengguna
- Acara kinerja
- Aktivitas menonton video
- Acara pemecahan masalah dan diagnostik.
Sistem Rekomendasi Film Netflix Menggunakan Apache Spark
Netflix menggunakan Apache Spark dan Machine Learning untuk Rekomendasi Film. Ketika Anda memuat halaman depan, Anda melihat beberapa baris film yang berbeda. Netflix mempersonalisasi data ini dan memutuskan jenis baris atau jenis film apa yang harus ditampilkan kepada pengguna tertentu. Data ini berdasarkan data historis dan preferensi pengguna.
- Sebagian besar pipa machine learning dijalankan pada cluster Spark yang besar. Pipa ini kemudian digunakan untuk pemilihan baris, pengurutan, peringkat relevansi judul (untuk rekomendasi), dan personalisasi karya seni di antara lain.
Cara Netflix Menyeimbangkan Beban Lalu Lintas Tinggi
- Elastic Load Balancer: Mengalihkan lalu lintas ke layanan front-end. Melakukan skema penyeimbangan beban dua tingkat di mana beban diimbangi di atas zona terlebih dahulu dan kemudian instans (server).
- ZUUL: Menyediakan routing dinamis, pemantauan, ketahanan, dan keamanan. Memberikan routing mudah berdasarkan parameter kueri, URL, dan jalur.
- Hystrix: Mengontrol interaksi antara layanan terdistribusi dengan menambahkan toleransi latensi dan logika toleransi kesalahan.
EV Cache di Netflix
- Netflix memiliki lapisan caching khusus yang disebut EV cache, berbasis pada Memcached. EV cache berfungsi untuk membagi data di seluruh cluster dalam zona yang sama dan menyimpan beberapa salinan cache di node-node terfragmentasi.
Elasticsearch di Netflix
- Netflix menjalankan sekitar 150 cluster Elasticsearch dan 3.500 host dengan instance. Elasticsearch digunakan untuk visualisasi data, dukungan pelanggan, dan untuk beberapa deteksi kesalahan dalam sistem.
Komentar
Posting Komentar