PPL - TUGAS 4 - High Level Design
Nama: Muhammad Razan Athallah
NRP: 5025211008
Kelas: PPL A
Tahun: 2023/2024 (Genap)
Tugas keempat (pertemuan 5) berupa latihan mengidentifikasi dan menganalisis High Level Design dari sistem aplikasi Twitter. High Level Design (HLD) atau Desain tingkat tinggi adalah gambaran umum dari suatu sistem atau aplikasi. HLD menjelaskan struktur dan arsitektur sistem secara keseluruhan, tanpa terpaku pada detail implementasi. HLD biasanya dibuat pada tahap awal pengembangan perangkat lunak, sebelum desain tingkat rendah (LLD) dibuat. Untuk membuat High Level Design aplikasi Twitter saya mengambil referensi dari video berikut:
System Requirements
Functional Requirements
Berikut adalah functional requirements dari aplikasi Twitter dan unik dibandingkan dengan media sosial kebanyakan:
- Pengguna dapat memposting tweet berupa text, gambar, atau video.
- Pengguna dapat memberikan reaksi kepada suatu tweet, berupa like, comment, retweet, atau share.
- Pengguna dapat follow dan unfollow akun pengguna lain.
- Halaman home berisi tweet dari pengguna yang difollow terurut berdasarkan relevansi.
- Pengguna dapat mencari tweet dengan memasukkan keyword.
- Pengguna dapat melihat topik yang trending di wilayah.
Non-Functional Requirements
Berikut adalah non-function requirements dari aplikasi Twiiter:
- Memiliki ketersediaan yang tinggi untuk melayani pengguna.
- Memiliki kemampuan skalabilitas yang besar.
- Memiliki server yang merespon permintaan pengguna dengan cepat.
Estimasi Kapasitas
Estimasi Trafik
Asumsikan Twitter memiliki jumlah pengguna harian sebanyak 100 juta dengan masing-masing pengguna memposting 3 tweet tiap harinya. Sehingga total trafik tweet adalah 300 juta tweet per hari. Dikarenakan Twitter adalah aplikasi yang read-heavy dimana pengguna lebih sering membaca tweet daripada memposting tweet maka diasumsikan ratio write dan read adalah 1:10. Sehingga diperoleh total trafik read adalah 3 miliar read per hari.
Estimasi Penyimpanan
Asumsikan rata-rata tweet memiliki besar 10 KB. Sedangkan dari estimasi trafik terdapat 300 juta tweet per hari, sehingga membutuhkan total penyimpanan sebanyak 3 TB per hari.
Arsitektur Sistem
Sistem aplikasi Twitter akan menggunakan microservices sehingga aplikasi terdiri dari layanan-layanan kecil. Hal ini ini akan memudahkan penskalaan horizontal dan tiap layanan memiliki kepemilikian atas model data sendiri-sendiri, sistem akan dibagi menjadi beberapa layanan inti sebagai berikut:
- User service: Layanan ini menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna.
- Newsfeed service: Layanan ini menangani algoritma pemberian tweet-tweet baru yang relevan kepada pengguna.
- Post tweet service: Layanan ini menangani pembuatan tweet oleh pengguna.
- Search tweet service: Layanan ini menangani pencarian tweet oleh keyword yang direquest oleh pengguna:
- Media service: Layanan ini menangani unggahan media berupa gambar, video, dll.
- Analysis service: Layanan ini digunakan untuk kasus penggunaan metrik dan anailitik
- Notification service: Layanan ini digunakan untuk pemberitahuan kepada pengguna, serperti akun baru yang follow, tweet baru, dll.
- Model Tarik (Fan-out saat dimuat): Saat pengguna membuat tweet, dan pengikut memuat ulang umpan berita mereka, umpan tersebut dibuat dan disimpan dalam memori. Feed terbaru hanya dimuat saat pengguna meminta. Pendekatan ini mengurangi jumlah operasi penulisan pada database kami. Kelemahan dari pendekatan ini adalah pengguna tidak akan dapat melihat feed terbaru kecuali mereka “menarik” data dari server, yang akan meningkatkan jumlah operasi baca di server.
- Model Dorong (atau Fan-out saat menulis): Dalam model ini, setelah pengguna membuat tweet, tweet tersebut akan dikirim ke semua feed pengikut. Hal ini mencegah sistem memeriksa seluruh daftar pengikut pengguna untuk memeriksa pembaruan. Namun, kelemahan dari pendekatan ini adalah akan meningkatkan jumlah operasi penulisan pada database.
- Model Hibrida: Pendekatan ketiga adalah model hybrid antara model tarik dan model dorong. Ini menggabungkan fitur-fitur bermanfaat dari dua model di atas dan mencoba memberikan pendekatan yang seimbang antara keduanya. Model hybrid hanya mengizinkan pengguna dengan jumlah pengikut lebih sedikit untuk menggunakan model push. Untuk pengguna dengan jumlah pengikut lebih banyak seperti selebriti, model tarik digunakan.
Comments
Post a Comment