Tugas 4 - Perancangan Perangkat Lunak (A)

Nama      : Yusna Millaturrosyidah

NRP        : 5025211254

Kelas      : Perancangan Perangkat Lunak (A)

High Level Design

Deskripsi 

High Level Design (HLD)

High Level Design (HLD) adalah rencana umum sebuah sistem yang mencakup struktur dan arsitektur yang luas dari suatu sistem. Ini mencakup arsitektur keseluruhan sistem, desain basis data, dan gambaran singkat tentang komponen, layanan, platform, dan bagaimana interaksinya. Pada dasarnya, HLD memberikan pandangan pada tingkat makro tentang desain dan fungsionalitas sistem.

High Level Design Pada Sistem Design Twitter

High Level Design untuk sistem Twitter akan mencakup struktur umum dari platform tersebut. Ini akan melibatkan penentuan arsitektur keseluruhan sistem, termasuk bagaimana pengguna berinteraksi dengan feed, sistem manajemen basis data untuk menyimpan dan mengakses tweet, dan juga bagaimana sistem memproses dan menampilkan data pengguna dalam waktu nyata. Dalam desain ini, akan ada pertimbangan tentang skalabilitas sistem untuk menangani jumlah pengguna yang besar, kecepatan akses data, dan antarmuka pengguna yang ramah. Selain itu, akan dibahas juga bagaimana memperhitungkan ketersediaan, keandalan, dan keamanan sistem. Desain ini juga akan mempertimbangkan trade-off antara kecepatan, skala, dan keamanan dalam konteks waktu yang terbatas, seperti yang sering terjadi dalam sesi wawancara teknis.

Persyaratan Perancangan Sistem Design Twitter

I. Persyaratan Fungsional

- Harus dapat membuat tweet baru (bisa berupa teks, gambar, video, dll).
- Harus dapat mengikuti pengguna lain.
- Harus memiliki fitur newsfeed yang terdiri dari tweet dari orang-orang yang diikuti pengguna.
- Harus dapat mencari 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 Design Twitter

I. Traffic Estimation

Mari kita asumsikan kita memiliki total 1 miliar pengguna dengan 200 juta pengguna aktif harian (DAU), dan rata-rata setiap pengguna melakukan 5 tweet per hari. Ini memberikan kita 1 miliar tweet per hari.


Tweet juga bisa berisi media seperti gambar atau video. Kita bisa mengasumsikan bahwa 10 persen dari tweet adalah file media yang dibagikan oleh pengguna, yang memberikan kita tambahan 100 juta file yang perlu kita simpan.


Untuk permintaan sistem per detik (RPS) adalah :

II. Storage Estimation

Mari kita asumsikan setiap pesan rata-rata memiliki ukuran 100 byte, kita akan membutuhkan sekitar 100 GB penyimpanan basis data setiap hari.


10 persen dari pesan harian kita (100 juta) adalah file media sesuai dengan persyaratan kita. Mari kita asumsikan setiap file memiliki ukuran rata-rata 50 KB, kita akan membutuhkan 5 TB penyimpanan setiap hari.


Untuk 10 tahun membutuhkan 19 PB penyimpanan.

III. Bandwidth Estimation

Karena sistem kita menangani 5,1 TB masuk setiap hari, kita akan membutuhkan bandwidth minimum sekitar 60 MB per detik.

Use Case Design untuk Sistem Design Twitter


Dalam Diagram di atas,

- Pengguna akan mengklik Halaman Twitter, mereka akan mendapatkan halaman utama di dalam halaman utama, akan ada Halaman Beranda, Halaman Pencarian, Halaman Notifikasi.
- Di dalam Halaman Beranda akan ada halaman Tweet baru serta Unggah Gambar atau Video.
- Di dalam Tweet baru akan ada tombol suka, tidak suka, komentar serta tombol ikuti / berhenti mengikuti.
- Guest user hanya akan memiliki akses untuk melihat tweet mana pun.
- Registered user dapat melihat dan memposting tweet. Dapat mengikuti dan berhenti mengikuti pengguna lain.
- Registered user akan dapat membuat tweet baru.

High Level Design untuk Sistem Design Twitter


Dibawah ini merupakan penjelasan mengenai High Level Design untuk sistem design Twitter : 

I. Arsitektur

Untuk Twitter, digunakan arsitektur mikroservis karena memudahkan dalam melakukan penskalaan horizontal dan memisahkan layanan. Setiap layanan memiliki kepemilikan dari model datanya sendiri. Sistem dibagi ke dalam beberapa layanan inti.

