Langsung ke konten utama

TUGAS 13 - PPL A

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

  1. Autentikasi Pengguna: Sistem harus menyediakan mekanisme autentikasi pengguna, baik melalui email, nomor telepon, atau akun media sosial lainnya.
  2. Unggah Foto dan Video: Pengguna harus dapat mengunggah dan memposting foto dan video ke profil mereka, dengan batasan ukuran dan format tertentu.
  3. Penyimpanan Konten: Sistem harus menyediakan penyimpanan untuk konten foto dan video yang diunggah oleh pengguna.
  4. Privasi Konten: Pengguna harus dapat mengatur privasi konten yang diunggah, apakah hanya untuk pengikut mereka atau publik.
  5. Feed Pengguna: Sistem harus menampilkan feed pengguna yang berisi postingan dari pengguna yang diikuti oleh pengguna tersebut.
  6. Pencarian Konten: Pengguna harus dapat mencari konten berdasarkan tagar, lokasi, atau pengguna lain.
  7. Explore: Sistem harus menyediakan halaman Explore yang menampilkan konten yang disesuaikan dengan minat pengguna.
  8. Profil Pengguna: Sistem harus menampilkan profil pengguna yang berisi informasi pengguna, postingan yang diunggah, dan aktivitas lainnya.
  9. Follow dan Unfollow: Pengguna harus dapat mengikuti dan berhenti mengikuti pengguna lain.
  10. Interaksi Pengguna: Pengguna harus dapat memberikan like, komentar, dan berbagi konten yang diunggah oleh pengguna lain.
  11. Stories dan Reels: Sistem harus mendukung fitur Stories dan Reels, termasuk berbagai alat kreatif seperti stiker, teks, dan filter.
  12. Direct Messaging: Sistem harus menyediakan fitur Direct Messaging (DM) untuk pengguna mengirim pesan pribadi ke pengguna lain atau grup.

Kebutuhan Non-Fungsional

  1. Performa: Sistem harus memberikan respons yang cepat terhadap permintaan pengguna, dengan waktu tunda yang minimal.
  2. Skalabilitas: Sistem harus dapat menangani pertumbuhan pengguna dan konten yang besar, dengan kemampuan untuk menyesuaikan kapasitasnya.
  3. Keamanan: Sistem harus menjaga keamanan data pengguna, termasuk data autentikasi, konten yang diunggah, dan pesan pribadi.
  4. Reliabilitas: Sistem harus dapat beroperasi secara konsisten dan dapat diandalkan, dengan ketersediaan yang tinggi.
  5. Usability: Antarmuka pengguna harus dirancang dengan baik dan mudah digunakan, sehingga pengguna dapat dengan mudah berinteraksi dengan sistem.

Estimasi Kapasitas

Estimasi Trafik 
Misalkan Instagram memiliki 1 miliar pengguna aktif harian (DAU), dengan rata-rata setiap pengguna mengunggah 2 foto atau video per hari dan melihat 100 konten (foto/video) per hari.  

  • Unggahan harian: 
1 miliar pengguna × 2 unggahan = 2 miliar unggahan / hari
  • Permintaan untuk melihat konten: 
1 miliar pengguna × 100 konten=  100 miliar permintaan / hari  

Untuk permintaan sistem per detik (RPS):  
  • Unggahan: 
2 miliar / (24 jam × 3600 detik) ≈ 23,148 RPS  
  • Melihat konten: 
100 miliar / (24 jam × 3600 detik) ≈ 1,157,407 RPS  

Estimasi Penyimpanan 
Misalkan rata-rata ukuran setiap foto adalah 1 MB dan video adalah 10 MB. Kita asumsikan 80% unggahan adalah foto dan 20% adalah video.  
  • Total foto per hari: 
2 miliar × 0.8 = 1.6 miliar foto 
1.6 miliar × 1MB = 1.6 PB / hari  
  • Total video per hari: 
