TUGAS 5 PPL - Low Level Design

Nama : Muhammad Hafidh Rosyadi
NRP : 5025211013
Kelas : PPL A
 
Pada pertemuan kali ini kita diminta untuk mengidentifikasi dan menganalisis High Level Design (HLD) dan Low Level Design (LLD) dari suatu sistem aplikasi. Dalam hal ini saya menggunakan Aplikasi Netflix. Netflix adalah aplikasi streaming film/video terbesar di Dunia.

Requirements of Netflix System Design

Functional Requirements:
  • Pengguna harus dapat membuat akun, masuk, dan keluar.
  • Manajemen langganan untuk pengguna.
  • Memungkinkan pengguna untuk memutar video serta fitur jeda, putar, mundur, dan cepat maju.
  • Kemampuan untuk mengunduh konten untuk ditonton secara offline.
  • Rekomendasi konten yang dipersonalisasi berdasarkan preferensi dan riwayat tontonan pengguna 
  • Non-Functional Requirements:
  • Latensi rendah dan responsivitas tinggi selama pemutaran konten.
  • Skalabilitas untuk menangani sejumlah besar pengguna secara bersamaan.
  • Ketersediaan tinggi dengan waktu henti minimal.
  • Otentikasi dan otorisasi pengguna yang aman.
  • Antarmuka pengguna yang intuitif untuk navigasi yang mudah.
  • 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:

    1. 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.
    2. 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.
    3. 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.

     Database Design of Netflix System Design

    Netflix menyimpan data seperti informasi tagihan, informasi pengguna, dan informasi transaksi di MySQL karena membutuhkan kepatuhan ACID. Netflix memiliki setup master-master untuk MySQL dan diterapkan pada instans EC2 besar milik Amazon menggunakan InnoDB. Setup ini mengikuti "protokol replikasi sinkron" di mana jika penulis berada di node master utama maka akan direplikasi juga ke node master lainnya. Acknowledgment akan dikirim hanya jika tulisan dari kedua node master utama dan remote telah dikonfirmasi. Netflix juga telah membuat replika baca untuk setiap node (lokal maupun lintas wilayah). Ini memastikan ketersediaan dan skalabilitas data yang tinggi. Semua kueri baca diarahkan ke replika baca dan hanya kueri tulis yang diarahkan ke node master. Dalam kasus kegagalan node master utama, node master sekunder akan mengambil alih peran utama, dan entri route53 (konfigurasi DNS) untuk database akan diubah ke node utama baru ini. Hal ini juga akan mengarahkan kueri tulis ke node master utama baru ini.

     

     

    Komentar

    Postingan populer dari blog ini

    ETS - PPL

    Studi Kasus - Sistem Aplikasi Kasir