Tugas Pertemuan 13


Persyaratan untuk Desain Sistem Instagram



Persyaratan Fungsional:

  1. Mengunggah Konten (Foto dan Video):

    • Pengguna dapat mengunggah foto dan video ke dalam postingan mereka.
    • Setiap postingan dapat menyertakan satu atau beberapa gambar atau video.
  2. Mengirim Komentar:

    • Pengguna dapat mengomentari postingan pengguna lain.
  3. Memberikan Like:

    • Pengguna dapat memberikan like pada postingan pengguna lain.
  4. Mengirim Pesan Langsung:

    • Pengguna dapat mengirim pesan langsung ke pengguna lain.
  5. Mengelola Profil:

    • Pengguna dapat mengedit dan mengelola profil mereka, termasuk gambar profil, bio, dan informasi pribadi lainnya.
  6. Mencari Konten:

    • Pengguna dapat mencari postingan berdasarkan kata kunci, hashtag, atau pengguna tertentu.
  7. Newsfeed:

    • Pengguna memiliki newsfeed yang menampilkan postingan dari pengguna yang mereka ikuti.
  8. Story:

    • Pengguna dapat mengunggah cerita (story) yang bersifat sementara dan dapat dilihat dalam jangka waktu tertentu.

Persyaratan Non-Fungsional:

  1. Skalabilitas:

    • Sistem harus dapat menangani peningkatan volume pengguna, postingan, dan interaksi tanpa mengorbankan kinerja.
  2. Latensi Rendah:

    • Respons sistem terhadap aksi seperti mengunggah konten atau memuat newsfeed harus cepat dan efisien.
  3. Ketersediaan Tinggi:

    • Sistem harus tersedia sepanjang waktu untuk memastikan pengguna dapat mengaksesnya tanpa gangguan.
  4. Durabilitas Data:

    • Semua data pengguna, termasuk postingan, komentar, dan informasi profil, harus tersimpan dengan aman dan tidak boleh hilang.
  5. Konsistensi:

    • Informasi seperti jumlah like, komentar, dan data profil harus konsisten di seluruh platform.
  6. Keamanan:

    • Data pengguna harus terlindungi dengan baik melalui enkripsi data dan langkah-langkah keamanan yang ketat.

Estimasi Kapasitas untuk Desain Sistem Instagram

  • Jumlah Pengguna Aktif Harian: 1 miliar pengguna aktif harian.
  • Jumlah Postingan Harian: 100 juta postingan per hari.
  • Ukuran Rata-rata Postingan: 2 MB.

Arsitektur Tingkat Tinggi (High-Level Design)

  1. Klien (Client):

    • Aplikasi seluler (iOS dan Android), aplikasi web, dan API yang menghubungkan pengguna dengan sistem.
  2. Layanan Autentikasi & Otorisasi:

    • Menangani login, registrasi, serta pengaturan dan pengelolaan hak akses pengguna.
  3. Manajemen Konten:

    • Layanan untuk menyimpan dan mengelola postingan, gambar, dan video yang diunggah pengguna.
  4. Pembuatan Feed:

    • Menghasilkan feed yang dipersonalisasi untuk setiap pengguna berdasarkan siapa yang mereka ikuti dan preferensi mereka.
  5. Layanan Pencarian:

    • Memungkinkan pengguna untuk mencari konten berdasarkan kata kunci, hashtag, atau pengguna tertentu.
  6. Layanan Notifikasi:

    • Mengirimkan notifikasi kepada pengguna tentang aktivitas terkait seperti like, komentar, dan pesan masuk.
  7. Layanan Analitik:

    • Melacak dan menganalisis penggunaan platform untuk menghasilkan wawasan tentang keterlibatan pengguna dan kinerja postingan.

Detail Desain (Low-Level Design)

  1. Penyimpanan Data:

    • Menggunakan basis data NoSQL untuk menyimpan postingan, metadata, dan informasi pengguna.
  2. Pengelolaan Gambar dan Video:

    • Layanan khusus untuk mengelola penyimpanan, pengolahan, dan penyediaan gambar dan video yang diunggah.
  3. Cache:

    • Menerapkan mekanisme caching untuk meningkatkan kinerja dengan menyimpan hasil pencarian, profil pengguna, dan feed.
  4. Sistem Notifikasi:

    • Menggunakan sistem antrian pesan untuk mengelola dan mengirimkan notifikasi secara efisien kepada pengguna.
  5. Replikasi Data:

    • Memastikan replikasi data untuk ketersediaan tinggi dan pemulihan bencana.
  6. Keamanan:

    • Menggunakan enkripsi data end-to-end dan lapisan keamanan yang kuat untuk melindungi data pengguna dari akses yang tidak sah.

Pertimbangan Utama

  • Skalabilitas: Menambahkan server secara dinamis dan memanfaatkan teknologi cloud untuk mengatasi lonjakan pengguna dan interaksi.
  • Performa: Mengoptimalkan kueri database, menggunakan caching, dan memanfaatkan teknologi CDN untuk mempercepat pengiriman konten.
  • Ketersediaan: Menyediakan failover dan redundansi untuk meminimalkan waktu downtime dan memastikan pengalaman pengguna yang lancar.
  • Keamanan: Mengimplementasikan praktik keamanan terbaik, termasuk otentikasi multi-faktor dan kontrol akses yang ketat, untuk melindungi data pengguna secara efektif.

Dengan desain ini, Instagram dapat memberikan pengalaman pengguna yang dinamis, memastikan penyimpanan yang aman dan efisien untuk konten visual, serta mengoptimalkan kinerja platform dalam menghadapi tantangan skalabilitas dan keamanan.

Komentar

Postingan populer dari blog ini

ETS - PPL A

FINAL PROJECT PBKK A

TUGAS 7 PPL