PPL : Pertemuan 5 - Tugas 4


High Level Design - Twitter

Nama: Hanafi Satriyo Utomo Setiawan
NRP : 5025211195 

High-Level Design untuk sistem Twitter adalah langkah awal dalam merancang arsitektur sistem, yang melibatkan identifikasi dan pemodelan komponen utama serta hubungan dan interaksinya. Fokusnya pada aspek utama seperti skalabilitas, keandalan, keamanan, dan kinerja. Desain ini menjadi dasar untuk Detailed Design, yang memperinci teknis setiap komponen dan interaksinya, memungkinkan tim untuk fokus pada implementasi berdasarkan arsitektur yang ditetapkan.

  • Persyaratan Fungsional:
    • Harus dapat memposting tweet baru (bisa berupa teks, gambar, video, dll).
    • Harus dapat mengikuti pengguna lain.
    • Harus memiliki fitur newsfeed yang terdiri dari tweet dari orang yang diikuti oleh pengguna.
    • Harus dapat mencari tweet.
  • Persyaratan Non-Fungsional:
    • Ketersediaan tinggi dengan latensi minimal.
    • Sistem harus dapat diskalakan dan efisien.
  • Persyaratan Tambahan:
    • Metrik dan analitik.
    • Fitur retweet.
    • Tweet favorit.

Use Case Diagram


  • Pengguna akan mengklik Halaman Twitter dan mereka akan mendapatkan halaman utama. Di dalam halaman utama, akan ada Halaman Beranda, Halaman Pencarian, dan Halaman Notifikasi. Di dalam
  • Halaman Beranda, akan ada halaman Tweet Baru serta Postingan Gambar atau Video.
  • Di halaman Tweet Baru, akan ada tombol suka, tidak suka, komentar, serta tombol mengikuti/tidak mengikuti.
  • Pengguna tamu(Guest) hanya akan memiliki akses untuk melihat tweet apapun. 
  • Pengguna terdaftar dapat melihat dan memposting tweet. Mereka juga bisa mengikuti dan berhenti mengikuti pengguna lain. Pengguna terdaftar akan dapat membuat tweet baru.

Estimasi Penyimpanan

Misalkan setiap pesan rata-rata berukuran 100 byte, kita akan memerlukan sekitar 100 GB penyimpanan database setiap hari.

1 miliar * 100 byte = 100 GB/hari

10 persen dari pesan harian kita (100 juta) adalah file media sesuai kebutuhan kita. Misalkan setiap file rata-rata berukuran 50 KB, kita akan memerlukan 5 TB penyimpanan setiap hari.

100 juta * 50 KB = 5 TB/hari

Untuk 10 tahun, kita memerlukan 19 PB penyimpanan.

(5 TB + 0,1 TB) * 365 hari * 10 tahun = 19 PB

 

High Level - Architecture


Komponen utama diagram blok tersebut adalah:

  • Klien: Klien adalah perangkat pengguna yang digunakan untuk mengakses situs web. Klien dapat berupa komputer desktop, laptop, tablet, atau smartphone.
  • Load Balancer: Load balancer mendistribusikan lalu lintas web ke beberapa server web untuk meningkatkan kinerja dan skalabilitas.
  • Server Web: Server web menyimpan dan mengirimkan halaman web ke klien.
  • Database: Database menyimpan data situs web, seperti profil pengguna, postingan, dan komentar.
  • Cache: Cache menyimpan data yang sering diakses untuk meningkatkan kinerja situs web.
  • Mesin Pesan Antrian: Mesin pesan antrian digunakan untuk menampung permintaan yang masuk dan mendistribusikannya ke server yang sesuai.
  • Layanan Timeline: Layanan timeline bertanggung jawab untuk menghasilkan timeline pengguna, yang menampilkan postingan terbaru dari pengguna yang diikuti.
  • Layanan Pencarian: Layanan pencarian memungkinkan pengguna untuk mencari konten di situs web.
  • Layanan WebSocket: Layanan WebSocket menyediakan koneksi persisten antara klien dan server, yang memungkinkan komunikasi real-time.

Arsitektur situs web ini dirancang untuk memberikan:

  • Kinerja: Arsitektur ini mendistribusikan lalu lintas web dan menggunakan cache untuk meningkatkan kinerja.
  • Skalabilitas: Arsitektur ini dapat diubah ukurannya dengan menambahkan server web tambahan untuk memenuhi permintaan yang meningkat.
  • Ketersediaan Tinggi: Arsitektur ini menggunakan load balancing dan failover untuk memastikan bahwa situs web selalu tersedia.
  • Real-time: Arsitektur ini menggunakan WebSocket untuk menyediakan komunikasi real-time antara klien dan server.

 Database Design


Meskipun model data yang digunakan cenderung relasional, tidak perlu menyimpan seluruhnya dalam satu basis data tunggal karena dapat membatasi skalabilitas dan menjadi bottleneck. 

Data akan dibagi antara berbagai layanan yang masing-masing memiliki kepemilikan atas tabel tertentu. Basis data relasional seperti PostgreSQL atau basis data NoSQL terdistribusi seperti Apache Cassandra dapat digunakan untuk kasus penggunaan ini.


Comments

Popular posts from this blog

PPL : Pertemuan 2

PPL : Pertemuan 7

Final Project : Pemrograman Berbasis Kerangka Kerja A