Tugas 4 : High Level Design

  

Nama  : Fathin Muhashibi Putra
NRP    : 5025211229
Kelas  : PPL - A


High Level Design 

     Tugas yang diberikan pada mata kuliah Perancangan Perangkat Lunak (A), yaitu terkait High Level Design. Berikut merupakan dokumentasinya :



Deskripsi High Level Design

    High Level Design (HLD) atau Desain Tingkat Tinggi adalah desain sistem umum yang mengacu pada desain sistem secara keseluruhan, dan mendeskripsikan keseluruhan atau arsitektur aplikasi. HLD ini mencakup deskripsi keseluruhan dari arsitektur sistem, bersamaan dengan desain database dan deskripsi singkat mengenai sistem, platform, layanan, desain basis data, serta hubungan antar modul. HLD juga dikenal sebagai desain tingkat makro/sistem yang dibuat oleh solution architect. Desain ini mengubah kebutuhan bisnis menjadi high level solution, dan dibuat terlebih dahulu sebelum Low Level Design. Pada kesempatan kali ini akan dibahas terkait High Level Design dari Twitter.


Deskripsi Twitter

    Twitter adalah platform media sosial yang memungkinkan pengguna untuk berbagi pemikiran, berita, dan informasi dalam format pesan pendek yang dikenal sebagai "tweet". Dengan jangkauan global yang luas, Twitter telah menjadi salah satu saluran utama bagi individu, organisasi, dan perusahaan untuk berkomunikasi dengan audiens mereka secara real-time. Dengan fitur-fitur seperti retweet, like, dan hashtag, Twitter memfasilitasi interaksi antara pengguna dan memungkinkan informasi untuk dengan cepat menjadi viral. High Level Design dari Twitter akan menguraikan arsitektur sistem secara keseluruhan, termasuk infrastruktur yang mendukung situs web dan aplikasi seluler, manajemen basis data untuk menyimpan tweet dan informasi pengguna.


A. Persyaratan (Requirements) Sistem Twitter

    Pada sistem Twitter terdapat beberapa persyaratan sebagai berikut :

a.) 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.

b.) Persyaratan Non-Fungsional

  • Ketersediaan tinggi dengan latensi minimal.
  • Sistem harus dapat diskalakan dan efisien.

c.) Persyaratan Tambahan

  • Metrik dan analitika
  • Fungsionalitas retweet
  • Tweet favorit

B. Estimasi Kapasitas Sistem Twitter

a.) Lalu Lintas (Traffic)

    Twitter akan menjadi sistem yang banyak dibaca, jika diasumsikan kita memiliki total 1 miliar pengguna dengan 200 juta pengguna aktif harian (DAU), dan rata-rata setiap pengguna melakukan tweet 5 kali sehari. Hal ini memberikan kita 1 miliar tweet per hari.


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


Maka, jumlah Permintaan Per Detik untuk sistem twitter, yaitu 1 miliar permintaan per hari berarti 12 ribu permintaan per detik.


b.) Penyimpanan (Storage)

    Jika diasumsikan setiap pesan rata-rata adalah 100 byte, kita akan memerlukan sekitar 100 GB penyimpanan basis data setiap hari.


Kita juga tahu bahwa sekitar 10 persen dari pesan harian kita (100 juta) adalah file media sesuai dengan kebutuhan kita. Jika kita mengasumsikan setiap file memiliki rata-rata ukuran 50 KB, kita akan memerlukan 5 TB penyimpanan setiap hari.


Lalu, untuk 10 tahun, kita akan memerlukan sekitar 19 PB penyimpanan.

c.) Bandwidth

    Dengan sistem twitter menangani 5,1 TB masuk setiap hari, kita akan memerlukan bandwidth minimum sekitar 60 MB per detik.


d.) Estimasi Tingkat Tinggi (High-level estimate)
    Berikut adalah estimasi tingkat tinggi dari sistem twitter:



C. High Level Design Sistem Twitter

High level design dari sistem twitter dapat dilihat pada ilustrasi di bawah ini :


Berikut penjelasan dari high level design tersebut :
  • Arsitektur
