Tugas Pertemuan 5 PPL

Nama : Yohanes Teguh Ukur Ginting
NRP : 5025211179
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.


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/






Comments

Popular posts from this blog

Tugas PPB 10

TUGAS PERTEMUAN 3 - PPB

TUGAS PERTEMUAN 2 - PPB