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 :

  1. Pengguna akan mengklik Halaman Twitter mereka akan mendapatkan halaman utama di dalam halaman utama, akan ada Halaman Beranda, Halaman Pencarian, Halaman Pemberitahuan.
  2. Di dalam Halaman Beranda akan ada halaman Tweet baru serta Posting Gambar atau Video.
  3. Di Tweet baru kita akan memiliki tombol suka, tidak suka, komentar, serta tombol ikuti / berhenti mengikuti.
  4. Pengguna Tamu hanya akan memiliki akses untuk melihat tweet apa pun.
  5. Penggunaan terdaftar dapat melihat dan memposting tweet. Dapat mengikuti dan berhenti mengikuti pengguna lain.
  6. Pengguna Terdaftar akan dapat membuat tweet baru.

High Level Design for Twitter System Design

Berikut merupakan penjelasan singkat :

1. Arsitektur

Untuk 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

Kesimpulan

Twitter 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

Postingan populer dari blog ini

TUGAS 8 PPL

EAS PPL

TUGAS 2 APSI