Tugas PPL 5

Nama: Gabriella Natasya Br Ginting

NRP: 5025211081

Kelas: Perancangan Perangkat Lunak (A)


High Level Design and Low Level Design

HLD (High-Level Design) dan LLD (Low-Level Design) adalah dua tahap penting dalam proses desain sistem perangkat lunak yang berbeda dalam tingkat detail dan fokusnya:

High-Level Design (HLD)

  • Definisi: HLD memberikan gambaran umum tentang arsitektur sistem dan bagaimana berbagai komponen utama berinteraksi satu sama lain.
  • Fokus: Menyediakan panduan tentang struktur sistem secara keseluruhan, termasuk pembagian sistem menjadi modul-modul besar dan interaksi antar modul.
  • Isi: Diagram arsitektur, diagram komponen, diagram deployment, dan deskripsi umum dari subsistem dan antarmuka.
  • Tujuan: Menyediakan pemahaman menyeluruh tentang bagaimana sistem akan dibangun, agar tim pengembang dan pemangku kepentingan memiliki gambaran umum yang jelas.

Low-Level Design (LLD)

  • Definisi: LLD memberikan rincian mendalam tentang desain setiap komponen dan bagaimana mereka diimplementasikan secara teknis.
  • Fokus: Menyediakan detail teknis yang spesifik tentang cara kerja komponen-komponen individu, termasuk algoritma, struktur data, dan alur logika.
  • Isi: Diagram kelas, diagram aliran data, diagram urutan, detail algoritma, dan spesifikasi API.
  • Tujuan: Memberikan panduan yang rinci kepada pengembang untuk implementasi teknis, memastikan bahwa semua komponen dirancang dengan cara yang konsisten dan sesuai dengan spesifikasi HLD.

Di dunia digital saat ini, permintaan untuk layanan streaming musik premium seperti Spotify berada pada titik tertinggi. Memahami Desain Sistem di balik Spotify Premium sangat penting bagi insinyur perangkat lunak yang ingin membangun platform streaming musik yang kuat, skalabel, dan dapat diandalkan. Artikel ini menjelajahi arsitektur Spotify Premium, menawarkan wawasan tentang cara membuat sistem canggih yang mampu menyampaikan konten audio berkualitas tinggi dengan mulus sambil memastikan skalabilitas, daya tahan, dan pengalaman pengguna yang optimal.

HLD Spotify Premium

Component
  • Spotify Web Server: Anggap saja sebagai penjaga gerbang, memastikan hanya pengguna resmi yang mengakses fitur Spotify. Server ini menangani tugas-tugas penting seperti otentikasi pengguna, pembatasan kecepatan, dan validasi, menjaga platform tetap aman dan berjalan lancar.
  • Song Search Service: Layanan ini seperti wizard untuk penemuan musik. Ini dengan cepat mengambil hasil pencarian berdasarkan nama lagu, artis, atau bahkan lirik, berkat alat pengindeksan canggih seperti Elasticsearch. Ini membuat pencarian lagu favorit Anda menjadi mudah.
  • Song Metadata Service: Bertindak sebagai jembatan menuju harta karun data lagu, layanan ini menyediakan akses mudah ke informasi lagu yang disimpan di MetadataDB. Ini seperti pustakawan yang membantu, mengambil detail tentang lagu, album, dan artis kapan pun dibutuhkan.
  • Layanan Streaming Lagu: Pernah bertanya-tanya bagaimana Spotify menghadirkan lagu favorit Anda tanpa henti? Itu semua berkat layanan ini, yang mengambil file audio dari solusi penyimpanan seperti ObjectStore dan CDN. Hal ini memastikan pemutaran lancar, di mana pun berada.
