Tugas Pertemuan 5 PPL - High Level Design
Nama | Akmal Sulthon Fathulloh |
---|---|
NRP | 5025211047 |
Kelas | PPL - A |
High Level Design (HLD) atau desain tingkat tinggi adalah gambaran umum dari suatu sistem atau aplikasi. HLD menjelaskan struktur dan arsitektur sistem secara keseluruhan, tanpa terpaku pada detail implementasi. HLD biasanya dibuat pada tahap awal pengembangan perangkat lunak, sebelum desain tingkat rendah (LLD) dibuat. HLD bertujuan untuk memberikan gambaran yang jelas tentang sistem kepada para pemangku kepentingan, seperti investor, manajer, dan arsitek, membantu dalam membuat keputusan desain yang tepat, memudahkan komunikasi antar anggota tim pengembangan, dan mempermudah proses pengembangan dan pemeliharaan perangkat lunak. Pada pertemuan kelima mata kuliah Perancangan Perangkat Lunak kali ini, kita diminta untuk berlatih membuat high-level design dari sistem perangkat lunak yang sudah disediakan. Kali ini saya memilih untuk mengulas HLD dari sistem aplikasi Twitter berdasarkan video YouTube berikut.
Deskripsi
Twitter adalah aplikasi media sosial yang memungkinkan pengguna untuk memposting tweet berupa teks, gambar, video, dan link. Pengguna dapat mengikuti akun lain, memberikan like, retweet, dan reply pada tweet, serta melihat trending topic di wilayahnya. Twitter memiliki fitur pencarian yang memungkinkan pengguna untuk mencari tweet dengan mengetikkan kata kunci, tagar, atau username. Twitter juga memiliki fitur timeline yang menampilkan daftar tweet dari akun yang diikuti oleh pengguna, diurutkan berdasarkan relevansinya. Twitter memiliki ratusan juta pengguna aktif harian, sehingga sistem aplikasi harus memiliki tingkat ketersediaan dan skalabilitas yang tinggi untuk menangani jumlah pengguna yang besar. Performa aplikasi juga harus cepat dan responsif agar pengguna dapat menggunakan aplikasi dengan nyaman.
System Requirements
Sistem Twitter harus memenuhi beberapa persyaratan sebagai berikut.
Functional Requirements
- Pengguna dapat memposting sebuah tweet
- Pengguna dapat menghapus tweet yang telah diposting
- Pengguna dapat bereaksi pada sebuah tweet (reply, like, retweet, dan share)
- Pengguna dapat mengikuti dan batal mengikuti sebuah akun
- Ketika pengguna mengakses timeline Twitter, ia mendapatkan daftar tweet dari akun yang diikuti diurutkan berdasarkan relevansinya
- Pengguna dapat mencari tweet dengan mengetikkan kata kunci, tagar, atau username pada bar pencarian
- Pengguna dapat melihat trending topic di wilayahnya pada bagian trend
Non-Functional Requirements
- Sistem aplikasi harus memiliki tingkat ketersediaan yang tinggi
- Sistem aplikasi harus memiliki skalabilitas yang tinggi untuk menangani jumlah pengguna yang besar
- Performa aplikasi harus cepat dan responsif
Estimasi Kapasitas
Estimasi Trafik
Kita asumsikan Twitter memiliki 100 juta pengguna aktif harian. Jika rata-rata setiap pengguna memposting tweet 3 kali sehari, maka total trafik tweet yang dihasilkan adalah sebagai berikut.
Selain memposting tweet, Twitter juga merupakan aplikasi yang read-heavy karena pengguna akan lebih banyak membaca tweet daripada memposting tweet, dimana rasio read-to-writenya adalah 1 : 10. Maka, total trafik read yang dihasilkan adalah sebagai berikut.
Estimasi Storage
Setiap tweet memiliki rata-rata panjang 140 karakter. Jika kita asumsikan setiap karakter membutuhkan 1 byte, maka total storage yang dibutuhkan untuk menyimpan tweet adalah sebagai berikut.
Setiap tweet memiliki metadata tambahan, seperti id tweet, id pengguna, waktu posting, jumlah like, jumlah retweet, jumlah reply, dan jumlah share. Jika kita asumsikan metadata tweet membutuhkan 100 byte, maka total storage yang dibutuhkan untuk menyimpan metadata tweet adalah sebagai berikut.
Total storage yang dibutuhkan untuk menyimpan tweet dan metadata tweet adalah sebagai berikut.
High Level Design
Arsitektur Sistem
Kita akan menggunakan arsitektur microservices untuk membangun sistem aplikasi Twitter. Arsitektur microservices merupakan pendekatan pengembangan perangkat lunak yang membagi aplikasi menjadi beberapa layanan kecil yang berdiri sendiri dan berkomunikasi satu sama lain melalui antarmuka yang didefinisikan. Setiap layanan memiliki tanggung jawab yang terbatas dan dapat dikembangkan, dideploy, dan diukur secara independen. Kita dapat membagi layanan pada sistem aplikasi Twitter menjadi beberapa layanan berikut.
-
User Service
Layanan ini menangani masalah terkait pengguna seperti autentikasi dan informasi pengguna.
-
Newsfeed Service
Layanan ini akan menangani pembuatan dan penerbitan newsfeed pengguna.
-
Tweet Service
Layanan tweet akan menangani kasus penggunaan terkait tweet seperti memposting tweet, favorit, dan lainnya.
-
Search Service
Layanan ini bertanggung jawab untuk menangani fungsionalitas terkait pencarian.
-
Media Service
Layanan ini akan menangani penyimpanan dan pengambilan media seperti gambar dan video.
-
Notification Service
Layanan ini akan menangani notifikasi yang dikirimkan kepada pengguna seperti notifikasi like, retweet, dan reply.
-
Analytics Service
Layanan ini akan menangani analisis data seperti trending topic dan statistik pengguna.
Setiap layanan akan memiliki basis data sendiri-sendiri yang sesuai dengan kebutuhan fungsionalitasnya. Layanan akan berkomunikasi satu sama lain melalui antarmuka yang didefinisikan, seperti REST API atau message broker. Kita juga dapat menggunakan API Gateway untuk menangani permintaan dari klien dan membaginya ke layanan yang sesuai.
Berikut adalah diagram arsitektur sistem aplikasi Twitter menggunakan arsitektur microservices yang lebih detail.
Cara Kerja Layanan
Newsfeed Generation
Ketika pengguna membuka aplikasi Twitter, aplikasi akan meminta newsfeed pengguna dari Newsfeed Service. Newsfeed Service akan mengambil tweet dari pengguna yang diikuti oleh pengguna tersebut, mengurutkannya berdasarkan relevansinya, dan mengembalikan daftar tweet tersebut ke aplikasi. Newsfeed Service akan menggunakan basis data yang menyimpan relasi pengguna dengan pengguna yang diikuti, tweet yang diposting oleh pengguna, dan metadata tweet.
Publishing
Ketika pengguna memposting tweet, aplikasi akan mengirimkan permintaan ke Tweet Service. Tweet Service akan menyimpan tweet ke basis data tweet dan metadata tweet, kemudian mengirimkan notifikasi ke Notification Service untuk mengirimkan notifikasi ke pengguna yang diikuti oleh pengguna tersebut. Tweet Service juga akan mengirimkan tweet ke Newsfeed Service untuk dimasukkan ke newsfeed pengguna yang diikuti oleh pengguna tersebut.
Data Model Design
Berikut adalah data model design dari sistem aplikasi Twitter. Data model design ini mencakup entitas-entitas yang dibutuhkan oleh sistem, atribut-atribut dari setiap entitas, dan relasi antar entitas.
Kita memiliki tabel sebagai berikut.
-
users
Tabel ini akan berisi informasi pengguna seperti nama, email, dob, dan detail lainnya.
-
tweets
Seperti namanya, tabel ini akan menyimpan tweet dan propertinya seperti jenis (teks, gambar, video, dll.), konten, dll. Kita juga akan menyimpan userID yang sesuai.
-
favorites
Tabel ini menyimpan tweet yang difavoritkan oleh pengguna seperti id favorit, id tweet, dan id pengguna.
-
followers
Tabel ini menyimpan relasi pengguna yang diikuti oleh pengguna seperti id pengikut dan id pengguna yang diikuti.
-
feeds
Tabel ini menyimpan newsfeed pengguna yang berisi tweet dari pengguna yang diikuti oleh pengguna tersebut.
-
feeds_tweets
Tabel ini menyimpan relasi antara newsfeed pengguna dan tweet yang ada di dalamnya.
Referensi
https://kuliahppl.blogspot.com/2024/03/high-level-design.htmlhttps://youtu.be/tjo_APthUug
Komentar
Posting Komentar