TUGAS 4 PPL - High Level Design
Nama : Muhammad Hafidh Rosyadi
NRP : 5025211013
Kelas : PPL A
Pada pertemuan ini kami diminta untuk mengidentifikasi dan menganalisis High Level Design dari sistem aplikasi Twitter. High-Level Design (HLD) adalah dokumen dalam rekayasa perangkat lunak yang memberikan gambaran umum tentang arsitektur sistem dan desain komponen utamanya. Tujuannya adalah untuk menyediakan pemahaman umum tentang struktur sistem dan interaksi antara komponen-komponen utama.
Requirements dari aplikasi twitter
Functional Requirement:
- Pengguna harus dapat memposting tweet baru (bisa berupa teks, gambar, video, dll).
- Pengguna harus dapat mengikuti pengguna lain.
- Pengguna harus memiliki fitur beranda berita yang terdiri dari tweet dari orang yang diikuti oleh pengguna.
- Pengguna harus dapat mencari tweet.
Non Functional Requirements:
- Ketersediaan tinggi dengan latensi minimal.
- Sistem harus dapat scalable dan efisien.
Extended Requirements:
- Metrik dan analitik harus tersedia untuk melacak kinerja dan penggunaan sistem.
- Fungsionalitas retweet
- Fungsionalitas menyukai tweet
Twitter System Design
Arsitektur:
Layanan Pengguna:
Layanan Beranda Berita:
Layanan Tweet:
Retweet:
Layanan Pencarian:
Layanan Media:
Layanan Analitik:
Algoritma Peringkat:
Contoh: Facebook pernah menggunakan algoritma EdgeRank. Di sini, peringkat setiap item feed dijelaskan oleh:
- Rank = Affinity * Weight * Decay
Layanan Pencarian:
Elasticsearch adalah mesin pencarian dan analitik yang terdistribusi, gratis dan terbuka untuk semua jenis data, termasuk teks, numerik, geospasial, terstruktur, dan tidak terstruktur. Ini dibangun di atas Apache Lucene.
Topik Trending:
Algoritma sistem juga dapat diterapkan pada topik trending untuk memberikan mereka lebih banyak bobot dan mempersonalisasikannya untuk pengguna.
Layanan Notifikasi:
Microservices Used for Twitter System Design
9.1 Partisi Data:
Untuk memperluas basis data, diperlukan partisi data. Partisi horizontal (Sharding) adalah langkah awal yang baik. Skema partisi yang dapat digunakan meliputi:
- Partisi Berbasis Hash
- Partisi Berbasis Daftar
- Partisi Berbasis Rentang
- Partisi Komposit
Pendekatan ini masih dapat menyebabkan distribusi data dan beban yang tidak merata, yang dapat diatasi dengan menggunakan Consistent Hashing.
9.2 Teman Bersama:
Untuk teman bersama, grafik sosial dapat dibangun untuk setiap pengguna. Setiap node dalam grafik akan mewakili pengguna, dan edge terarah akan mewakili pengikut dan yang diikuti. Pengikut seorang pengguna dapat ditelusuri untuk menemukan dan menyarankan teman bersama. Ini memerlukan basis data grafik seperti Neo4j dan ArangoDB. Untuk meningkatkan akurasi saran, model rekomendasi yang mengintegrasikan pembelajaran mesin dapat digunakan.
9.3 Metrik dan Analitik:
Merekam analitik dan metrik adalah salah satu persyaratan tambahan. Dengan menggunakan Apache Kafka untuk menerbitkan berbagai jenis peristiwa, peristiwa ini dapat diproses dan analitik dapat dijalankan pada data menggunakan Apache Spark, sebuah mesin analitik berskala besar sumber terbuka.
9.4 Caching:
Dalam aplikasi media sosial, penting untuk berhati-hati menggunakan cache karena pengguna mengharapkan data terbaru. Untuk mencegah lonjakan penggunaan sumber daya, cache dapat digunakan untuk 20% tweet teratas. Untuk meningkatkan efisiensi, pagination dapat ditambahkan ke API sistem. Keputusan ini bermanfaat bagi pengguna dengan bandwidth jaringan terbatas karena mereka tidak perlu mengambil pesan lama kecuali diminta.
9.5 Akses dan Penyimpanan Media:
Sebagian besar ruang penyimpanan akan digunakan untuk menyimpan file media seperti gambar, video, atau file lainnya. Layanan media akan menangani akses dan penyimpanan file media pengguna. Untuk penyimpanan skala besar, penyimpanan objek dapat digunakan, yang memecah file data menjadi objek-objek dan menyimpannya dalam satu repositori yang dapat tersebar di beberapa sistem jaringan. Penyimpanan file terdistribusi seperti HDFS atau GlusterFS juga dapat digunakan.
Komentar
Posting Komentar