Desain System Aplikasi Instagram


 Nama : Muhamad Faiz Fernanda

 NRP   : 502521186


 Desain System Aplikasi Instagram


Pada tugas ini, kami melakukan analisis desain sistem untuk aplikasi Instagram dengan fokus pada berbagai aspek utama. Analisis ini meliputi kebutuhan fungsional, seperti registrasi dan login pengguna, unggah, edit, dan hapus foto dan video, pembuatan dan penayangan cerita (stories), memberikan komentar dan suka (likes) pada postingan, mengirim pesan langsung (direct messages), serta mengikuti dan berhenti mengikuti pengguna lain. Selain itu, kami juga mengkaji kebutuhan non-fungsional, termasuk keamanan data pengguna, keandalan sistem, kinerja aplikasi dalam hal kecepatan dan responsivitas, skalabilitas untuk menangani peningkatan jumlah pengguna, serta kompatibilitas dengan berbagai perangkat dan sistem operasi. Kami akan menjelaskan kebutuhan sistem untuk memastikan semua komponen teknis dapat mendukung fungsionalitas dan kinerja aplikasi. Analisis ini juga mencakup pembuatan diagram use case untuk menggambarkan interaksi antara pengguna dan sistem, desain tingkat rendah (low-level design) dan desain tingkat tinggi (high-level design) untuk memberikan gambaran rinci dan umum tentang arsitektur aplikasi, serta fungsi-fungsi lain yang relevan.


Instagram adalah platform media sosial yang memungkinkan pengguna untuk berbagi foto dan video, serta berinteraksi dengan pengguna lain melalui fitur komentar, suka, dan pesan langsung. Aplikasi ini menekankan visual, dengan aliran berita yang didasarkan pada konten yang diunggah oleh pengguna yang diikuti. Instagram juga menawarkan berbagai fitur seperti Stories, di mana pengguna dapat mengunggah foto dan video yang hilang setelah 24 jam, IGTV untuk video berdurasi panjang, Reels untuk video pendek, dan Shop yang memungkinkan pengguna membeli produk langsung dari platfor


Kebutuhan Non-Fungsional Instagram

  1. Keamanan Data: Menjaga keamanan data pribadi pengguna dengan enkripsi selama transfer dan penyimpanan data, serta mekanisme untuk melindungi dari akses tidak sah.
  2. Keandalan: Sistem harus beroperasi secara konsisten tanpa gangguan, dengan uptime yang tinggi untuk memastikan layanan selalu tersedia bagi pengguna.
  3. Kinerja: Aplikasi harus responsif dan cepat dalam memuat konten, bahkan di bawah beban pengguna yang tinggi, untuk memberikan pengalaman pengguna yang baik.
  4. Skalabilitas: Sistem harus mampu menangani peningkatan jumlah pengguna dan volume data tanpa mengalami penurunan kinerja.
  5. Kompatibilitas: Aplikasi harus dapat berjalan dengan baik di berbagai perangkat dan sistem operasi, termasuk berbagai versi Android dan iOS.
  6. Kemudahan Penggunaan: Antarmuka pengguna harus intuitif dan mudah digunakan, memungkinkan pengguna untuk menavigasi dan menggunakan fitur-fitur aplikasi tanpa kesulitan.
  7. Privasi: Pengaturan privasi yang fleksibel harus disediakan sehingga pengguna dapat mengontrol siapa yang dapat melihat konten mereka dan bagaimana data mereka digunakan.
  8. Pemulihan Bencana: Sistem harus memiliki rencana pemulihan bencana yang efektif untuk memastikan data dapat dipulihkan dengan cepat dalam kasus kegagalan sistem atau insiden lainnya.
  9. Kepatuhan Regulasi: Aplikasi harus mematuhi semua peraturan dan undang-undang yang berlaku terkait privasi dan keamanan data, termasuk GDPR di Eropa dan regulasi lainnya.
  10. Efisiensi Energi: Aplikasi harus dioptimalkan untuk penggunaan baterai yang efisien pada perangkat mobile, sehingga tidak menguras daya secara berlebihan.

