Tugas 9 Perancangan Perangkat Lunak (A)

Nama : Tsaqif Deniar B.

NRP : 5025211151

Kelas : PPL (A)

Tugas 9

Desain Sistem Aplikasi Instagram

Instagram adalah layanan jejaring sosial berbagi foto dan video Amerika yang dimiliki oleh Meta Platforms. Hal ini memungkinkan pengguna untuk mengunggah media yang dapat diedit dengan filter, diatur berdasarkan hashtag, dan dikaitkan dengan lokasi melalui penandaan geografis. Postingan dapat dibagikan secara publik atau dengan pengikut yang telah disetujui sebelumnya.

Kebutuhan

Kebutuhan Fungsional

  • Posting foto dan video: Pengguna dapat memposting foto dan video di Instagram.

  • Ikuti dan berhenti mengikuti pengguna: Pengguna dapat mengikuti dan berhenti mengikuti pengguna lain di Instagram.

  • Menyukai atau tidak menyukai postingan: Pengguna dapat menyukai atau tidak menyukai postingan dari akun yang mereka ikuti.

  • Cari foto dan video: Pengguna dapat mencari foto dan video berdasarkan keterangan dan lokasi.

  • Hasilkan umpan berita: Pengguna dapat melihat umpan berita yang terdiri dari foto dan video (dalam urutan kronologis) dari semua pengguna yang mereka ikuti.

Kebutuhan Non-Fungsional

  • Skalabilitas: Sistem harus dapat diskalakan untuk menangani jutaan pengguna dalam hal sumber daya komputasi dan penyimpanan.

  • Latensi: Latensi untuk menghasilkan umpan berita harus rendah.

  • Ketersediaan: Sistem harus sangat tersedia.

  • Daya Tahan: Konten apa pun yang diunggah (foto dan video) tidak boleh hilang.

  • Konsistensi: Kita bisa sedikit berkompromi pada konsistensi. Dapat diterima jika konten (foto atau video) memerlukan waktu untuk ditampilkan di feed pengikut yang berada di wilayah yang jauh.

  • Keandalan: Sistem harus mampu mentolerir kegagalan perangkat keras dan perangkat lunak.

Estimasi Kapasitas

Instagram memiliki 1 miliar pengguna, dengan 500 juta pengguna aktif harian. Asumsikan 60 juta foto dan 35 juta video dibagikan di Instagram setiap hari. Kami dapat menganggap 3 MB sebagai ukuran maksimum setiap foto dan 150 MB sebagai ukuran maksimum setiap video yang diunggah di Instagram. Rata-rata, setiap pengguna mengirimkan 20 permintaan (jenis apa pun) per hari ke layanan kami.

Penyimpanan Per Hari

  • Foto: 60 juta foto/hari * 3 MB = 180 TeraBytes / hari

  • Video: 35 juta video/hari * 150 MB = 5250 TB/hari

  • Total ukuran konten: 180 + 5250 = 5430 TB/hari

  • Total ruang yang dibutuhkan untuk setahun: 5430 TB/hari * 365 (hari dalam setahun) = 1981950 TB = 1981,95 PetaBytes

Estimasi Bandwidth

  • Bandwidth per detik: 5430 TB/(24 * 60* 60) = 5430 TB/86400 detik ~= 62,84 GB/dtk ~= 502,8 Gbps

  • Bandwidth masuk: ~= 502,8 Gbps

  • Rasio pembaca dan penulis: 100:1.

  • Bandwidth keluar yang diperlukan: ~= 100 * 502,8 Gbps ~= 50,28 Tbps

Use Case Diagram

Low-Level Design (LLD)


Layanan Pengguna

  • Menangani: Pendaftaran pengguna, login, otentikasi, dan manajemen profil.

  • Menyimpan: Data pengguna seperti nama pengguna, email, bio, gambar profil, dll.

  • Terintegrasi: Dengan penyedia otentikasi sosial (misalnya, Facebook, Google).

Layanan Pos

  • Menangani: Pengunggahan, pengeditan, dan penghapusan foto dan video.

  • Menyimpan: Metadata postingan seperti keterangan, tagar, lokasi, stempel waktu, dll.

  • Memproses: Media yang diunggah untuk mengubah ukuran, memfilter, dan membuat thumbnail.

  • Mengelola: Transcoding foto dan video untuk perangkat dan resolusi berbeda.

Layanan Pakan

  • Menghasilkan: Umpan berita yang dipersonalisasi untuk setiap pengguna berdasarkan pengikut, suka, aktivitas, dan keterlibatan mereka.

  • Memanfaatkan: Sistem terdistribusi seperti Apache Kafka atau RabbitMQ untuk pembaruan dan pemberitahuan waktu nyata.

  • Memanfaatkan: Lapisan cache seperti Redis untuk pengambilan feed cepat dan mengurangi beban database.

Layanan Penyimpanan

  • Menyimpan: Foto dan video yang diunggah secara efisien dan andal.

  • Memanfaatkan: Solusi penyimpanan objek yang dapat diskalakan seperti Amazon S3, Google Cloud Storage, atau Azure Blob Storage.

  • Menerapkan: Mekanisme redundansi dan pemulihan bencana untuk perlindungan data.