2 miliar × 0.2 = 400 juta video 
400 juta × 10 MB = 4 PB / hari  
  • Total penyimpanan per hari: 
1.6 PB + 4 PB = 5.6 PB / hari  
Untuk 1 tahun:  
5.6 PB / hari × 365 hari = 2044 PB / tahun ≈ 2 EB / tahun  

Estimasi Bandwidth 
Estimasi bandwidth diperlukan untuk mengunggah dan mengunduh konten. Asumsi bahwa rata-rata setiap konten dilihat 50 kali.  
  • Unggahan konten harian: 
5.6   P B / h a r i 5.6PB/hari  
  • Pengunduhan konten harian: 
5.6 PB / hari × 50 = 280 PB / hari  

Total data yang ditransfer per hari:  
5.6 PB + 280 PB = 285.6 PB / hari  

Untuk menghitung kebutuhan bandwidth dalam MB per detik:  
285.6 PB / hari × (1024 TB / PB)×(1024 GB / TB)×(1024 MB / GB)/(24 jam × 3600 detik) ≈ 3,308,482 MB / detik

Sehingga, aplikasi Instagram memerlukan bandwidth sekitar 3.3 TB/detik untuk mengunggah dan mengunduh konten. 

High-Level Estimation

Berikut adalah estimasi kapasitas sistem yang dibutuhkan untuk mendukung aplikasi Instagram.

ParameterEstimasi
Pengguna Aktif Harian1 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
Bandwidth3.3 TB/detik

Use Case Diagram



Low Level Design



User Service:
  • Menangani pendaftaran pengguna, login, autentikasi, dan manajemen profil.
  • Menyimpan data pengguna seperti nama pengguna, email, bio, foto profil, dll.
  • Terintegrasi dengan penyedia autentikasi sosial (misalnya, Facebook, Google).

Post Service:

  • Menangani unggahan foto dan video, pengeditan, dan penghapusan.
  • Menyimpan metadata posting seperti keterangan, hashtag, lokasi, stempel waktu, dll.
  • Memproses media yang diunggah untuk mengubah ukuran, filter, dan pembuatan thumbnail.
  • Mengelola transkoding foto dan video untuk perangkat dan resolusi yang berbeda.

Feed Service:

  • Menghasilkan feed berita yang dipersonalisasi untuk setiap pengguna berdasarkan siapa yang mereka ikuti, suka, aktivitas, dan keterlibatan mereka.
  • Memanfaatkan sistem terdistribusi seperti Apache Kafka atau RabbitMQ untuk pembaruan dan notifikasi waktu nyata.
  • Menggunakan lapisan cache seperti Redis untuk pengambilan feed yang cepat dan mengurangi beban database.

Storage Service:

  • Menyimpan foto dan video yang diunggah dengan 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.

Search Service:

  • Memungkinkan pencarian pengguna, hashtag, dan lokasi.
  • Mengindeks pengguna, posting, dan hashtag berdasarkan parameter yang relevan.
  • Menggunakan algoritma pengindeksan dan pencarian yang efisien untuk hasil yang cepat dan akurat.

Comment Service:

  • Menangani penambahan, pengeditan, dan penghapusan komentar pada posting.
  • Melacak utas komentar dan hubungan induk-anak.
  • Memberi tahu pengguna tentang komentar baru pada posting mereka sendiri atau komentar yang mereka ikuti.

Notification Service:

  • Memberi tahu pengguna tentang acara yang relevan seperti suka, komentar, sebutan, dan pengikut.
  • Mendorong notifikasi ke perangkat seluler melalui platform seperti Firebase Cloud Messaging atau Amazon SNS.
  • Memanfaatkan sistem antrian untuk pengiriman notifikasi secara asinkron.

Analytics Service:

  • Melacak keterlibatan pengguna, kinerja posting, 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


Komponen:
  • 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.
Interaksi:

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

User

Table untuk menyimpan data user.

  • userId: string [HashKey]
  • name: string
  • emailId: string
  • creationDateInUtc: long
