Perancangan Perangkat Lunak - Tugas Pertemuan 5
Tugas Pertemuan 4
Al-Ferro Yudisthira Putra
5025211176
Mata Kuliah PPL (A)
Apa itu High Level Design?
High-level design (desain tingkat tinggi) adalah tahap awal dalam proses merancang suatu sistem. Pada tahap ini, perhatian utama diberikan pada identifikasi dan pemodelan komponen-komponen kunci dari sistem serta hubungan dan interaksi antara komponen-komponen tersebut. Fokusnya adalah memberikan gambaran keseluruhan tentang bagaimana sistem akan beroperasi, tanpa terlalu terperinci pada implementasi teknis dari setiap komponen. Beberapa aspek yang dipertimbangkan dalam high-level design meliputi identifikasi komponen utama, penentuan interaksi antarkomponen, skalabilitas, keandalan, keamanan, dan performa sistem. High-level design membentuk kerangka kerja yang akan menjadi dasar untuk tahap selanjutnya dalam proses desain, yaitu detailed design, di mana detail teknis dari setiap komponen dan interaksi akan diperinci lebih lanjut. Dengan demikian, high-level design memberikan landasan yang kuat bagi pengembangan sistem secara menyeluruh.
Bagaimana Twitter Mengimplementasikan High Level Design?
Desain tingkat tinggi untuk sistem Twitter melibatkan penjelasan mengenai arsitektur keseluruhan dari platform tersebut. Ini mencakup mengidentifikasi dan memodelkan komponen-komponen utama dari sistem beserta interaksinya. Fokus utamanya adalah pada aspek-aspek besar seperti komponen-komponen kunci, interaksi antara komponen, skalabilitas, keandalan, keamanan, dan performa. Desain tingkat tinggi berfungsi sebagai dasar untuk tahap berikutnya dalam proses desain sistem, yaitu Desain Detail, di mana detail teknis dari setiap komponen dan interaksinya dijelaskan lebih lanjut. Ini memungkinkan tim untuk berkonsentrasi pada aspek teknis dan implementasi berdasarkan arsitektur yang ditetapkan pada tahap Desain Tingkat Tinggi.
Dalam merancang sistem Twitter secara tingkat tinggi, perhatian diberikan pada struktur umum dari platform tersebut. Ini melibatkan penentuan arsitektur keseluruhan sistem, termasuk bagaimana pengguna berinteraksi dengan feed, sistem manajemen basis data untuk menyimpan dan mengakses tweet, serta bagaimana data pengguna diproses dan ditampilkan secara real-time. Selain itu, ada juga pertimbangan tentang skalabilitas sistem untuk menangani jumlah pengguna yang besar, kecepatan akses data, dan antarmuka pengguna yang ramah. Pengaturan keandalan, ketersediaan, dan keamanan sistem juga diperhitungkan. Desain ini juga akan mempertimbangkan keseimbangan antara kecepatan, skala, dan keamanan dalam konteks batasan waktu yang ketat, seperti yang sering terjadi dalam sesi wawancara teknis.
Persyaratan Perancangan Sistem Twitter:
a. Persyaratan Fungsional:
- Pengguna harus bisa posting tweet baru dalam berbagai format, seperti teks, gambar, atau video.
- Kemampuan untuk mengikuti pengguna lain di Twitter.
- Adanya fitur umpan berita yang menampilkan tweet dari pengguna yang diikuti.
- Pengguna harus bisa mencari tweet tertentu sesuai keinginan mereka.
b. Persyaratan Non Fungsional:
- Sistem harus selalu tersedia, dan waktu tunggu minimal agar pengguna bisa masuk dan mengakses platform dengan cepat.
- Sistem harus memiliki performa yang baik dan efisien untuk menangani banyaknya pengguna dengan lancar.
c. Persyaratan yang Diperpanjang:
- Pengguna akan memiliki akses ke berbagai metrik dan analitik untuk memantau interaksi dan kinerja akun mereka.
- Fungsi retweet harus tersedia agar pengguna bisa menyebarkan tweet dari pengguna lain.
- Fitur tweet favorit harus ada, sehingga pengguna bisa menyimpan tweet yang menarik bagi mereka.
Traffic Estimation
Mari kita bayangkan ada sekitar 1 miliar pengguna yang menggunakan platform tersebut, di antaranya sekitar 200 juta pengguna aktif setiap hari (DAU). Jika setiap pengguna rata-rata membuat 5 tweet setiap hari, itu akan menghasilkan sekitar 1 miliar tweet setiap harinya.
200.000.000 x 5 = 1.000.000.000/hari
Kita bisa memperkirakan bahwa sekitar 10 persen dari semua tweet berisi media seperti gambar atau video yang dibagikan oleh pengguna. Dengan demikian, kita dapat menghitung bahwa sekitar 100 juta file media tambahan perlu disimpan untuk menangani konten multimedia dalam tweet tersebut.
10% x 1.000.000.000 = 100.000.000/hari
Permintaan sistem per detik (RPS) adalah :
1.000.000.000 / (24 x 3600) = 12.000 permintaan /detik
Storage Estimation
Dengan estimasi bahwa setiap pesan memiliki ukuran sekitar 100 byte, kita memproyeksikan bahwa setiap hari,
100.000.000.000 x 100 bytes = 100 Gigabytes/hari
Sebagian besar dari tweet harian, sekitar 10 persennya, berisi file media sesuai kebutuhan. Rata-rata, setiap file diperkirakan memiliki ukuran sekitar 50 KB, yang berarti bahwa,
100.000.000 x 50 Kilobytes = 5 Terrabytes/hari
Maka, dalam 10 tahun akan diperlukan,
(5 Terrabytes + 0.1 Terrabytes) x 365 x 10 = 19 Petabytes
Bandwidth Estimation
Karena sistem harus menangani volume data sebesar 5,1 TB setiap hari, maka diperlukan bandwidth minimum sekitar 60 MB per detik.
5.1 Terrabytes / (24 x 3600) = 60 Megabytes/detik
Use Case Design untuk Sistem Design Twitter
Arsitektur: Twitter menggunakan arsitektur layanan mikro untuk memungkinkan penskalaan horizontal dan pemisahan layanan. Setiap layanan memiliki kepemilikan atas model datanya sendiri.
Layanan Pengguna: Menangani masalah terkait pengguna seperti otentikasi dan informasi pengguna. Termasuk Halaman Login, Halaman Pendaftaran, Halaman Profil, dan Halaman Beranda.
Layanan Umpan Berita: Mengelola pembuatan dan penyebaran umpan berita pengguna secara detail. Meskipun tampak sederhana, namun ada banyak aspek yang perlu dipertimbangkan.
Layanan Tweet: Mengelola kasus penggunaan terkait tweet seperti memposting tweet, menandai favorit, dan sebagainya.
Retweet: Salah satu persyaratan tambahan. Dapat diimplementasikan dengan membuat tweet baru dengan user id pengguna yang me-retweet tweet asli.
Layanan Pencarian: Menangani fungsi pencarian seperti mendapatkan postingan Teratas, Terbaru, dan sebagainya berdasarkan peringkat.
Layanan Media: Mengelola unggahan media seperti gambar, video, dan file.
Layanan Analisis: Digunakan untuk kasus penggunaan metrik dan analitik.
Algoritma Pemeringkatan: Dibutuhkan untuk memberi peringkat tweet berdasarkan relevansinya. Faktor-faktor seperti Affinity, Weight, dan Decay digunakan dalam algoritma.
Layanan Notifikasi: Bagian penting dari setiap platform media sosial, dapat didukung menggunakan antrian pesan atau perantara pesan seperti Apache Kafka dan Firebase Cloud Messaging untuk pengiriman notifikasi push ke perangkat pengguna.
Comments
Post a Comment