NAMA : Ananda Hadi Saputra
KELAS : PPL A
NRP : 5025201148
Desain System Aplikasi Instagram
Deskripsi Aplikasi
Instagram adalah platform media sosial yang memungkinkan pengguna untuk berbagi foto dan video. Dikembangkan oleh Kevin Systrom dan Mike Krieger, Instagram pertama kali diluncurkan pada Oktober 2010 dan kemudian diakuisisi oleh Facebook Inc. (sekarang Meta Platforms Inc.) pada April 2012. Beberapa fitur utama Instagram adalah sebagai berikut:
- Berbagi Foto dan Video: Pengguna dapat mengunggah foto dan video ke profil mereka, menambahkan deskripsi, tagar (hashtag), dan lokasi. Konten ini dapat dilihat oleh pengikut mereka atau oleh publik, tergantung pada pengaturan privasi akun.
- Stories: Fitur ini memungkinkan pengguna untuk berbagi foto dan video dalam format slideshow yang akan hilang setelah 24 jam. Stories juga dilengkapi dengan berbagai alat kreatif seperti stiker, teks, dan filter.
- Direct Messaging (DM): Fitur pesan pribadi yang memungkinkan pengguna mengirim teks, foto, video, dan postingan dari feed atau Stories secara langsung ke pengguna lain atau grup.
- IGTV: Layanan video yang memungkinkan pengguna untuk mengunggah video berdurasi lebih panjang dibandingkan video biasa yang diunggah ke feed.
- Reels: Fitur yang memungkinkan pengguna untuk membuat dan menemukan video pendek dengan musik, mirip dengan TikTok.
- Explore: Halaman ini menampilkan konten yang disesuaikan dengan minat pengguna, berdasarkan aktivitas dan interaksi mereka di platform.
Spesifikasi Kebutuhan
Berdasarkan deskripsi aplikasi di atas, kita dapat mengidentifikasi beberapa spesifikasi kebutuhan untuk desain sistem Instagram. Beberapa spesifikasi kebutuhan tersebut adalah sebagai berikut:
Kebutuhan Fungsional
- Autentikasi Pengguna: Sistem harus menyediakan mekanisme autentikasi pengguna, baik melalui email, nomor telepon, atau akun media sosial lainnya.
- Unggah Foto dan Video: Pengguna harus dapat mengunggah dan memposting foto dan video ke profil mereka, dengan batasan ukuran dan format tertentu.
- Penyimpanan Konten: Sistem harus menyediakan penyimpanan untuk konten foto dan video yang diunggah oleh pengguna.
- Privasi Konten: Pengguna harus dapat mengatur privasi konten yang diunggah, apakah hanya untuk pengikut mereka atau publik.
- Feed Pengguna: Sistem harus menampilkan feed pengguna yang berisi postingan dari pengguna yang diikuti oleh pengguna tersebut.
- Pencarian Konten: Pengguna harus dapat mencari konten berdasarkan tagar, lokasi, atau pengguna lain.
- Explore: Sistem harus menyediakan halaman Explore yang menampilkan konten yang disesuaikan dengan minat pengguna.
- Profil Pengguna: Sistem harus menampilkan profil pengguna yang berisi informasi pengguna, postingan yang diunggah, dan aktivitas lainnya.
- Follow dan Unfollow: Pengguna harus dapat mengikuti dan berhenti mengikuti pengguna lain.
- Interaksi Pengguna: Pengguna harus dapat memberikan like, komentar, dan berbagi konten yang diunggah oleh pengguna lain.
- Stories dan Reels: Sistem harus mendukung fitur Stories dan Reels, termasuk berbagai alat kreatif seperti stiker, teks, dan filter.
- Direct Messaging: Sistem harus menyediakan fitur Direct Messaging (DM) untuk pengguna mengirim pesan pribadi ke pengguna lain atau grup.
Kebutuhan Non-Fungsional
- Performa: Sistem harus memberikan respons yang cepat terhadap permintaan pengguna, dengan waktu tunda yang minimal.
- Skalabilitas: Sistem harus dapat menangani pertumbuhan pengguna dan konten yang besar, dengan kemampuan untuk menyesuaikan kapasitasnya.
- Keamanan: Sistem harus menjaga keamanan data pengguna, termasuk data autentikasi, konten yang diunggah, dan pesan pribadi.
- Reliabilitas: Sistem harus dapat beroperasi secara konsisten dan dapat diandalkan, dengan ketersediaan yang tinggi.
- Usability: Antarmuka pengguna harus dirancang dengan baik dan mudah digunakan, sehingga pengguna dapat dengan mudah berinteraksi dengan sistem.
Estimasi Kapasitas
- Unggahan harian:
- Permintaan untuk melihat konten:
- Unggahan:
- Melihat konten:
- Total foto per hari:
- Total video per hari:
- Total penyimpanan per hari:
- Unggahan konten harian:
- Pengunduhan konten harian:
High-Level Estimation
Parameter | Estimasi |
---|---|
Pengguna Aktif Harian | 1 miliar pengguna |
Requests/detik (RPS) | 23,148 RPS 1,157,407 RPS |
Penyimpanan (per hari) | 5.6 PB / hari |
Penyimpanan (1 tahun) | 2 EB / tahun |
Bandwidth | 3.3 TB/detik |
High Level Design
- Klien: Aplikasi seluler, aplikasi web, dan API yang menyediakan antarmuka bagi pengguna untuk berinteraksi dengan sistem.
- Autentikasi & Otorisasi: Menangani login pengguna, pendaftaran, dan kontrol akses.
- Manajemen Konten: Mengelola konten buatan pengguna seperti foto, video, siaran langsung, cerita, dan pesan.
- Generasi Feed: Memersonalisasi feed berita untuk setiap pengguna berdasarkan siapa yang mereka ikuti, aktivitas, dan keterlibatan mereka.
- Graf Sosial: Melacak hubungan antara pengguna (mengikuti, pengikut, teman).
- Penemuan & Pencarian: Memungkinkan pencarian pengguna, hashtag, lokasi, dan konten.
- Notifikasi: Memberi tahu pengguna tentang acara yang relevan seperti suka, komentar, sebutan, dan pengikut.
- Analitik & Pelaporan: Melacak keterlibatan pengguna, kinerja konten, dan penggunaan platform secara keseluruhan.
Pengguna membuat konten:
- Klien mengunggah foto/video.
- Manajemen Konten menyimpan media dan metadata.
- Generasi Feed memperbarui feed pengguna dan pengikut yang relevan.
- Notifikasi memberi tahu pengguna yang tertarik.
Pengguna berinteraksi dengan konten:
- Klien mengirim tindakan suka/komentar/bagikan.
- Manajemen Konten dan Graf Sosial memperbarui data yang relevan.
- Generasi Feed mungkin mengatur ulang feed berdasarkan interaksi baru.
- Notifikasi memberi tahu pengguna yang tertarik.
Pengguna menemukan konten baru:
- Klien menggunakan fungsi pencarian.
- Penemuan & Pencarian mengidentifikasi konten yang relevan.
- Klien menampilkan hasil pencarian.
Pengguna mengelola koneksi:
- Klien mengirim permintaan ikuti/tidak ikuti.
- Graf Sosial memperbarui koneksi.
- Generasi Feed menyesuaikan berdasarkan perubahan hubungan.
Pengguna memantau aktivitas:
- Klien memeriksa feed notifikasi.
- Notifikasi memberikan pembaruan tentang acara yang relevan.
Database Design
Table untuk menyimpan data user.
- userId: string [HashKey]
- name: string
- emailId: string
- creationDateInUtc: long
Table untuk menyimpan data follower.
- followingUserId_followerUserId: string [HashKey]
- followingUserId: string [RangeKey]
- followerUserId: string
- creationDateInUtc: long
Table untuk menyimpan user upload.
- uploadId: string [HashKey]
- userId: string [RangeKey]
- imageLocation: string
- uploadDateInUtc: long
- caption: string
Table untuk menyimpan data feed user.
- userId: string [HashKey]
- uploadId: string
- creationDateInUtc: long [RangeKey]
Komentar
Posting Komentar