Tugas PPL 4
Nama: Gabriella Natasya Br Ginting
NRP: 5025211081
Kelas: Perancangan Perangkat Lunak (A)
High Level Design (HLD) of Twitter
Arsitektur Sistem: HLD memberikan pandangan menyeluruh tentang arsitektur sistem, termasuk komponen utama dan bagaimana mereka saling berhubungan. Ini bisa mencakup diagram arsitektur yang menunjukkan modul, subsistem, dan interaksi di antara mereka.
Komponen dan Modul: HLD mengidentifikasi komponen utama dan modul dalam sistem, menjelaskan fungsionalitas masing-masing, dan bagaimana mereka saling berhubungan. Ini membantu dalam memahami struktur sistem dan membagi sistem menjadi bagian-bagian yang lebih mudah dikelola.
Antarmuka dan Interaksi: Desain ini mencakup deskripsi tentang antarmuka antara komponen-komponen sistem, termasuk protokol komunikasi, API, dan format data yang digunakan. Ini memastikan bahwa komponen-komponen dapat bekerja sama dengan lancar.
Pilihan Teknologi: HLD sering kali mencakup pilihan teknologi utama yang akan digunakan dalam pengembangan sistem, seperti bahasa pemrograman, kerangka kerja, basis data, dan alat-alat lainnya.
Desain Basis Data: HLD juga mencakup desain tingkat tinggi dari struktur basis data, termasuk tabel utama, relasi, dan skema data. Ini membantu dalam merancang bagaimana data akan disimpan, diakses, dan dikelola.
Keamanan dan Skalabilitas: Aspek keamanan dan skalabilitas sering kali dibahas dalam HLD, termasuk strategi untuk menangani masalah keamanan, backup data, dan bagaimana sistem akan ditingkatkan untuk menangani peningkatan beban kerja.
Diagram Desain: HLD biasanya menyertakan berbagai diagram seperti diagram kelas, diagram komponen, diagram deployment, dan diagram aliran data untuk menggambarkan struktur dan interaksi dalam sistem.
Tujuan HLD adalah untuk memberikan panduan yang jelas dan konsisten bagi tim pengembang dan pemangku kepentingan lainnya tentang bagaimana sistem akan dibangun, serta untuk memastikan bahwa semua orang memiliki pemahaman yang sama tentang struktur dan fungsionalitas sistem sebelum masuk ke tahap desain yang lebih rinci atau implementasi.
Pada aplikasi twitter, HLD yang telah dirancang adalah sebagai berikut:
Architecture
Untuk Twitter, digunakan arsitektur mikroservis karena ini akan memudahkan penskalaan horizontal dan memisahkan layanan. Setiap layanan akan memiliki kepemilikan atas model datanya sendiri. Akan dibagi sistem menjadi beberapa layanan inti.
User Services
Layanan ini menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna. Halaman Login, halaman Pendaftaran, halaman Profil, dan halaman Beranda akan ditangani dalam layanan Pengguna.
Newsfeed Service
Layanan ini akan menangani pembuatan dan publikasi newsfeed pengguna. Ketika berbicara tentang newsfeed, itu tampaknya mudah untuk diimplementasikan, tetapi ada banyak hal yang dapat membuat fitur ini berhasil atau gagal.
Arsitektur mikroservis memungkinkan setiap layanan memiliki tanggung jawab spesifik dan dapat dikembangkan serta diskalakan secara independen. Ini membantu dalam menjaga kinerja dan keandalan sistem secara keseluruhan.
- Generation: Pembuatan feed adalah proses yang intensif dan dapat memakan banyak waktu, terutama untuk pengguna yang mengikuti banyak orang. Untuk meningkatkan kinerja, feed dapat dibuat sebelumnya dan disimpan di cache, kemudian kita dapat memiliki mekanisme untuk memperbarui feed secara berkala dan menerapkan algoritma peringkat pada tweet baru.
- Publishing: Publikasi adalah langkah di mana data feed didorong sesuai dengan setiap pengguna spesifik. Ini bisa menjadi operasi yang cukup berat, karena seorang pengguna mungkin memiliki jutaan teman atau pengikut. Memiliki tiga pendekatan berbeda:
2. Push Model( or Fan-out on write): Setelah seorang pengguna membuat tweet, itu didorong ke semua feed pengikutnya.
3. Hybrid Model: Ini menggabungkan fitur menguntungkan dari kedua model di atas dan mencoba memberikan pendekatan yang seimbang di antara keduanya. Memungkinkan hanya pengguna dengan jumlah pengikut lebih sedikit untuk menggunakan model push.
- Tweet service: Layanan tweet menangani kasus penggunaan terkait tweet seperti memposting tweet, favorit, dll.
- Retweet: Retweet adalah salah satu persyaratan tambahan. Untuk mengimplementasikan fitur ini, dapat membuat tweet baru dengan ID pengguna yang me-retweet tweet asli dan kemudian memodifikasi enum tipe dan properti konten dari tweet baru untuk menghubungkannya dengan tweet asli.
- Search Service: Layanan ini bertanggung jawab untuk menangani fungsionalitas terkait pencarian. Dalam layanan pencarian, mendapatkan postingan Teratas, postingan terbaru, dll. Hal-hal ini didapatkan karena adanya peringkat.
- Media Service: Layanan ini akan menangani unggahan media (gambar, video, file, dll.).
- Analytics Service: Layanan ini akan digunakan untuk kasus penggunaan metrik dan analitik.
- Ranking Algorithm: Diperlukan algoritma peringkat untuk memberi peringkat pada setiap tweet sesuai dengan relevansinya bagi setiap pengguna spesifik. Saat ini, algoritma jauh lebih kompleks dan peringkat dilakukan menggunakan model pembelajaran mesin yang dapat mempertimbangkan ribuan faktor.
- Notifications Service: Notifikasi push adalah bagian integral dari platform media sosial mana pun. Dapat digunakan antrean pesan atau broker pesan seperti Apache Kafka dengan layanan notifikasi untuk mengirimkan permintaan ke Firebase Cloud Messaging (FCM) atau Apple Push Notification Service (APNS) yang akan menangani pengiriman notifikasi push ke perangkat pengguna.
Komentar
Posting Komentar