Tugas 4 PPL - A
Nama : Tsabita Putri Ramadhany
NRP : 5025211130
Kelas : PPL - A
Tugas 4
High Level Design
Tugas : Membuat High Level Design dari Video Payment System, atau Twitter
Petunjuk Tugas : https://kuliahppl.blogspot.com/2024/03/high-level-design.html
- HLD adalah desain sistem secara keseluruhan yang mencakup arsitektur, desain database, dan hubungan antar modul.
- Twitter adalah platform media sosial untuk berbagi pesan pendek, interaksi pengguna, dan fitur seperti retweet dan hashtag.
- Persyaratan fungsional mencakup membuat tweet, mengikuti pengguna lain, newsfeed, dan pencarian tweet.
- Persyaratan non-fungsional termasuk ketersediaan tinggi, diskalabilitas, dan efisiensi.
- Estimasi lalu lintas, penyimpanan, bandwidth, dan estimasi tingkat tinggi.
- Arsitektur menggunakan mikrojasa dengan layanan seperti pengguna, berita, tweet, retweet, pencarian, media, analitik, dan perankingan.
Desain Tingkat Tinggi (High Level Design/HLD)
Desain Tingkat Tinggi (High Level Design atau HLD) adalah gambaran umum dari sistem yang mencakup struktur dan arsitektur keseluruhan. HLD mencakup desain basis data, serta deskripsi singkat tentang komponen, layanan, dan platform yang digunakan, serta bagaimana semua elemen ini berinteraksi satu sama lain. HLD memberikan pandangan makro tentang desain dan fungsi sistem.
Desain Tingkat Tinggi pada Sistem Twitter
Desain Tingkat Tinggi untuk sistem Twitter mencakup struktur umum dari platform tersebut. Hal ini meliputi penentuan arsitektur keseluruhan, termasuk interaksi pengguna dengan feed, sistem manajemen basis data untuk menyimpan dan mengakses tweet, serta cara sistem memproses dan menampilkan data pengguna secara real-time. Desain ini juga mempertimbangkan skalabilitas untuk menangani jumlah pengguna yang besar, kecepatan akses data, dan antarmuka pengguna yang intuitif. Selain itu, desain ini mengkaji ketersediaan, keandalan, dan keamanan sistem, serta melakukan trade-off antara kecepatan, skala, dan keamanan dalam konteks waktu yang terbatas, seperti yang sering terjadi dalam wawancara teknis.
Persyaratan Desain Sistem Twitter
I. Persyaratan Fungsional:
- Memungkinkan pembuatan tweet baru (teks, gambar, video, dll.).
- Memungkinkan pengguna mengikuti pengguna lain.
- Memiliki fitur newsfeed yang terdiri dari tweet dari pengguna yang diikuti.
- Memungkinkan pencarian tweet.
II. Persyaratan Non-Fungsional:
- Ketersediaan tinggi dengan latensi minimal.
- Sistem harus dapat diskalakan dan efisien.
III. Persyaratan Tambahan:
- Metrik dan analitik.
- Fungsionalitas retweet.
- Tweet favorit.
Estimasi Kapasitas untuk Sistem Twitter
I. Estimasi Traffic:
- Diasumsikan ada 1 miliar pengguna dengan 200 juta pengguna aktif harian (DAU), dengan rata-rata setiap pengguna membuat 5 tweet per hari. Ini menghasilkan 1 miliar tweet per hari.
- Diasumsikan 10% dari tweet adalah file media, sehingga ada tambahan 100 juta file media yang perlu disimpan.
II. Estimasi Penyimpanan:
- Dengan ukuran rata-rata 100 byte per pesan, dibutuhkan sekitar 100 GB penyimpanan basis data setiap hari.
- 10% dari pesan harian (100 juta) adalah file media dengan ukuran rata-rata 50 KB, sehingga dibutuhkan 5 TB penyimpanan setiap hari.
- Untuk 10 tahun, dibutuhkan sekitar 19 PB penyimpanan.
III. Estimasi Bandwidth:
- Dengan 5,1 TB data masuk setiap hari, dibutuhkan bandwidth minimal sekitar 60 MB per detik.
Use Case Design untuk Sistem Twitter
Diagram Use Case:
- Pengguna mengakses Halaman Twitter yang berisi Halaman Beranda, Halaman Pencarian, dan Halaman Notifikasi.
- Di Halaman Beranda terdapat fitur untuk membuat tweet baru serta mengunggah gambar atau video.
- Tweet baru memiliki tombol suka, tidak suka, komentar, dan tombol ikuti/berhenti mengikuti.
- Pengguna tamu hanya dapat melihat tweet.
- Pengguna terdaftar dapat melihat, memposting tweet, mengikuti, dan berhenti mengikuti pengguna lain serta membuat tweet baru.
Arsitektur Sistem Twitter
I. Arsitektur Mikroservis:
- Menggunakan arsitektur mikroservis untuk memudahkan penskalaan horizontal dan pemisahan layanan. Setiap layanan memiliki model datanya sendiri.
II. Layanan Pengguna:
- Menangani otentikasi dan informasi pengguna, termasuk Halaman Login, Halaman Daftar, Halaman Profil, dan Halaman Beranda.
III. Layanan Feed Berita:
- Mengelola pembuatan dan publikasi feed berita pengguna, serta memastikan keandalan dan kinerja feed berita.
IV. Layanan Tweet:
- Menangani pembuatan, pengelolaan, dan interaksi dengan tweet, termasuk posting tweet dan favorit.
V. Retweet:
- Memungkinkan pengguna untuk retweet dengan membuat tweet baru yang terhubung dengan tweet asli.
VI. Layanan Pencarian:
- Menangani pencarian tweet, termasuk pencarian posting teratas dan terbaru.
VII. Layanan Media:
- Menangani unggahan dan pengelolaan media seperti gambar dan video.
VIII. Layanan Analitik:
- Menyediakan metrik dan analitik untuk pengguna.
IX. Algoritma Pemeringkatan:
- Menggunakan algoritma pemeringkatan untuk menentukan relevansi tweet bagi pengguna tertentu.
X. Layanan Pencarian (Elasticsearch):
- Menggunakan Elasticsearch untuk menyimpan, mencari, dan menganalisis volume data yang besar dengan cepat dan memberikan hasil dalam hitungan milidetik.
XI. Identifikasi Trending Topic:
- Mengidentifikasi topik yang sedang tren berdasarkan kueri, hashtag, dan topik yang sering dicari dalam waktu tertentu.
XII. Layanan Pemberitahuan:
- Menggunakan sistem pemberitahuan dorong melalui broker pesan seperti Apache Kafka untuk mengirimkan pemberitahuan ke perangkat pengguna.
Desain Model Data untuk Sistem Twitter
Entitas Utama:
- Users: Menyimpan informasi pengguna seperti nama, email, tanggal lahir, dan detail lainnya.
- Tweets: Menyimpan tweet dan properti-propertinya seperti jenis, konten, dan UserID.
- Favorites: Memetakan tweet dengan pengguna untuk fungsi favorit.
- Followers: Memetakan hubungan mengikuti antara pengguna.
- Feeds: Menyimpan properti feed dengan UserID yang sesuai.
- Feeds_Tweets: Memetakan tweet dengan feed yang sesuai.
Komentar
Posting Komentar