Kebutuhan Fungsional Instagram

  1. Registrasi dan Login Pengguna: Pengguna dapat membuat akun baru atau masuk ke akun yang sudah ada menggunakan email, nomor telepon, atau akun Facebook.
  2. Profil Pengguna: Pengguna dapat membuat dan mengelola profil mereka, termasuk mengunggah foto profil, menambahkan bio, dan melihat jumlah pengikut dan yang diikuti.
  3. Mengunggah Foto dan Video: Pengguna dapat mengunggah foto dan video dari perangkat mereka, mengeditnya dengan filter dan alat pengeditan, serta menambahkan deskripsi dan lokasi.
  4. Cerita (Stories): Pengguna dapat membuat cerita yang terdiri dari foto dan video yang akan menghilang setelah 24 jam, serta menambahkan teks, stiker, dan efek lainnya.
  5. Komentar dan Suka: Pengguna dapat berinteraksi dengan postingan orang lain dengan memberikan suka dan meninggalkan komentar.
  6. Pesan Langsung (Direct Messages): Pengguna dapat mengirim pesan pribadi, foto, video, dan cerita kepada pengguna lain atau dalam grup.
  7. Fitur Pencarian dan Eksplorasi: Pengguna dapat mencari akun lain, tagar, dan lokasi, serta menjelajahi konten populer dan yang disarankan berdasarkan minat mereka.
  8. Pengikut dan Mengikuti: Pengguna dapat mengikuti akun lain untuk melihat konten mereka di feed dan mendapatkan pembaruan, serta melihat siapa yang mengikuti mereka.
  9. Notifikasi: Pengguna menerima notifikasi tentang aktivitas penting, seperti suka, komentar, pengikut baru, dan pesan.
  10. Reels: Pengguna dapat membuat dan berbagi video pendek yang kreatif dengan musik, efek, dan alat pengeditan.
  11. IGTV: Pengguna dapat mengunggah dan menonton video berdurasi panjang, biasanya dalam format vertikal.
  12. Belanja: Pengguna dapat membeli produk langsung dari aplikasi melalui fitur belanja yang terintegrasi dengan toko online.
  13. Live Streaming: Pengguna dapat melakukan siaran langsung untuk berinteraksi secara real-time dengan pengikut mereka.
  14. Simpan dan Koleksi: Pengguna dapat menyimpan postingan ke koleksi pribadi untuk dilihat nanti.
  15. Pengaturan Privasi dan Keamanan: Pengguna dapat mengatur privasi akun mereka, seperti membuat akun menjadi privat, mengatur siapa yang dapat mengirim pesan, dan melaporkan atau memblokir pengguna lain.


Kapasitas Sistem


Penyimpanan Per Hari:

  • Foto: 120 juta foto/hari * 3 MB = 360 Terabytes / hari
  • Video: 60 juta video/hari * 180 MB = 10,800 TB / hari
Total ukuran konten per hari: 360 TB (foto) + 10,800 TB (video) = 11,160 TB

Total ruang yang diperlukan untuk setahun: 11,160 TB/hari * 365 hari/tahun = 4,073,400 TB = 4,073.4 Petabytes

Estimasi Bandwidth:

  • Bandwidth harian: 11,160 TB / (24 * 60 * 60 detik) ≈ 129.17 GB/s ≈ 1.03 Tbps
  • Bandwidth masuk: ≈ 1.03 Tbps

Rasio pembaca dan penulis: Misalkan rasio pembaca dan penulis adalah 50:1

Bandwidth keluar yang diperlukan: 50 * 1.03 Tbps ≈ 51.5 Tbps




Digram USE CASE



    Diagram use case menggambarkan interaksi antara pengguna dan sistem Instagram. Contohnya, ketika seorang pengguna baru mendaftar, data mereka akan disimpan dalam basis data dan profilnya akan diverifikasi. Pengguna dapat masuk dengan email dan kata sandi jika sudah terdaftar, melihat gambar, video, dan cerita terbaru di halaman beranda mereka, melakukan siaran langsung, dan mengikuti atau berhenti mengikuti pengguna lain. Pengguna juga memiliki opsi untuk melihat postingan atau cerita yang diarsipkan. Selain itu, setelah melakukan pembayaran, pengguna dapat membuka blokir pengguna lain.



