PPL Pertemuan 5 - High Level Design

Nama : Cindi Dwi Pramudita

NRP : 5025201042

Kelas : Perancangan Perangkat Lunak A


High Level Design Twitter


A. Deskripsi Singkat

Twitter adalah platform media sosial yang memungkinkan pengguna untuk mengirim dan membaca pesan berbasis teks hingga 280 karakter, yang dikenal sebagai "tweet". Twitter juga mendukung konten multimedia seperti gambar, video, dan tautan.

B. System Requirements

a. Persyaratan Fungsional:

  1. Registrasi dan Login: Pengguna dapat membuat akun baru dan login.
  2. Tweet: Pengguna dapat menulis, mengedit, dan menghapus tweet.
  3. Retweet: Pengguna dapat membagikan ulang tweet pengguna lain.
  4. Like: Pengguna dapat menyukai tweet.
  5. Follow/Unfollow: Pengguna dapat mengikuti atau berhenti mengikuti pengguna lain.
  6. Timeline: Pengguna dapat melihat timeline tweet dari pengguna yang mereka ikuti.
  7. Search: Pengguna dapat mencari tweet, hashtag, dan pengguna lain.
  8. Notifications: Pengguna dapat menerima notifikasi untuk aktivitas yang relevan.
  9. Direct Messaging: Pengguna dapat mengirim pesan langsung kepada pengguna lain.
  10. Trending Topics: Pengguna dapat melihat topik yang sedang trending.

b. Persyaratan Non Fungsional:

  1. Scalability: Sistem harus mampu menangani pertumbuhan jumlah pengguna dan data.
  2. Availability: Sistem harus tersedia 99.9% dari waktu.
  3. Performance: Latensi untuk memuat timeline dan tweet tidak boleh lebih dari 2 detik.
  4. Security: Data pengguna harus dilindungi dari akses yang tidak sah.
  5. Data Consistency: Data harus konsisten di seluruh sistem.

c. Persyaratan yang Diperpanjang:

  1. Multilingual Support: Dukungan untuk berbagai bahasa.
  2. Analytics: Fitur analitik untuk pengguna dan administrator.
  3. API: API terbuka untuk memungkinkan integrasi pihak ketiga.

C. Estimasi Kapasitas Perancangan Sistem Twitter

a. Estimasi Lalu Lintas

  • Pengguna Aktif Harian (DAU): 200 juta pengguna.
  • Tweet per Detik: 6,000 tweet per detik.
  • Request per Detik: 20,000 request per detik (termasuk tweet, like, retweet, follow, dll).

b. Estimasi Penyimpanan

  • Ukuran Tweet: 280 karakter = 280 bytes.
  • Penyimpanan Harian: 6,000 tweet/detik * 280 bytes * 86400 detik = 144 TB/hari.
  • Penyimpanan Tahunan: 144 TB/hari * 365 hari = 52.5 PB/tahun.

c. Estimasi Bandwidth

  • Ukuran Data per Request: Rata-rata 1 KB.
  • Bandwidth per Detik: 20,000 request/detik * 1 KB = 20 MB/detik.

D. System Design





High-Level Design

  1. Load Balancer: Untuk mendistribusikan lalu lintas ke server.
  2. Web Servers: Menangani permintaan HTTP dari pengguna.
  3. Application Servers: Menjalankan logika aplikasi.
  4. Database Servers: Menyimpan data pengguna dan tweet.
  5. Cache Servers: Menggunakan Redis atau Memcached untuk caching.
  6. Search Servers: Elasticsearch untuk mendukung pencarian.
  7. Media Servers: Untuk penyimpanan dan penyajian konten multimedia.
  8. Message Queue: Untuk menangani tugas-tugas asynchronous.
  9. CDN (Content Delivery Network): Untuk mempercepat penyampaian konten ke pengguna.

Low-Level Design

  1. Database Sharding: Membagi data ke beberapa database untuk mengatasi beban tinggi.
  2. Indexing: Menggunakan indeks untuk mempercepat pencarian.
  3. Rate Limiting: Untuk mencegah penyalahgunaan API.
  4. Data Replication: Untuk memastikan data tersedia jika ada kegagalan.

E. Data Model Design


Tabel Users

Menyimpan informasi tentang pengguna.

  • ID INT (Primary Key)
  • Name VARCHAR(45)
  • Email VARCHAR(45)
  • DOB DATE (Tanggal Lahir)
  • CreatedAt VARCHAR(45) (Tanggal Pembuatan)

Tabel Tweets

Menyimpan informasi tentang tweet.

  • ID INT (Primary Key)
  • UserID VARCHAR(45) (Foreign Key ke tabel Users)
  • Type VARCHAR(45) (Jenis tweet)
  • Content VARCHAR(45) (Konten tweet)
  • Users_ID INT (Foreign Key ke tabel Users)

Tabel Followers

Menyimpan informasi tentang pengikut.

  • ID INT (Primary Key)
  • FollowerID INT (ID Pengikut)
  • UserID INT (Foreign Key ke tabel Users)

Tabel Feeds

Menyimpan informasi tentang umpan (feed).

  • ID INT (Primary Key)
  • UserID VARCHAR(45) (Foreign Key ke tabel Users)
  • UpdatedAt VARCHAR(45) (Tanggal Pembaruan)

Tabel Feeds_tweets

Menyimpan hubungan antara umpan dan tweet.

  • ID INT (Primary Key)
  • TweetID VARCHAR(45) (Foreign Key ke tabel Tweets)
  • FeedID VARCHAR(45) (Foreign Key ke tabel Feeds)
  • Tweets_ID INT (Foreign Key ke tabel Tweets)
  • Favourites_ID INT (Foreign Key ke tabel Favourites)
  • Favourites_Tweets_ID INT (Foreign Key ke tabel Favourites dan Tweets)
  • Favourites_Tweets_Users_ID INT (Foreign Key ke tabel Favourites dan Users)

Tabel Favourites

Menyimpan informasi tentang tweet yang disukai.

  • ID INT (Primary Key)
  • UserID VARCHAR(45) (Foreign Key ke tabel Users)
  • TweetID VARCHAR(45) (Foreign Key ke tabel Tweets)
  • CreatedAt VARCHAR(45) (Tanggal Pembuatan)
  • Users_ID INT (Foreign Key ke tabel Users)
  • Tweets_ID INT (Foreign Key ke tabel Tweets)
  • Tweets_Users_ID INT (Foreign Key ke tabel Tweets dan Users)

Indeks

Setiap tabel dapat memiliki indeks untuk kolom yang sering digunakan dalam query, seperti UserID pada tabel Tweets, untuk meningkatkan kinerja.

Desain basis data ini menangkap hubungan antara pengguna, tweet, pengikut, umpan, dan favorit sebagaimana digambarkan dalam diagram.

F. Conclusion

Desain sistem Twitter ini mencakup berbagai aspek dari kebutuhan fungsional dan non-fungsional hingga estimasi kapasitas dan desain sistem. Desain ini bertujuan untuk memastikan Twitter dapat beroperasi secara efisien, aman, dan skala. Selanjutnya, implementasi detail dan pengujian perlu dilakukan untuk memastikan semua persyaratan terpenuhi.

Comments

Popular posts from this blog

PPL Pertemuan 7 - Desain Sistem Restaurant

Evaluasi Tengah Semester Perancangan Perangkat Lunak

PPL Pertemuan 14 - Desain Database