TUGAS PERTEMUAN 5 PPL - HIGH LEVEL DESIGN

Nama:      Arif Nugraha Santosa

NRP:        5025211048

Kelas:       Perancangan Perangkat Lunak (A) 


Tugas Pertemuan 5 PPL - High Level Design 


High Level Design (HLD) adalah gambaran umum dari suatu sistem atau aplikasi yang menjelaskan struktur dan arsitektur sistem secara keseluruhan, tanpa mendalami detail implementasi. HLD biasanya dibuat pada tahap awal pengembangan perangkat lunak, sebelum desain tingkat rendah (LLD) dibuat. Tujuan HLD adalah memberikan gambaran yang jelas tentang sistem kepada para pemangku kepentingan seperti investor, manajer, dan arsitek. HLD membantu dalam pengambilan keputusan desain yang tepat, memudahkan komunikasi antar anggota tim pengembangan, serta mempermudah proses pengembangan dan pemeliharaan perangkat lunak.

Dalam pertemuan kelima mata kuliah Perancangan Perangkat Lunak kali ini, kita diminta untuk berlatih membuat high-level design dari sistem perangkat lunak yang sudah disediakan. 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 Requirement

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

Asumsikan Twitter memiliki jumlah pengguna harian sebanyak 100 juta dengan masing-masing pengguna memposting 3 tweet tiap harinya. Sehingga total trafik tweet adalah 300 juta tweet per hari. Dikarenakan Twitter adalah aplikasi yang read-heavy dimana pengguna lebih sering membaca tweet daripada memposting tweet maka diasumsikan ratio write dan read adalah 1:10. Sehingga diperoleh total trafik read adalah 3 miliar read per hari.

Estimasi Penyimpanan

Asumsikan rata-rata tweet memiliki besar 10 KB. Sedangkan dari estimasi trafik terdapat 300 juta tweet per hari, sehingga membutuhkan total penyimpanan sebanyak 3 TB per hari.

Arsitektur Sistem

Sistem aplikasi Twitter akan menggunakan microservices sehingga aplikasi terdiri dari layanan-layanan kecil. Hal ini ini akan memudahkan penskalaan horizontal dan tiap layanan memiliki kepemilikian atas model data sendiri-sendiri, sistem akan dibagi menjadi beberapa layanan inti sebagai berikut:
  • User service: Layanan ini menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna.
  • Newsfeed service: Layanan ini menangani algoritma pemberian tweet-tweet baru yang relevan kepada pengguna.
  • Post tweet service: Layanan ini menangani pembuatan tweet oleh pengguna.
  • Search tweet service: Layanan ini menangani pencarian tweet oleh keyword yang direquest oleh pengguna:
  • Media service: Layanan ini menangani unggahan media berupa gambar, video, dll.
  • Analysis service: Layanan ini digunakan untuk kasus penggunaan metrik dan anailitik
  • Notification service: Layanan ini digunakan untuk pemberitahuan kepada pengguna, serperti akun baru yang follow, tweet baru, dll.

Use Case Diagram


Pada diagram use case ini, pengguna mengklik halaman Twitter mereka dan diarahkan ke halaman utama. Di halaman utama ini terdapat tiga sub-halaman utama: Halaman Beranda, Halaman Pencarian, dan Halaman Pemberitahuan.

  • Halaman Beranda: Pengguna dapat melihat tweet terbaru, memposting gambar atau video, serta menggunakan tombol suka, tidak suka, komentar, dan tombol ikuti/berhenti mengikuti. Pengguna tamu hanya dapat melihat tweet tanpa akses untuk melakukan interaksi, sedangkan pengguna terdaftar dapat melihat dan memposting tweet serta mengikuti atau berhenti mengikuti pengguna lain.
  • Halaman Pencarian: Memungkinkan pengguna untuk mencari postingan teratas dan terbaru.
  • Halaman Pemberitahuan: Menampilkan notifikasi terkait aktivitas pengguna di platform.

Pengguna terdaftar memiliki akses penuh untuk membuat tweet baru dan berinteraksi dengan konten, sementara pengguna tamu terbatas pada hanya melihat tweet.

High-Level Design



Kami mengadopsi arsitektur layanan mikro untuk Twitter, memisahkan layanan-layanan inti untuk memfasilitasi penskalaan horizontal dan pengelolaan yang lebih baik atas model data masing-masing layanan. Berikut adalah layanan-layanan inti kami:

1. Layanan Pengguna:
   - Mengelola otentikasi dan informasi pengguna.
   - Meliputi halaman login, pendaftaran, profil, dan beranda.

2. Layanan Umpan Berita:
   - Mengurus pembuatan dan publikasi umpan berita pengguna.

3. Layanan Tweet:
   - Memproses segala hal terkait tweet, termasuk memposting tweet dan menambahkannya ke favorit.

4. Layanan Pencarian:
   - Menangani fungsi pencarian, termasuk mencari postingan teratas dan terbaru.

5. Layanan Media:
   - Mengelola unggahan media seperti gambar, video, dan file.

6. Layanan Analisis:
   - Melacak metrik dan analitik terkait penggunaan platform.

7. Algoritma Pemeringkatan:
   - Memberi peringkat tweet berdasarkan relevansinya bagi setiap pengguna.

Data Model



Model data kami mencakup beberapa tabel dalam basis data:
  1. Tabel Pengguna: Menyimpan informasi pengguna seperti nama, alamat email, dan detail lainnya.
  2. Tabel Tweet: Menyimpan tweet beserta atributnya seperti teks, gambar, video, tanggal, dan waktu pembuatan tweet.
  3. Tabel Favorit: Memetakan tweet dengan pengguna untuk menyimpan daftar tweet favorit pengguna.
  4. Tabel Pengikut: Mencatat hubungan antara pengguna yang mengikuti dan diikuti.
  5. Tabel Umpan: Menyimpan properti dari setiap umpan yang akan ditampilkan kepada pengguna.
  6. Tabel Umpan_Tweet: Memetakan hubungan antara tweet dan umpan, memungkinkan tweet ditampilkan dalam umpan yang relevan untuk pengguna.
Dengan desain tingkat tinggi (HLD) ini, kita mendapatkan gambaran menyeluruh tentang struktur dan arsitektur sistem aplikasi Twitter, yang membantu dalam pengambilan keputusan desain, komunikasi antar anggota tim pengembangan, serta mempermudah proses pengembangan dan pemeliharaan perangkat lunak.


Comments

Popular posts from this blog

EAS PPL A - ARIF NUGRAHA SANTOSA

TUGAS PERTEMUAN 13 PPL - DESAIN SYSTEM APLIKASI INSTAGRAM

TUGAS PERTEMUAN 14 PPL - DESAIN DATABASE