Low Level Design





  1. Layanan Pengguna: Mengelola pendaftaran, login, autentikasi, dan manajemen profil pengguna. Ini mencakup penyimpanan data seperti nama pengguna, email, bio, dan foto profil, serta integrasi dengan penyedia autentikasi sosial seperti Facebook dan Google.
  2. Layanan Postingan: Menangani unggahan, pengeditan, dan penghapusan foto serta video, menyimpan metadata seperti keterangan, tagar, lokasi, dan cap waktu. Memproses media untuk pengubahan ukuran, penyaringan, dan pembuatan thumbnail, serta mengelola transkoding untuk berbagai perangkat dan resolusi.
  3. Layanan Feed: Menyusun feed berita yang dipersonalisasi berdasarkan pengikut, suka, aktivitas, dan keterlibatan pengguna. Menggunakan sistem terdistribusi seperti Apache Kafka atau RabbitMQ untuk pembaruan real-time dan lapisan cache seperti Redis untuk mempercepat pengambilan feed dan mengurangi beban pada database.
  4. Layanan Penyimpanan: Menyimpan foto dan video dengan efisien dan andal, menggunakan solusi penyimpanan objek yang dapat diskalakan seperti Amazon S3, Google Cloud Storage, atau Azure Blob Storage. Menerapkan mekanisme redundansi dan pemulihan bencana untuk memastikan perlindungan data.
  5. Layanan Pencarian: Memungkinkan pencarian pengguna, tagar, dan lokasi dengan mengindeks berdasarkan parameter relevan dan menggunakan algoritma pengindeksan serta pencarian yang efisien untuk memberikan hasil yang cepat dan akurat.
  6. Layanan Komentar: Mengelola penambahan, pengeditan, dan penghapusan komentar pada postingan, melacak thread komentar, dan memberi notifikasi kepada pengguna tentang komentar baru.
  7. Layanan Notifikasi: Memberitahukan pengguna tentang acara seperti suka, komentar, penyebutan, dan pengikut baru. Mengirim notifikasi ke perangkat mobile melalui platform seperti Firebase Cloud Messaging atau Amazon SNS, menggunakan sistem antrian untuk pengiriman asinkron.
  8. Layanan Analitik: 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.
  9. Pentingnya Caching untuk Menyimpan Data: Caching data diperlukan untuk menangani jutaan permintaan baca, meningkatkan pengalaman pengguna dengan mempercepat proses pengambilan. Dengan menggunakan lazy loading, waktu tunggu klien diminimalkan, konten dimuat saat pengguna menggulir, sehingga menghemat bandwidth dan fokus pada konten yang sedang dilihat pengguna. Ini meningkatkan latensi untuk melihat atau mencari foto atau video tertentu di Instagram.

High Level Design



Komponen utama sistem Instagram mencakup berbagai fungsi penting berikut:

  1. Klien: Aplikasi seluler, aplikasi web, dan API yang memungkinkan pengguna berinteraksi dengan platform.
  2. Otentikasi & Otorisasi: Menangani login, pendaftaran, dan pengaturan kontrol akses.
  3. Manajemen Konten: Mengelola konten pengguna seperti foto, video, streaming langsung, cerita, dan pesan.
  4. Pembuatan Umpan: Dipersonalisasi untuk setiap pengguna berdasarkan pengikut, aktivitas, dan kete
  5. Grafik Sosial: Melacak hubungan antar pengguna seperti pengikut dan teman.
  6. Penemuan & Pencarian: Memungkinkan pencarian pengguna, tagar, lokasi, dan konten yang relevan.
  7. Notifikasi: Memberitahukan pengguna tentang peristiwa penting seperti suka, komentar, sebutan, dan pengikut baru.
  8. Analisis & Pelaporan: Melacak keterlibatan pengguna, kinerja konten, dan penggunaan platform secara keseluruhan.

Dalam interaksi pengguna dengan platform, pengguna dapat membuat konten dengan mengunggah foto atau video, yang kemudian disimpan oleh Manajemen Konten bersama metadatanya. Pembuatan Umpan memperbarui umpan pengguna dan pengikut yang relevan, sementara notifikasi memberitahukan pengguna terkait konten yang menarik minat mereka. Pengguna juga dapat berinteraksi langsung dengan konten dengan memberikan suka, komentar, atau berbagi, yang akan diperbarui oleh Manajemen Konten dan Grafik Sosial. Pembuatan Umpan memiliki potensi untuk menyusun ulang umpan berdasarkan interaksi baru, sementara notifikasi terus memberi tahu pengguna tentang peristiwa yang relevan.

Pengguna juga dapat menemukan konten baru dengan menggunakan fungsi pencarian yang disediakan oleh Klien. Penemuan & Pencarian mengidentifikasi konten yang relevan, yang kemudian ditampilkan oleh Klien. Saat mengelola koneksi mereka, pengguna dapat mengirimkan permintaan mengikuti atau berhenti mengikuti, yang diperbarui oleh Grafik Sosial, dan Pembuatan Umpan menyesuaikan umpan berdasarkan perubahan dalam hubungan tersebut. Pengguna juga dapat memantau aktivitas mereka dengan memeriksa umpan notifikasi yang memberikan pembaruan tentang peristiwa penting di platform.

Komentar

Postingan populer dari blog ini

Low Level Design

Evaluasi Akhir Semester

Estimasi Kapasitas Sistem