Pada twitter digunakan arsitektur mikrojasa karena akan memudahkan penskalaan horizontal dan memisahkan layanan kami. Setiap layanan akan memiliki kepemilikan atas model data sendiri. Kami akan membagi sistem kami menjadi beberapa layanan inti.

  • Layanan Pengguna
Layanan ini menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna. Halaman Masuk, Halaman Daftar, Halaman Profil, dan Halaman Beranda akan ditangani dalam Layanan Pengguna.

  • Layanan Berita Terbaru
Layanan ini akan menangani pembuatan dan publikasi berita terbaru pengguna. 

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

  • Retweet
Retweet merupakan salah satu dari persyaratan tambahan kami. Untuk mengimplementasikan fitur ini, kita dapat dengan mudah membuat tweet baru dengan id pengguna yang melakukan retweet terhadap tweet asli, dan kemudian mengubah jenis enum dan properti konten dari tweet baru tersebut untuk menghubungkannya dengan tweet asli.

  • Layanan Pencarian:
Layanan ini bertanggung jawab atas penanganan fungsionalitas pencarian terkait. Di layanan pencarian, kita mendapatkan posting teratas, posting terbaru, dll. Hal-hal ini kita dapatkan karena perankingan.

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

  • Layanan Analitik:
Layanan ini akan digunakan untuk kasus penggunaan metrik dan analitik.

  • Algoritma Perankingan
Kita akan memerlukan algoritma perankingan untuk merangkai setiap tweet sesuai dengan relevansinya terhadap setiap pengguna tertentu.

  • Layanan Pencarian
Elasticsearch merupakan mesin pencarian terdistribusi yang memungkinkan penyimpanan, pencarian, dan analisis data besar secara cepat dan hampir real-time. Dibangun di atas Apache Lucene, Elasticsearch mendukung berbagai jenis data, termasuk teks, numerik, geospasial, terstruktur, dan tidak terstruktur.

  • Identifikasi Topik Tren
Fungsionalitas tren didasarkan pada layanan pencarian. Dengan menyimpan cache dari kueri, hashtag, dan topik yang sering dicari, kemudian diperbarui secara berkala, algoritma perankingan dapat diterapkan untuk memberikan bobot lebih pada topik yang sedang tren dan mempersonalisasi hasil untuk pengguna.

  • Layanan Pemberitahuan
Pemberitahuan push penting dalam platform media sosial. Menggunakan antrian pesan atau broker pesan seperti Apache Kafka, layanan pemberitahuan mengirimkan permintaan ke Firebase Cloud Messaging (FCM) atau Apple Push Notification Service (APNS) untuk menangani pengiriman pemberitahuan push ke perangkat pengguna.

D. System Architecture Twitter

Berikut merupakan system architecture dari twitter:


Pada gambar diatas telah diilustrasikan system architecture dari twitter yang mengatur bagaimana komponen-komponen software twitter bekerja. System architecture twitter mengacu pada cara sistem tersebut terorganisir dan beroperasi, termasuk teknologi, infrastruktur, dan layanan yang digunakan untuk mendukung fungsionalitasnya. Ini termasuk pemilihan model arsitektur seperti arsitektur mikrojasa, pemisahan layanan, manajemen basis data, algoritma pencarian, serta integrasi dengan layanan pemberitahuan dan analitik. Arsitektur Twitter harus mampu menangani skala besar, kebutuhan ketersediaan tinggi, dan latensi rendah untuk memberikan pengalaman pengguna yang optimal.

E. Data Model Design Twitter

Berikut merupakan data model design dari twitter:

Pada data model design di atas terdapat 6 entitas utama,yaitu :
  • Users
  • Followers
  • Tweets
  • Favourites
  • Feeds
  • Feeds_Tweets
Masing-masing dari entitas tersebut memiliki detail atribut-atribut data model design twitter.




Referensi : 

https://kuliahppl.blogspot.com/2024/03/high-level-design.html




Comments

Popular posts from this blog

Tugas 2: Membuat Aplikasi Hello World menggunakan Jetpack Compose (PPB - A)

Tugas 1: Review Perkembangan Teknologi Perangkat Bergerak (PPB - A)

ETS - Evaluasi Tengah Semester: Proyek - Mobile Front End