Tugas 4 : High Level Design
High Level Design
Tugas yang diberikan pada mata kuliah Perancangan Perangkat Lunak (A), yaitu terkait High Level Design. Berikut merupakan dokumentasinya :
Gambaran Umum
Tujuan utama Spotify adalah menyajikan musik dengan cepat dan efisien, seimbang antara kecepatan dan efisiensi biaya. Untuk mencapai hal ini, mereka menggunakan sistem hybrid yang menggabungkan model peer-to-peer (P2P) dan client-server, bersama dengan mekanisme caching yang canggih dan machine learning untuk rekomendasi.
High-Level Design Spotify
Persyaratan (Requirements)
Kecepatan dan Efisiensi:
- Pemutaran musik yang cepat dengan latensi rendah.
- Penggunaan sumber daya yang efisien untuk mengurangi biaya operasional.
Skalabilitas:
- Sistem harus mampu menangani jutaan pengguna secara bersamaan.
- Mudah diperluas sesuai pertumbuhan pengguna.
Reliabilitas:
- Layanan yang handal dengan waktu henti minimal.
- Fallback ke server jika jaringan P2P gagal.
Pengalaman Pengguna:
- Pemutaran musik yang lancar tanpa jeda.
- Rekomendasi musik yang akurat dan dipersonalisasi.
Keamanan:
- Perlindungan data pengguna dan hak cipta musik.
Estimasi Kapasitas
Pengguna:
- Awalnya dirancang untuk mendukung hingga 1 juta pengguna aktif harian.
- Dapat diskalakan hingga 10 juta pengguna aktif harian.
Data:
- Penyimpanan untuk lebih dari 30 juta lagu.
- Setiap lagu rata-rata berukuran 5 MB.
Server:
- Awalnya memerlukan sekitar 100 server untuk mendukung basis pengguna awal.
- Dapat diskalakan dengan menambahkan lebih banyak server sesuai kebutuhan.
Jaringan P2P:
- Mendukung transfer data antar pengguna dengan latensi rata-rata 265 milidetik.
High Level Design
Sistem Hybrid:
- Menggabungkan model Peer-to-Peer (P2P) dan Client-Server untuk memaksimalkan efisiensi dan kecepatan.
Caching dan Pre-fetching:
- Caching lokal untuk lagu yang sering diputar.
- Pre-fetching lagu berikutnya untuk mengurangi jeda antara lagu.
Rekomendasi Berbasis Machine Learning:
- Algoritma rekomendasi yang mempelajari preferensi pengguna untuk menyediakan saran musik yang akurat.
System Architecture
Komponen Utama:
- Client Devices: Aplikasi Spotify di berbagai platform (desktop, mobile, web).
- Peer-to-Peer Network: Sistem yang menghubungkan perangkat pengguna untuk berbagi file musik.
- Central Servers: Server yang menyediakan cadangan ketika P2P tidak mencukupi.
Arsitektur Jaringan:
- Load Balancer: Mendistibusikan lalu lintas jaringan secara efisien.
- Caching Servers: Menyimpan lagu yang sering diputar untuk akses cepat.
- Database Servers: Menyimpan metadata lagu dan informasi pengguna.
Workflow:
- Request Handling: Permintaan lagu dikirim melalui aplikasi pengguna.
- P2P Lookup: Sistem mencari lagu di jaringan P2P.
- Fallback Mechanism: Jika lagu tidak ditemukan di P2P, permintaan dialihkan ke server pusat.
- Pre-fetching: Lagu berikutnya mulai diunduh 30 detik sebelum lagu saat ini berakhir.
Data Model Design
Tabel Pengguna (Users):
user_id
: Primary Keyusername
email
password_hash
preferences
: Data preferensi musik pengguna
Tabel Lagu (Songs):
song_id
: Primary Keytitle
artist_id
album_id
genre
duration
file_location
: Lokasi file musik di server atau P2P
Tabel Artis (Artists):
artist_id
: Primary Keyname
bio
genre
Tabel Album (Albums):
album_id
: Primary Keytitle
release_date
artist_id
Tabel Pemutaran (Playback):
playback_id
: Primary Keyuser_id
song_id
timestamp
source
: Menunjukkan apakah lagu diputar dari cache, P2P, atau server
Dengan desain ini, Spotify mampu memberikan layanan streaming musik yang cepat, andal, dan efisien, sambil menjaga biaya operasional tetap rendah dan pengalaman pengguna yang memuaskan.
Komentar
Posting Komentar