PPL - Tugas 4 High Level Design

Revanantyo Dwigantara

5025211113

Pendahuluan


Twitter adalah platform media sosial di mana pengguna dapat memposting pesan singkat yang disebut "tweet" dan berinteraksi dengan pengguna lain. Tweet dapat berisi hingga 280 karakter, termasuk teks, foto, atau tautan. Pengguna dapat mengikuti akun lain dan menerima pemberitahuan saat mereka memposting tweet baru. Artikel ini akan membahas bagaimana merancang sistem yang mirip dengan Twitter, mulai dari mengidentifikasi persyaratan utama hingga merancang arsitektur sistem.

High Level Design (HLD)

High Level Design (HLD) adalah cetak biru umum dari arsitektur sistem yang menunjukkan komponen utama, hubungan antar komponen, dan interaksi keseluruhannya. HLD memberikan pandangan menyeluruh tentang cara kerja sistem tanpa masuk ke detail teknis mendalam.

Untuk layanan seperti Twitter, diperlukan beberapa server aplikasi untuk menangani permintaan klien. Server-server ini ditempatkan di belakang penyeimbang beban (load balancers) yang mendistribusikan lalu lintas masuk secara merata. Pada bagian backend, diperlukan basis data yang kuat untuk menyimpan tweet dan mendukung jumlah pembacaan yang tinggi. Selain itu, sistem memerlukan penyimpanan file untuk foto dan video.

Persyaratan Utama

Sebelum merancang sistem seperti Twitter, penting untuk mengidentifikasi fitur dan persyaratan esensial yang perlu dipenuhi:

  1. Memposting Tweet: Pengguna harus dapat membuat dan memposting tweet yang dapat mencakup teks, foto, atau tautan.
  2. Pengiriman Tweet: Layanan harus dapat mendorong tweet baru ke pengikut pengguna yang mempostingnya dan mengirim pemberitahuan push.
  3. Tampilan Timeline: Pengguna harus dapat melihat timeline mereka sendiri serta timeline beranda yang berisi tweet dari akun yang mereka ikuti.
  4. Ketersediaan Tinggi: Layanan harus sangat tersedia dan mampu menangani sejumlah besar pengguna dan permintaan tanpa downtime.

Estimasi Kapasitas

Dengan asumsi sistem memiliki:

  • 0,5 miliar total pengguna.
  • 100 juta pengguna aktif harian (DAU).
  • 50 juta tweet baru setiap hari.

Sistem akan menghasilkan total 4 miliar tampilan tweet per hari, dengan asumsi rata-rata seorang pengguna mengunjungi timeline mereka sendiri sekali sehari, mengunjungi halaman tiga orang lain, dan setiap halaman memiliki 10 tweet. Jadi, sistem lebih berat pada pembacaan daripada penulisan. Penting untuk mengoptimalkan pembacaan tweet dengan cepat.

Jika setiap tweet berukuran 10 KB, kebutuhan penyimpanan harian total akan sekitar 5 TB. Untuk penyimpanan selama 10 tahun, dibutuhkan sekitar 18,25 PB.

Desain Platform

Platform ini menawarkan berbagai layanan untuk menangani fungsi-fungsi tertentu. Setiap layanan menyediakan API untuk aplikasi klien atau layanan lainnya, dan memiliki penyimpanan data masing-masing. Komponen utama sistem meliputi:

  1. Layanan Pengguna: Mengelola pengguna dan interaksi mereka, seperti mengikuti atau berhenti mengikuti pengguna lain.
  2. Layanan Tweet: Mengelola pembuatan dan penyimpanan tweet, serta komentar dan suka pada tweet.
  3. Layanan Umpan: Bertanggung jawab untuk menghitung tweet yang akan muncul di timeline pengguna dan mendukung paginasi.

Generasi dan Pembaruan Timeline

Untuk menampilkan timeline pengguna, sistem harus menunjukkan postingan terbaru dari pengikut pengguna. Menghasilkan timeline secara on-demand dapat lambat, sehingga sistem harus membuat dan menyimpan timeline sebelumnya dalam memori. Untuk memastikan timeline yang dihasilkan diperbarui secara reguler, sistem dapat menggunakan server khusus untuk membuat dan menyimpannya.

Pendekatan untuk mempublikasikan postingan baru kepada pengguna dapat berupa:

  1. Model Tarik (Pull): Klien meminta data secara berkala atau manual.
  2. Model Dorong (Push): Sistem mengirim notifikasi kepada pengikut segera setelah pengguna memposting tweet.
  3. Model Hibrida: Menggabungkan model tarik dan dorong untuk menyeimbangkan kelebihan dan kekurangan masing-masing pendekatan.



Kesimpulan

Dengan desain arsitektur perangkat lunak yang tepat, seperti penggunaan microservices, sistem dapat dioptimalkan untuk performa dan skalabilitas tinggi. Implementasi arsitektur ini memungkinkan organisasi untuk meningkatkan performa dan fleksibilitas dalam memilih teknologi yang sesuai dengan masalah yang dihadapi.

Komentar

Postingan populer dari blog ini

Tugas 4 - APSI - Seleksi dan Manajemen Proyek

Tugas 3 - APSI - Feasibility Study