Tugas 4 PPL
HIGH LEVEL DESIGN TWITTER
High Level Design (HLD) adalah representasi umum dari suatu sistem atau aplikasi, yang menjelaskan struktur dan arsitektur secara keseluruhan tanpa mendetailkan implementasi. HLD dibuat pada tahap awal pengembangan perangkat lunak sebelum desain tingkat rendah (LLD).
Persyaratan Sistem Desain Twitter
Persyaratan Fungsional:
- Pengguna dapat memposting tweet baru (teks, gambar, video, dll).
- Pengguna dapat mengikuti pengguna lain.
- Pengguna dapat mencari tweet.
- Memiliki umpan berita dari pengikut pengguna.
Persyaratan Non-Fungsional:
- Ketersediaan tinggi dengan latensi rendah.
- Sistem harus terukur dan efisien.
Persyaratan Tambahan:
- Metrik dan analitik.
- Fungsi retweet.
- Tweet favorit.
Perkiraan Kapasitas Sistem Desain Twitter
Perkiraan Traffic:
- Dengan 1 miliar total pengguna dan 200 juta pengguna aktif harian, serta rata-rata 5 tweet per pengguna per hari, ada sekitar 1 miliar tweet per hari. Jika 10% tweet berisi media, maka ada tambahan 100 juta file media yang perlu disimpan.
Perkiraan Penyimpanan:
- Dengan asumsi setiap pesan berukuran 100 byte, diperlukan penyimpanan sekitar 100 GB per hari. Untuk media (10% dari pesan harian), dengan asumsi setiap file berukuran 50 KB, diperlukan tambahan 5 TB per hari. Selama 10 tahun, total penyimpanan yang dibutuhkan adalah 19 PB.
Perkiraan Bandwidth:
- Dengan 5,1 TB data masuk setiap hari, diperlukan bandwidth sekitar 60 MB per detik.
Desain Use Case untuk Sistem Desain Twitter
Pengguna mengakses halaman utama Twitter, yang mencakup halaman beranda, pencarian, dan notifikasi. Di halaman beranda, pengguna dapat memposting tweet baru serta gambar atau video. Pengguna tamu hanya dapat melihat tweet, sedangkan pengguna terdaftar dapat membuat tweet dan mengikuti atau berhenti mengikuti pengguna lain.
High Level Design untuk Sistem Desain Twitter
Arsitektur:
- Menggunakan arsitektur layanan mikro untuk penskalaan horizontal dan pemisahan layanan. Setiap layanan memiliki kepemilikan atas model datanya sendiri, termasuk layanan pengguna, umpan berita, tweet, pencarian, media, dan analisis.
Layanan Pengguna:
- Menangani otentikasi dan informasi pengguna, serta halaman login, pendaftaran, profil, dan beranda.
Layanan Umpan Berita:
- Menangani pembuatan dan penerbitan umpan berita pengguna dengan mekanisme pembuatan feed yang disimpan dalam cache untuk meningkatkan kinerja.
Layanan Tweet:
- Menangani posting tweet, favorit, dan retweet.
Layanan Pencarian:
- Menangani pencarian dan peringkat postingan.
Layanan Media:
- Menangani unggahan media (gambar, video, file, dll).
Layanan Analisis:
- Menggunakan algoritme pemeringkatan untuk memberi peringkat tweet berdasarkan relevansi.
Layanan Pemberitahuan:
- Menggunakan antrian pesan seperti Apache Kafka dengan layanan notifikasi untuk mengirimkan notifikasi push ke perangkat pengguna.
Penerbitan
- Model Tarik (atau 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.
Kesimpulan
Twitter menangani ribuan tweet per detik melalui pendekatan terdistribusi, menggunakan strategi sebar dan kumpulkan dengan beberapa server atau pusat data. Saat menerima kueri, Twitter mengirimkannya ke semua server atau pusat data, mengurutkan hasil berdasarkan jumlah retweet, balasan, dan popularitas tweet.
Komentar
Posting Komentar