TUGAS 5 - PERANCANGAN PERANGKAT LUNAK (A)
- Dapatkan link
- X
- Aplikasi Lainnya
TUGAS 5 - PERANCANGAN PERANGKAT LUNAK (A)
Desain Tingkat Tinggi (High-Level Design) untuk Sistem Instagram
High-Level Design (HLD) adalah representasi umum dari suatu sistem atau aplikasi yang menjelaskan struktur dan arsitektur tanpa menyentuh detail implementasi. HLD biasanya disusun di awal pengembangan perangkat lunak sebelum Low-Level Design (LLD) dibuat. Tujuan HLD adalah memberikan gambaran sistem yang jelas kepada pemangku kepentingan seperti investor, manajer, dan arsitek, membantu pengambilan keputusan desain, memfasilitasi komunikasi antar anggota tim pengembangan, dan memperlancar proses pengembangan serta pemeliharaan perangkat lunak. Pada pertemuan kelima mata kuliah Perancangan Perangkat Lunak kali ini, kami diminta untuk membuat high-level design dari sistem perangkat lunak yang telah disediakan. Saya memilih untuk menganalisis HLD dari aplikasi Instagram berdasarkan video YouTube yang diberikan.
Deskripsi Instagram adalah aplikasi media sosial yang memungkinkan pengguna berbagi foto, video, dan cerita dengan pengikut mereka. Pengguna dapat mengikuti akun lain, memberikan like, komentar, dan mengirim pesan langsung. Instagram juga memiliki fitur pencarian yang memungkinkan pengguna menemukan konten berdasarkan kata kunci, tagar, atau akun. Fitur feed Instagram menampilkan postingan dari akun yang diikuti pengguna berdasarkan algoritma relevansi. Dengan ratusan juta pengguna aktif harian, sistem aplikasi harus memiliki tingkat ketersediaan dan skalabilitas tinggi untuk menangani jumlah pengguna yang besar. Performa aplikasi harus cepat dan responsif agar pengguna nyaman menggunakannya.
System Requirements Sistem Instagram harus memenuhi beberapa persyaratan berikut:
Functional Requirements
- Pengguna dapat memposting foto dan video.
- Pengguna dapat menghapus postingan yang telah diunggah.
- Pengguna dapat bereaksi pada postingan (like, komentar, dan berbagi).
- Pengguna dapat mengikuti dan membatalkan mengikuti akun.
- Feed Instagram menampilkan postingan dari akun yang diikuti pengguna, diurutkan berdasarkan relevansinya.
- Pengguna dapat mencari konten dengan mengetikkan kata kunci, tagar, atau akun pada bar pencarian.
- Pengguna dapat melihat cerita (stories) dari akun yang diikuti.
Non-Functional Requirements
- Sistem aplikasi harus memiliki tingkat ketersediaan yang tinggi.
- Sistem aplikasi harus memiliki skalabilitas tinggi untuk menangani jumlah pengguna yang besar.
- Performa aplikasi harus cepat dan responsif.
Estimasi Kapasitas
Estimasi Trafik
Misalkan Instagram memiliki 100 juta pengguna aktif harian. Jika rata-rata setiap pengguna memposting foto atau video tiga kali sehari, maka total trafik postingan yang dihasilkan adalah sebagai berikut:
Total trafik postingan=Jumlah pengguna×Jumlah postingan per pengguna =100 juta×3 postingan/hari =300 juta/hari
Selain memposting konten, Instagram juga merupakan aplikasi yang lebih banyak membaca daripada menulis (read-heavy), dengan rasio read-to-write 10:1. Maka, total trafik read yang dihasilkan adalah sebagai berikut:
Total trafik read=Total trafik postingan×Rasio read-to-write =300 juta×10 =3 miliar/hari
Estimasi Storage
Setiap foto atau video memiliki rata-rata ukuran 2 MB. Maka total storage yang dibutuhkan untuk menyimpan konten adalah sebagai berikut:
Total storage konten=Total trafik postingan×Ukuran rata-rata konten =300 juta×2 MB =600 juta MB/hari =600,000 GB/hari
Setiap postingan memiliki metadata tambahan, seperti id postingan, id pengguna, waktu posting, jumlah like, jumlah komentar, dan jumlah share. Jika metadata postingan membutuhkan 200 byte, maka total storage yang dibutuhkan untuk menyimpan metadata postingan adalah sebagai berikut:
Total storage metadata postingan=Total trafik postingan×Ukuran rata-rata metadata postingan =300 juta×200 byte =60,000 juta byte/hari =60,000 GB/hari
Kesimpulan
Total storage yang dibutuhkan untuk menyimpan konten dan metadata postingan adalah sebagai berikut:
Total storage=Total storage konten+Total storage metadata postingan =600,000 GB/hari+60,000 GB/hari =660,000 GB/hari
Dengan menggunakan arsitektur microservices, sistem aplikasi Instagram dapat dibangun untuk mendukung tingkat ketersediaan dan skalabilitas yang tinggi, memastikan performa yang cepat dan responsif bagi pengguna.
High-Level Design
Arsitektur Sistem Kita akan menggunakan arsitektur microservices untuk membangun sistem aplikasi Instagram. Arsitektur microservices membagi aplikasi menjadi beberapa layanan kecil yang berdiri sendiri dan berkomunikasi satu sama lain melalui antarmuka yang didefinisikan. Setiap layanan memiliki tanggung jawab terbatas dan dapat dikembangkan, dideploy, serta diukur secara independen.
Penjelasan Singkat:
- Arsitektur: Instagram menggunakan arsitektur layanan mikro untuk memudahkan 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, Pendaftaran, Profil, dan Beranda.
- Layanan Feed: Mengurus pembuatan dan penerbitan feed pengguna.
- Layanan Postingan: Menangani kasus penggunaan terkait postingan seperti mengunggah, menghapus, favorit, dll.
- Layanan Cerita (Stories): Implementasi fitur cerita dilakukan dengan mengunggah konten yang hanya tersedia selama 24 jam.
- Layanan Pencarian: Mengurus fungsionalitas pencarian, termasuk postingan Teratas dan terbaru.
- Layanan Media: Menangani unggahan media (gambar, video, file, dll.).
- Layanan Analisis: Digunakan untuk metrik dan analitik.
- Algoritma Pemeringkatan: Memeringkat setiap postingan berdasarkan relevansinya bagi pengguna tertentu.
- Layanan Notifikasi: Menggunakan antrian pesan atau perantara pesan seperti Apache Kafka untuk mengirim permintaan ke Firebase Cloud Messaging yang akan menangani pengiriman notifikasi push.
Perancangan Model Data untuk Sistem Instagram
Kesimpulan Instagram menangani ribuan postingan per detik sehingga membutuhkan pendekatan terdistribusi untuk menangani data. Strategi sebar dan kumpulkan dengan beberapa server atau pusat data memungkinkan pengindeksan. High-Level Design memberikan pandangan yang jelas dan holistik tentang arsitektur sistem, membantu tim pengembangan memahami struktur sistem, merencanakan solusi yang memenuhi kebutuhan fungsional dan non-fungsional, serta berkomunikasi efektif dengan pemangku kepentingan. Dengan pemahaman mendalam tentang aliran kerja sistem, perencanaan yang baik, dan identifikasi risiko awal, High-Level Design mendukung pengambilan keputusan yang tepat, keselarasan dengan kebutuhan bisnis, dan perencanaan skalabilitas yang efektif, memastikan pengembangan sistem berjalan efisien dan menghasilkan produk berkualitas tinggi.
High Level Design:
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar