TUGAS 4 PPL
High Level Design - Twitter
Bapak Fajar Baskoro, S.Kom., M.T.
Deskripsi Singkat High-Level Design
High-Level Design pada sistem desain Twitter adalah tahap awal dalam proses merancang arsitektur sistem secara keseluruhan. Hal ini melibatkan identifikasi dan pemodelan komponen-komponen utama dari sistem, serta hubungan dan interaksi antara komponen-komponen tersebut. Pada level ini, fokusnya adalah pada aspek-aspek besar dari sistem, termasuk komponen-komponen utama, interaksi antara komponen, skalabilitas, keandalan, keamanan, dan performa. High-Level Design menyediakan landasan untuk tahap selanjutnya dalam proses desain sistem, yaitu Detailed Design, di mana rincian teknis dari setiap komponen dan interaksi diperinci lebih lanjut. Ini memungkinkan tim untuk fokus pada aspek teknis dan implementasi, berdasarkan arsitektur yang telah ditetapkan pada tahap High-Level Design.
Persyaratan Perancangan Sistem Twitter
a. Persyaratan Fungsional
- Harus bisa memposting tweet baru berupa teks, gambar, video, dll
- Harus bisa mengikuti pengguna lain
- Harus memiliki fitur umpan berita yang terdiri dari twitter pengikut dari pengguna
- Harus bisa mencari tweet
b. Persyaratan Non Fungsional
- Ketersediaan tinggi dengan latensi minimal
- Sistem harus terukur dan efisien
c. Persyaratan yang Diperpanjang
- Metrik dan analitik
- Fungsi retweet
- Tweet favorit
Estimasi Kapasitas Perancangan Sistem Twitter
a. Estimasi Lalu Lintas
Misal memiliki total 1 miliar pengguna dengan 200 juta pengguna aktif harian (DAU) dan rata-rata setiap pengguna men-tweet 5 kali sehari, akan memberikan 1 miliar tweet per hari.
Tweet juga berisi media seperti gambar ataupun video. Asumsikan bahwa 10 persen tweet adalah file media yang dibagikan oleh pengguna, sehingga memberikan tambahan 100 juta file yang perlu disimpan.
Untuk permintaan sistem per detik (RPS) adalah :
b. Estimasi Penyimpanan
Diasumsikan setiap pesan rata-rata berukuran 100 byte, maka diperlukan sekitar 100 GB penyimpanan database setiap hari.
10 persen dari pesan harian tersebut adalah file media sesuai kebutuhan. Kebutuhan setiap file rata-rata diperkirakan berukuran 50 KB dan membutuhkan penyimpanan 5 TB setiap hari.
Selama 10 tahun membutuhkan penyimpanan 19 PB.
c. Estimasi Bandwidth
Dikarenakan sistem menangani masuknya 5,1 TB setiap hari, maka memerlukan bandwidth minimum sekitar 60 MB per detik.
Design Kasus Untuk Design Sistem Twitter
Pada diagram diatas disebutkan bahwa :
- Pengguna akan mengklik Halaman Twitter mereka akan mendapatkan halaman utama di dalam halaman utama, akan ada Halaman Beranda, Halaman Pencarian, Halaman Pemberitahuan.
- Di dalam Halaman Beranda akan ada halaman Tweet baru serta Posting Gambar atau Video.
- Di Tweet baru kita akan memiliki tombol suka, tidak suka, komentar, serta tombol ikuti / berhenti mengikuti.
- Pengguna Tamu hanya akan memiliki akses untuk melihat tweet apa pun.
- Penggunaan terdaftar dapat melihat dan memposting tweet. Dapat mengikuti dan berhenti mengikuti pengguna lain.
- Pengguna Terdaftar akan dapat membuat tweet baru.
High Level Design for Twitter System Design
Berikut merupakan penjelasan singkat :
1. ArsitekturUntuk Twitter, menggunakan arsitektur layanan mikro karena ini akan memudahkan penskalaan horizontal dan memisahkan layanan yang ada. Setiap layanan akan memiliki kepemilikan atas model datanya sendiri.
2. Layanan Pengguna
Layanan ini menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna. Halaman Login, Halaman Pendaftaran, Halaman Profil, dan Halaman Beranda akan ditangani ke dalam layanan Pengguna.
3. Layanan Umpan Berita
Layanan ini akan menangani pembuatan dan penerbitan umpan berita pengguna, membahas tentang newsfeed lebih detail. Ketika berbicara tentang umpan berita, tampaknya cukup mudah untuk diterapkan, namun ada banyak hal yang dapat membuat atau menghancurkan fitur ini.
4. Layanan Tweet
Layanan tweet menangani kasus penggunaan terkait tweet seperti memposting tweet, favorit, dll.
5. Retweet
Retweet adalah salah satu persyaratan tambahan kami. Untuk mengimplementasikan fitur ini, kita cukup membuat tweet baru dengan user id dari pengguna yang me-retweet tweet asli dan kemudian memodifikasi enum type dan content properti tweet baru untuk menghubungkannya dengan tweet asli.
6. Layanan Pencarian
Layanan ini bertanggung jawab untuk menangani fungsionalitas terkait pencarian. Dalam layanan pencarian kita mendapatkan postingan Teratas, postingan terbaru, dll. Hal-hal ini kita dapatkan karena peringkat.
7. Layanan Media
Layanan ini akan menangani unggahan media (gambar, video, file, dll.).
8. Layanan Analisis
Layanan ini akan digunakan untuk kasus penggunaan metrik dan analitik.
9. Algoritma Pemeringkatan
Kami memerlukan algoritme pemeringkatan untuk memberi peringkat setiap tweet berdasarkan relevansinya bagi setiap pengguna tertentu.
Di mana,
Affinity: adalah “kedekatan” pengguna dengan pencipta edge. Jika pengguna sering menyukai, berkomentar, atau mengirim pesan kepada pembuat tepi, maka nilai afinitasnya akan semakin tinggi, sehingga menghasilkan peringkat postingan yang lebih tinggi.Weight: adalah nilai yang diberikan menurut masing-masing sisi. Sebuah komentar dapat memiliki bobot yang lebih tinggi daripada suka, sehingga postingan dengan lebih banyak komentar kemungkinan besar akan mendapatkan peringkat yang lebih tinggi.Decay: adalah ukuran penciptaan tepi. Semakin tua edge, semakin kecil nilai peluruhannya dan pada akhirnya akan menurunkan peringkatnya.
Saat ini, algoritme jauh lebih kompleks dan pemeringkatan dilakukan menggunakan model pembelajaran mesin yang dapat mempertimbangkan ribuan faktor.
10. Layanan Notifikasi
Pemberitahuan adalah bagian integral dari platform media sosial manapun, hal ini dapat didukung menggunakan antrian pesan atau perantara pesan seperti Apache Kafka dengan layanan notifikasi untuk mengirimkan permintaan ke Firebase Cloud Messaging yang akan menangani pengiriman notifikasi push ke perangkat pengguna.
Perancangan Model Data untuk Perancangan Sistem Twitter
KesimpulanTwitter menangani ribuan tweet per detik sehingga tidak hanya memiliki satu sistem atau tabel besar untuk menangani semua data sehingga harus ditangani melalui pendekatan terdistribusi. Twitter menggunakan strategi sebar dan kumpulkan dengan menyiapkan beberapa server atau pusat data yang memungkinkan pengindeksan. Manfaat dari dibuatnya high-level design pada sistem desain Twitter adalah memberikan pandangan yang jelas dan holistik tentang arsitektur sistem secara keseluruhan, memungkinkan tim pengembangan untuk memahami struktur sistem, merencanakan solusi yang memenuhi kebutuhan fungsional dan non-fungsional, serta berkomunikasi dengan efektif kepada anggota tim dan pemangku kepentingan. Dengan pemahaman yang mendalam tentang aliran kerja sistem, perencanaan yang terarah, dan identifikasi risiko awal, High-Level Design mendukung pengambilan keputusan yang tepat, keselarasan dengan kebutuhan bisnis, dan perencanaan skalabilitas yang terencana, sehingga memastikan pengembangan sistem berjalan secara efisien dan menghasilkan produk akhir yang berkualitas tinggi.
Referensi
https://www.geeksforgeeks.org/design-twitter-a-system-design-interview-question/




Komentar
Posting Komentar