Tugas 9 PPL

  Nama : M. Armand Giovani

NRP : 5025211054

Kelas : PPL A

Desain System Aplikasi Instagram


Pada Tugas kali ini, kami melakukan analisis desain sistem aplikasi Instagram dengan fokus pada berbagai aspek utama. Analisis ini mencakup kebutuhan fungsional, seperti registrasi dan login pengguna, unggah, edit, dan hapus foto dan video, pembuatan dan melihat cerita (stories), komentar dan suka (likes) pada postingan, 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 lainnya yang relevan.



Instagram adalah platform media sosial populer yang berfokus pada berbagi konten visual seperti foto dan video dengan cara yang mudah dan menarik. Pengguna dapat berkomunikasi melalui komentar, menyukai postingan, dan mengirim pesan langsung, yang membantu mereka membangun jaringan dan komunitas di dalam aplikasi ini.

Kebutuhan Non-Fungsional Instagram

  1. Keamanan Data: Melindungi data pribadi pengguna, termasuk enkripsi data saat transit dan penyimpanan, serta mekanisme perlindungan terhadap akses yang tidak sah.
  2. Keandalan: Sistem harus beroperasi 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. Usability: 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: 100 juta foto/hari * 4 MB = 400 Terabytes / hari
  • Video: 50 juta video/hari * 200 MB = 10,000 TB / hari
  • Total ukuran konten per hari: 400 TB (foto) + 10,000 TB (video) = 10,400 TB

Total ruang yang diperlukan untuk setahun: 10,400 TB/hari * 365 hari/tahun = 3,796,000 TB = 3,796 Petabytes

Estimasi Bandwidth:

  • Bandwidth harian: 10,400 TB / (24 * 60 * 60 detik) ≈ 120.37 GB/s ≈ 962.96 Gbps
  • Bandwidth masuk: ≈ 962.96 Gbps
  • Rasio pembaca dan penulis: Misalkan rasio pembaca dan penulis adalah 50:1
  • Bandwidth keluar yang diperlukan: 50 * 962.96 Gbps ≈ 48.15 Tbps

Diagram Use Case



        Diagram use case menggambarkan interaksi antara pengguna dan sistem Instagram. Misalnya, saat pengguna baru mendaftar, datanya akan disimpan di database dan profilnya akan diperiksa. Pengguna bisa login 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 orang lain. Ada juga opsi untuk melihat postingan atau cerita yang diarsipkan dan, setelah melakukan pembayaran, pengguna dapat membuka blokir pengguna lain.

Low Level Design

  1. Layanan Pengguna: Mengelola pendaftaran, login, autentikasi, dan manajemen profil pengguna, serta menyimpan data seperti nama pengguna, email, bio, dan foto profil. Terintegrasi dengan penyedia autentikasi sosial seperti Facebook dan Google.
  2. Layanan Postingan: Mengatur 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: Membuat 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 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 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 hasil 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: Menginformasikan pengguna tentang acara seperti suka, komentar, penyebutan, dan pengikut baru. Mengirim notifikasi ke perangkat mobile melalui platform seperti Firebase Cloud Messaging atau Amazon SNS dan 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 pembacaan, 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 dari sistem Instagram mencakup berbagai fungsi penting:

  1. Klien: Aplikasi seluler, aplikasi web, dan API yang memfasilitasi interaksi pengguna dengan platform.
  2. Otentikasi & Otorisasi: Bertanggung jawab atas login, registrasi, 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 keterlibatan mereka.
  5. Grafik Sosial: Melacak hubungan antar pengguna seperti pengikut dan teman.
  6. Penemuan & Pencarian: Memungkinkan pencarian pengguna, hashtag, 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 beserta metadata-nya. 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 mengirimkan tindakan 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 memberitahukan pengguna tentang peristiwa yang relevan.

            Pengguna juga dapat menemukan konten baru dengan menggunakan fungsi pencarian yang disediakan oleh Klien. Discovery & Search mengidentifikasi konten yang relevan, yang kemudian ditampilkan oleh Klien. Ketika 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