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...

APSI - TUGAS 5 - Requirement Definition

Requirement Definition Definisi Requirements Dalam pengembangan perangkat lunak, definisi requirements mengacu pada proses mengidentifikasi, mendefinisikan, dan mendokumentasikan kebutuhan atau persyaratan yang harus dipenuhi oleh suatu sistem atau aplikasi. Requirements atau kebutuhan ini berfungsi sebagai panduan bagi tim pengembang perangkat lunak dalam merancang, mengembangkan, dan menguji sistem yang diinginkan. Fungsi Requirements Berikut adalah beberapa fungsi utama dari requirements: Menjelaskan kebutuhan pengguna: Requirements membantu menggambarkan dan menjelaskan kebutuhan pengguna atau pemangku kepentingan terkait sistem atau aplikasi yang akan dikembangkan. Menyediakan panduan untuk perancangan sistem: Requirements menjadi dasar dalam merancang arsitektur, fungsionalitas, dan fitur-fitur yang akan ada dalam sistem. Membantu dalam perencanaan dan estimasi proyek: Requirements yang terdefinisi dengan baik memungkinkan tim pengembang untuk melakukan perencanaan proyek yang le...

APSI - TUGAS 4 - Seleksi dan Manajemen Proyek

Pada era globalisasi yang semakin maju, perusahaan-perusahaan harus mampu beradaptasi dengan berbagai perubahan yang terjadi, baik dalam hal teknologi, ekonomi, sosial, maupun politik. Salah satu aspek yang sangat penting dalam menjalankan perusahaan adalah pengelolaan Sumber Daya Manusia (SDM). Dalam konteks ini, seleksi dan manajemen SDM memiliki peran yang sangat krusial untuk menghasilkan karyawan yang kompeten dan mampu mendukung kemajuan perusahaan. Seleksi SDM Seleksi SDM merupakan salah satu proses penting dalam pengelolaan SDM. Proses ini bertujuan untuk memilih individu yang memiliki kompetensi dan karakteristik yang sesuai dengan kebutuhan perusahaan. Berikut ini adalah beberapa tahapan dalam proses seleksi SDM: 1. Analisis Kebutuhan Langkah pertama dalam proses seleksi SDM adalah menganalisis kebutuhan perusahaan. Hal ini meliputi identifikasi posisi yang diperlukan, jumlah karyawan yang dibutuhkan, serta kualifikasi dan kompetensi yang harus dimiliki oleh calon karyawan. 2...