Langsung ke konten utama

TUGAS 4 - PPL A

 NAMA   : Ananda Hadi Saputra

KELAS  : PPL A

NRP       : 5025201148

High Level Design - Twitter

High Level Design

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.

Persyaratan Sistem Desain Twitter

- Persyaratan Fungsional 

  • Pengguna bisa posting tweet baru (text, gambar, video, dll)
  • Pengguna bisa mengikuti pengguna lainnya
  • Pengguna bisa mencari tweet pengguna lain
  • Memiliki umpan berita yang terdiri dari twitter pengikut dari pengguna

- Persyaratan Non-Fungsional

  • Ketersediaan tinggi dengan latensi rendah
  • Sistem harus terukur dan efisien

- Persyaratan yang Diperpanjang

  • Metrik dan Analitik
  • Fungsi Retweet
  • Tweet favorit

Perkiraan Kapasias Untuk Sistem Desain Twitter

Untuk memperkirakan kapasitas sistem, kita perlu menganalisis perkiraan tingkat klik harian.

Estimasi Lalu Lintas:

Misalkan kita memiliki 1 miliar pengguna total dengan 200 juta pengguna aktif harian (DAU), dan rata-rata setiap pengguna men-tweet 5 kali sehari. Ini memberi kita 1 miliar tweet per hari.

200 juta pengguna×5 tweet=1 miliar tweet/hari

Tweet juga dapat berisi media seperti gambar atau video. Kita dapat berasumsi bahwa 10 persen tweet adalah file media yang dibagikan oleh pengguna, yang memberi kita tambahan 100 juta file yang perlu disimpan.

10%×1 miliar=100 juta/hari

Untuk Permintaan Sistem per Detik (RPS) kita adalah:

1 miliar permintaan per hari diterjemahkan menjadi 12 ribu permintaan per detik.

1 miliar/(24 jam×3600 detik)=12 ribu permintaan/detik

Estimasi Penyimpanan:

Misalkan setiap pesan rata-rata berukuran 100 byte, kita akan membutuhkan sekitar 100 GB penyimpanan basis data setiap hari.

1 miliar×100 byte=100 GB/hari

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

100 juta×50 KB=5 TB/hari

Untuk 10 tahun membutuhkan 19 PB penyimpanan.

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

Estimasi Bandwidth:

Karena sistem kita menangani 5,1 TB data masuk setiap hari, kita akan membutuhkan bandwidth minimal sekitar 60 MB per detik.

5,1 TB/(24 jam×3600 detik)=60 MB/detik

Desain Use Case untuk Desain Sistem Twitter


Pada Diagram di atas,

Pengguna akan mengklik Halaman Twitter dan mereka akan mendapatkan halaman utama. Di dalam halaman utama, terdapat Halaman Beranda, Halaman Pencarian, dan Halaman Notifikasi.

  • Di dalam Halaman Beranda, terdapat halaman Tweet Baru serta opsi untuk Memposting Gambar atau Video.
  • Pada Tweet Baru, terdapat tombol untuk menyukai, tidak menyukai, memberikan komentar, serta mengikuti / berhenti mengikuti pengguna lain.
  • Pengguna tamu hanya memiliki akses untuk melihat tweet apa pun.
  • Pengguna terdaftar dapat melihat dan memposting tweet.
  • Mereka dapat mengikuti dan berhenti mengikuti pengguna lain.
  • Pengguna terdaftar dapat membuat tweet baru.

Desain Tingkat Tinggi (High Level Design) untuk Desain Sistem Twitter


1. Arsitektur:

Untuk Twitter, kami menggunakan arsitektur microservices karena akan memudahkan penskalaan horizontal dan memisahkan layanan kami. Setiap layanan akan memiliki model datanya sendiri. Kami akan membagi sistem kami menjadi beberapa layanan inti.

2. Layanan Pengguna:

Layanan ini menangani hal-hal terkait pengguna seperti otentikasi dan informasi pengguna. Halaman Login, Halaman Pendaftaran, Halaman Profil, dan Halaman Beranda akan ditangani oleh layanan Pengguna.

3. Layanan Newsfeed:

Layanan ini akan menangani pembuatan dan publikasi newsfeed pengguna.

4. Layanan Tweet:

Layanan tweet menangani kasus penggunaan terkait tweet seperti memposting tweet, favorit, dll.

5. Retweets:

Retweet adalah salah satu persyaratan tambahan kami. Untuk mengimplementasikan fitur ini, kami dapat membuat tweet baru dengan ID pengguna yang me-retweet tweet asli dan kemudian mengubah properti jenis enum dan konten 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 ini kita dapatkan karena adanya peringkat.

7. Layanan Media:

Layanan ini akan menangani unggahan media (gambar, video, file, dll.).

8. Layanan Analitik:

Layanan ini akan digunakan untuk kasus penggunaan metrik dan analitik.

9. Algoritma Peringkat:

Kami memerlukan algoritma peringkat untuk memeringkat setiap tweet berdasarkan relevansinya dengan setiap pengguna tertentu.

10. Layanan Pencarian:

Terkadang DBMS tradisional tidak cukup performatif, kita memerlukan sesuatu yang memungkinkan kita menyimpan, mencari, dan menganalisis volume data yang besar dengan cepat dan hampir real-time serta memberikan hasil dalam milidetik. Elasticsearch dapat membantu kita dalam kasus penggunaan ini. Elasticsearch adalah mesin pencarian dan analitik terdistribusi, gratis, dan terbuka untuk semua jenis data, termasuk tekstual, numerik, geospasial, terstruktur, dan tidak terstruktur. Ini dibangun di atas Apache Lucene.

11. Layanan Notifikasi:

Notifikasi push adalah bagian integral dari platform media sosial mana pun. Kita dapat menggunakan antrian pesan atau broker pesan seperti Apache Kafka dengan layanan notifikasi untuk mengirim permintaan ke Firebase Cloud Messaging (FCM) atau Apple Push Notification Service (APNS) yang akan menangani pengiriman notifikasi push ke perangkat pengguna.

Data Model



Kesimpulan

Twitter menangani ribuan tweet per detik sehingga tidak memungkinkan untuk memiliki satu sistem besar atau tabel untuk menangani semua data. Oleh karena itu, data harus ditangani melalui pendekatan terdistribusi. Twitter menggunakan strategi "scatter and gather" di mana ia menyiapkan banyak server atau pusat data yang memungkinkan pengindeksan. Ketika Twitter menerima kueri (misalnya #geeksforgeeks), kueri tersebut dikirim ke semua server atau pusat data dan setiap shard Early Bird dijalankan. Semua Early Bird yang cocok dengan kueri mengembalikan hasilnya. Hasil-hasil ini kemudian dikembalikan, diurutkan, digabungkan, dan diulang peringkatnya. Peringkat dilakukan berdasarkan jumlah retweet, balasan, dan popularitas tweet.

Komentar

Postingan populer dari blog ini

ETS - PPL A

NAMA   : Ananda Hadi S NRP        : 5025201148 KELAS : PPL A 1. Apakah perbedaan model analysis dengan model desain? Model Analysis Model analisis fokus pada pemahaman dan penjelasan tentang bagaimana suatu sistem atau fenomena bekerja atau berinteraksi.  Tujuan utama dari model analisis adalah untuk mengidentifikasi masalah, memahami hubungan antara variabel, dan memberikan pemahaman yang mendalam tentang suatu situasi atau sistem.  Contoh dari model analisis termasuk model matematika, analisis data, atau teori yang digunakan untuk menjelaskan dan memprediksi perilaku sistem tertentu.  Model Desain Model desain berfokus pada pembuatan rencana atau representasi bagaimana suatu sistem atau objek akan dibuat atau dirancang.  Tujuan dari model desain adalah untuk menghasilkan solusi atau implementasi yang memenuhi kebutuhan atau tujuan tertentu berdasarkan hasil analisis.  Contoh model desain meliputi blueprints (denah), skema konstruksi, a...

EAS - PPL A

NAMA     : Ananda Hadi S NRP      : 5025201148 KELAS : PPL A EAS Perancangan Perangkat Lunak A, dengan pilihan desain Starbuck Deskripsikan model bisnis yang dipilih? Touchpoints (Titik Kontak) Google Map Smart Phone Google Map Smart Phone Car Store’s Architecture and Signage Printed Materials Starbucks Application and Credit Card Machine Starbucks Application Pick-up Window, Employee Employee, Pick-up Box, and Drinks User Journey Pengaturan tujuan:  Pelanggan mengatur tujuan ke Starbucks terdekat menggunakan Google Maps di smartphone. (Catatan:  Menyediakan informasi tentang bagaimana Starbucks beroperasi saat ini: hanya untuk dibawa pulang). Perjalanan ke starbucks:  Pelanggan berjalan atau mengemudi ke lokasi Starbucks. Melihat tanda dan logo:  Pelanggan melihat logo Starbucks dan tanda pada pintu masuk. Instruksi di pintu:  Pelanggan melihat instruksi di pintu mengenai proses pemesanan. Memilih pesan online:  Pelanggan...

APSI - TUGAS 8 - Data Modelling

  Apa itu Data Modelling? Data modeling adalah proses merancang struktur dan representasi data untuk memahami, menggambarkan, dan mengorganisasi informasi dalam suatu sistem atau organisasi. Hal ini dilakukan dengan menggunakan konsep, notasi, dan metode tertentu untuk menyusun model data yang mempresentasikan hubungan antara entitas, atribut, dan aturan yang berlaku dalam konteks yang relevan. Data modeling membantu dalam pemahaman dan dokumentasi yang lebih baik tentang data yang digunakan dan diproses dalam suatu sistem. Tujuannya adalah untuk menciptakan pemahaman yang konsisten dan jelas tentang struktur data, hubungan antara data, dan aturan bisnis yang mengatur penggunaan data. jenis jenis data modeling CDM (Conceptual Data Model): Model data konseptual (CDM) adalah representasi tingkat tinggi dari struktur data yang berfokus pada pemahaman konseptual dari domain atau sistem yang dimodelkan. CDM membantu untuk memahami informasi yang diperlukan dalam suatu organisasi atau si...