User Follows

Table untuk menyimpan data follower.

  • followingUserId_followerUserId: string [HashKey]
  • followingUserId: string [RangeKey]
  • followerUserId: string
  • creationDateInUtc: long
User Uploads

Table untuk menyimpan user upload.

  • uploadId: string [HashKey]
  • userId: string [RangeKey]
  • imageLocation: string
  • uploadDateInUtc: long
  • caption: string
User Feed

Table untuk menyimpan data feed user.

  • userId: string [HashKey]
  • uploadId: string
  • creationDateInUtc: long [RangeKey]

Komentar

Postingan populer dari blog ini

ETS - PPL A

NAMA   : Ananda Hadi S NRP        : 5025201148 KELAS : PPL A 1. Apakah perbedaan model analysis dengan model desain? Model Analysis Model analisis fokus pada pemahaman dan penjelasan tentang bagaimana suatu sistem atau fenomena bekerja atau berinteraksi.  Tujuan utama dari model analisis adalah untuk mengidentifikasi masalah, memahami hubungan antara variabel, dan memberikan pemahaman yang mendalam tentang suatu situasi atau sistem.  Contoh dari model analisis termasuk model matematika, analisis data, atau teori yang digunakan untuk menjelaskan dan memprediksi perilaku sistem tertentu.  Model Desain Model desain berfokus pada pembuatan rencana atau representasi bagaimana suatu sistem atau objek akan dibuat atau dirancang.  Tujuan dari model desain adalah untuk menghasilkan solusi atau implementasi yang memenuhi kebutuhan atau tujuan tertentu berdasarkan hasil analisis.  Contoh model desain meliputi blueprints (denah), skema konstruksi, a...

EAS - PPL A

NAMA     : Ananda Hadi S NRP      : 5025201148 KELAS : PPL A EAS Perancangan Perangkat Lunak A, dengan pilihan desain Starbuck Deskripsikan model bisnis yang dipilih? Touchpoints (Titik Kontak) Google Map Smart Phone Google Map Smart Phone Car Store’s Architecture and Signage Printed Materials Starbucks Application and Credit Card Machine Starbucks Application Pick-up Window, Employee Employee, Pick-up Box, and Drinks User Journey Pengaturan tujuan:  Pelanggan mengatur tujuan ke Starbucks terdekat menggunakan Google Maps di smartphone. (Catatan:  Menyediakan informasi tentang bagaimana Starbucks beroperasi saat ini: hanya untuk dibawa pulang). Perjalanan ke starbucks:  Pelanggan berjalan atau mengemudi ke lokasi Starbucks. Melihat tanda dan logo:  Pelanggan melihat logo Starbucks dan tanda pada pintu masuk. Instruksi di pintu:  Pelanggan melihat instruksi di pintu mengenai proses pemesanan. Memilih pesan online:  Pelanggan...

APSI - TUGAS 8 - Data Modelling

  Apa itu Data Modelling? Data modeling adalah proses merancang struktur dan representasi data untuk memahami, menggambarkan, dan mengorganisasi informasi dalam suatu sistem atau organisasi. Hal ini dilakukan dengan menggunakan konsep, notasi, dan metode tertentu untuk menyusun model data yang mempresentasikan hubungan antara entitas, atribut, dan aturan yang berlaku dalam konteks yang relevan. Data modeling membantu dalam pemahaman dan dokumentasi yang lebih baik tentang data yang digunakan dan diproses dalam suatu sistem. Tujuannya adalah untuk menciptakan pemahaman yang konsisten dan jelas tentang struktur data, hubungan antara data, dan aturan bisnis yang mengatur penggunaan data. jenis jenis data modeling CDM (Conceptual Data Model): Model data konseptual (CDM) adalah representasi tingkat tinggi dari struktur data yang berfokus pada pemahaman konseptual dari domain atau sistem yang dimodelkan. CDM membantu untuk memahami informasi yang diperlukan dalam suatu organisasi atau si...