Layanan Pencarian

  • Memungkinkan: Pencarian pengguna, hashtag, dan lokasi.

  • Mengindeks: Pengguna, postingan, dan hashtag berdasarkan parameter yang relevan.

  • Menggunakan: Algoritma pengindeksan dan pencarian yang efisien untuk hasil yang cepat dan akurat.

Layanan Komentar

  • Menangani: Penambahan, pengeditan, dan penghapusan komentar pada postingan.

  • Melacak: Rangkaian komentar dan hubungan orang tua-anak.

  • Memberi tahu: Pengguna tentang komentar baru pada postingan mereka sendiri atau komentar yang mereka ikuti.

Layanan Pemberitahuan

  • Memberi tahu: Pengguna tentang peristiwa yang relevan seperti suka, komentar, sebutan, dan mengikuti.

  • Mengirimkan: Notifikasi ke perangkat seluler melalui platform seperti Firebase Cloud Messaging atau Amazon SNS.

  • Memanfaatkan: Sistem antrian untuk pengiriman notifikasi asinkron.

Layanan Analisis

  • Melacak: Keterlibatan pengguna, kinerja postingan, dan penggunaan platform secara keseluruhan.

  • Mengumpulkan: Data tentang tampilan, suka, komentar, berbagi, dan klik.

  • Memberikan: Wawasan untuk meningkatkan pengalaman pengguna, mengoptimalkan rekomendasi konten, dan menargetkan iklan.

High-Level Design (HLD)

Sistem kami harus memungkinkan kami mengunggah, melihat, dan mencari gambar dan video pada tingkat tinggi. Untuk mengunggah gambar dan video, kita perlu menyimpannya, dan saat mengambilnya, kita perlu mengambil data dari penyimpanan. Selain itu, pengguna juga harus diperbolehkan untuk mengikuti satu sama lain.


Komponen

  • Klien: Aplikasi seluler, aplikasi web, dan API yang menyediakan antarmuka bagi pengguna untuk berinteraksi dengan sistem.

  • Otentikasi & Otorisasi: Menangani login pengguna, registrasi, dan kontrol akses.

  • Manajemen Konten: Mengelola konten buatan pengguna seperti foto, video, streaming langsung, cerita, dan pesan.

  • Pembuatan Umpan: Mempersonalisasi umpan berita untuk setiap pengguna berdasarkan pengikut, aktivitas, dan keterlibatan mereka.

  • Grafik Sosial: Melacak hubungan antar pengguna (pengikut, pengikut, teman).

  • Penemuan & Pencarian: Memungkinkan pencarian pengguna, hashtag, lokasi, dan konten.

  • Notifikasi: Memberi tahu pengguna tentang peristiwa relevan seperti suka, komentar, sebutan, dan mengikuti.

  • Analisis & Pelaporan: Melacak keterlibatan pengguna, kinerja konten, dan penggunaan platform secara keseluruhan.

Interaksi

  • Pengguna membuat konten:

    • Klien mengunggah foto/video.

    • Manajemen Konten menyimpan media dan metadata.

    • Pembuatan Umpan memperbarui umpan pengguna dan pengikut yang relevan.

    • Pemberitahuan menginformasikan pengguna yang tertarik.

  • Interaksi pengguna dengan konten:

    • Klien mengirimkan tindakan suka/komentar/berbagi.

    • Manajemen Konten dan Grafik Sosial memperbarui data yang relevan.

    • Pembuatan Feed berpotensi merombak feed berdasarkan interaksi baru.

    • Pemberitahuan menginformasikan pengguna yang tertarik.

  • Pengguna menemukan konten baru:

    • Klien menggunakan fungsi pencarian.

    • Discovery & Search mengidentifikasi konten yang relevan.

    • Klien menampilkan hasil pencarian.

  • Pengguna mengelola koneksi:

    • Klien mengirimkan permintaan mengikuti/berhenti mengikuti.

    • Grafik Sosial memperbarui koneksi.

    • Pembuatan Umpan menyesuaikan berdasarkan perubahan hubungan.

  • Pengguna memantau aktivitas:

    • Klien memeriksa umpan notifikasi.

    • Pemberitahuan memberikan pembaruan tentang peristiwa yang relevan.

Pertimbangan Desain Utama

  • Skalabilitas: Sistem harus menangani jutaan pengguna dan volume data yang sangat besar.

  • Kinerja: Memberikan waktu respons yang cepat untuk interaksi pengguna dan pengiriman konten.

  • Keandalan: Pastikan ketersediaan tinggi dan cegah kehilangan data.

  • Keamanan: Melindungi data dan privasi pengguna.

  • Keterlibatan: Fitur desain yang mendorong interaksi pengguna dan pembuatan konten.

Referensi : 

https://medium.com/@interviewready/high-level-design-for-instagram-news-feed-423773d790f8

https://kuliahppl.blogspot.com/2024/03/software-design.html




Comments

Popular Posts