Design Considerations
  • Penyimpanan Data Metadata
    1. Relational Database: Anggap saja seperti mengatur koleksi musik dengan rapi di rak. Basis data relasional menjaga metadata lagu tetap terstruktur dan mudah dikelola, sehingga memudahkan menemukan apa yang dicari.
    2. Database NoSQL : Ini seperti memiliki sistem penyimpanan fleksibel yang dapat beradaptasi dengan kebutuhan. Meskipun mungkin menduplikasi beberapa informasi, ini memastikan akses cepat ke data lagu, membuat penjelajahan menjadi mudah.
  • Object Store: Menyimpan file audio di layanan seperti Amazon S3 seperti menyimpan perpustakaan musik di tempat yang aman dan mudah diakses. Dengan berbagai tingkat penyimpanan yang tersedia, dapat dioptimalkan biaya sekaligus memastikan lagu selalu siap diputar.
  • Song Streaming
    1. HTTP Range Requests: Bayangkan streaming lagu favorit didalam beberapa bagian, jadi meskipun internet lambat, tetap dapat menikmati pemutaran yang lancar. Namun, mungkin ada jeda sesekali untuk mengejar ketinggalan.
    2. Adaptive Bitrate: Ini seperti memiliki pemutar musik pintar yang menyesuaikan kualitas berdasarkan kecepatan internet. Ini memastikan mendengarkan tanpa gangguan, apa pun koneksinya.
    3. Elasticsearch Failover: Meskipun Elasticsearch membantu mempercepat pencarian, penting untuk memiliki rencana cadangan. Jika down, Spotify dapat mengandalkan MetadataDB untuk membangun kembali cache dan menjaga musik tetap mengalir.
LLD Spotify Premium

Java
Berfungsi sebagai bahasa pengembangan utama, Java berperan penting dalam menyusun basis kode Spotify yang rumit, menawarkan keunggulan seperti alat yang komprehensif, kerangka kerja yang kuat, dan paradigma berorientasi objek.

NGINX
Bertindak sebagai penyeimbang beban elastis, gateway API, dan klien layanan, NGINX mengoptimalkan operasi server, meningkatkan kecepatan, keamanan, dan manajemen beban. Sifat sumber terbukanya memungkinkan penyesuaian ekstensif tanpa masalah lisensi.

Hystrix
Pustaka pemutus sirkuit berbasis Java ini mendukung toleransi kesalahan dalam arsitektur layanan mikro Spotify, meminimalkan kegagalan, dan meningkatkan keandalan.

PostgreSQL
Berfungsi sebagai database SQL untuk menyimpan data penagihan dan langganan pengguna yang penting, PostgreSQL menyediakan solusi RDBMS sumber terbuka yang kuat.

Bootstrap
Digunakan sebagai kerangka CSS untuk pengembangan halaman web frontend, Bootstrap menyederhanakan desain UI dengan komponen yang telah ditata sebelumnya, memastikan antarmuka pengguna yang ramping dan responsif.

Amazon S3
Memfasilitasi penyimpanan file statis untuk lagu Spotify berlisensi, Amazon S3 menawarkan ketersediaan tinggi dan toleransi kesalahan, penting untuk menampung perpustakaan musik yang luas.

Amazon CloudFront
Sebagai penyedia CDN, CloudFront melengkapi S3, memastikan aksesibilitas global atas konten yang disimpan dengan mendistribusikannya secara efisien ke berbagai wilayah.

Kafka
Mendukung pipeline streaming event-driven, Kafka memfasilitasi pengaturan rute mikroservis dengan cepat berkat throughput yang tinggi dan dukungan SDK Java-nya.

Cassandra
Digunakan sebagai database NoSQL terdistribusi, Cassandra secara efisien mengelola data pengguna dengan skalabilitas dan arsitektur toleransi kesalahannya.

Hadoop
Digunakan untuk penyimpanan file terdistribusi dan komputasi batch data historis, Hadoop memungkinkan Spotify menganalisis kumpulan data besar secara efektif.

Google BigQuery
Gudang data berbasis cloud ini memberdayakan Spotify dengan kemampuan analitik tingkat lanjut, membantu pengambilan keputusan berdasarkan data dan identifikasi tren.

Apache Storm
Menawarkan komputasi real-time yang terdistribusi, Storm melengkapi Hadoop dengan menyediakan analitik yang dioptimalkan untuk hasil mesin pencari dan rekomendasi.

Google Cloud Bigtable
Berfungsi sebagai database NoSQL dengan ketersediaan tinggi, Bigtable menyimpan metadata penting, berintegrasi secara lancar dengan BigQuery untuk meningkatkan kemampuan analisis.


Komentar

Postingan populer dari blog ini

ETS

Tugas PPL 2

Tugas PPL 1