II. Layanan Pengguna

Layanan ini menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna. Halaman Login, Halaman Daftar, Halaman Profil, dan Halaman Beranda akan ditangani oleh Layanan Pengguna.

III. Layanan Feed Berita

Layanan ini akan menangani pembuatan dan publikasi feed berita pengguna. Kami akan mendiskusikan tentang feed berita lebih detail. Ketika membahas tentang feed berita, tampaknya cukup mudah untuk diimplementasikan, tetapi ada banyak hal yang bisa membuat fitur ini berhasil atau gagal.

IV. Layanan Tweet

Layanan tweet menangani kasus pengguna terkait tweet seperti memposting tweet, favorit, dll.

V. Retweet

Retweet adalah salah satu kebutuhan tambahan. Untuk mengimplementasikan fitur ini, kami dapat dengan mudah membuat tweet baru dengan ID pengguna yang melakukan retweet pada tweet asli, dan kemudian memodifikasi jenis enum dan properti konten dari tweet baru untuk menghubungkannya dengan tweet asli.

VI. Layanan Pencarian

Layanan ini bertanggung jawab untuk menangani fungsionalitas pencarian. Di layanan pencarian, kami mendapatkan posting teratas, posting terbaru, dll. Hal-hal ini kita dapatkan karena peringkat.

VII. Layanan Media

Layanan ini akan menangani unggahan media (gambar, video, file, dll.).

VIII. Layanan Analitik

Layanan ini akan digunakan untuk kasus penggunaan metrik dan analitik.

IX. Algoritma Pemeringkatan

Algoritma pemeringkatan dibutuhkan untuk memeringkat setiap tweet sesuai dengan relevansinya terhadap setiap pengguna tertentu. Contoh: Facebook dulu menggunakan algoritma EdgeRank.

X. Layanan Pencarian

Terkadang DBMS tradisional tidak cukup efisien, kita membutuhkan sesuatu yang memungkinkan kita untuk menyimpan, mencari, dan menganalisis volume data yang besar dengan cepat dan hampir real-time serta memberikan hasil dalam hitungan milidetik. Elasticsearch dapat membantu kami dengan kasus penggunaan ini. Elasticsearch adalah mesin pencarian dan analitik terdistribusi, gratis, dan open source untuk semua jenis data, termasuk teks, numerik, geospasial, terstruktur, dan tidak terstruktur. Ini dibangun di atas Apache Lucene.

XI. Identifikasi Trending Topic

Fungsionalitas tren akan berbasis pada fungsionalitas pencarian.
Kami dapat menyimpan cache kueri, hashtag, dan topik yang paling sering dicari dalam N detik terakhir dan memperbarui mereka setiap M detik menggunakan beberapa jenis mekanisme pekerjaan batch.
Algoritma peringkat kami juga dapat diterapkan pada topik yang sedang tren untuk memberikan bobot yang lebih besar dan mempersonalisasikannya untuk pengguna.

XII. Layanan Pemberitahuan

Pemberitahuan dorong adalah bagian integral dari platform media sosial apa pun. Dapat menggunakan antre pesan atau broker pesan seperti Apache Kafka dengan layanan pemberitahuan untuk mengirimkan permintaan ke Firebase Cloud Messaging (FCM) atau Apple Push Notification Service (APNS) yang akan menangani pengiriman pemberitahuan dorong ke perangkat pengguna.

Data Model Design untuk Sistem Design Twitter

Pada gambar diatas terdapat beberapa entitas, antara lain : 

1. Users

Tabel ini berisi informasi pengguna seperti nama, email, Tanggal Lahir, dan detail lainnya

2. Tweets

Seperti namanya, tabel ini akan menyimpan tweet dan properti-propertinya seperti jenis (teks, gambar, video, dll.), konten, dll. UserID juga akan disimpan.

3. Favorites

Tabel ini memetakan tweet dengan pengguna untuk fungsionalitas tweet favorit di aplikasi

4. Followers

Tabel ini memetakan pengikut dan yang diikuti (mereka yang diikuti) karena pengguna dapat mengikuti satu sama lain.

5. Feeds

Tabel ini menyimpan properti feed dengan userID yang sesuai.

6. Feeds_Tweets

Tabel ini memetakan tweet dan feed. 

Referensi : 

Komentar

Postingan Populer