TUGAS PERTEMUAN 13 PPL
Nama : Danno Denis Dhaifullah
NRP : 5025211027
Kelas : PPL - A
DESAIN SISTEM APLIKASI INSTAGRAM
Spesifikasi Kebutuhan
Kebutuhan Fungsional
- Mengunggah foto dan video: Pengguna bisa membagikan foto dan video mereka di Instagram.
- Mengikuti dan berhenti mengikuti pengguna: Pengguna dapat mengikuti atau berhenti mengikuti akun pengguna lain di Instagram.
- Menyukai atau tidak menyukai posting: Pengguna dapat memberi suka atau tidak suka pada postingan dari akun yang mereka ikuti.
- Mencari foto dan video: Pengguna dapat mencari foto dan video berdasarkan keterangan dan lokasi.
- Melihat umpan berita: Pengguna dapat melihat umpan berita yang menampilkan foto dan video dari semua pengguna yang diikuti, disajikan dalam urutan kronologis.
Kebutuhan Non-Fungsional
- Skalabilitas: Sistem harus mampu menangani volume pengguna yang besar dengan sumber daya komputasi dan penyimpanan yang memadai.
- Latensi: Waktu tunggu untuk memuat umpan berita harus minimal.
- Ketersediaan: Sistem harus tetap tersedia dalam kondisi operasional yang tinggi.
- Ketahanan: Setiap konten yang diunggah (baik foto maupun video) harus dipertahankan dan tidak boleh hilang.
- Konsistensi: Konsistensi dalam konten bisa dikompromikan sedikit. Dapat diterima jika konten (foto atau video) memerlukan waktu untuk muncul di umpan berita pengikut yang berada di wilayah yang berbeda.
- Keandalan: Sistem harus dapat menghadapi kegagalan perangkat keras dan perangkat lunak dengan baik.
Estimasi Kapasitas Sistem
Asumsi:
- Pengguna aktif harian: 500 juta dari total 1 miliar pengguna
- Foto dibagikan: 60 juta per hari
- Video dibagikan: 35 juta per hari
- Ukuran foto maks: 3 MB
- Ukuran video maks: 150 MB
- Setiap pengguna rata-rata mengirim 20 permintaan per hari
Kebutuhan Penyimpanan Harian
- Foto: 60 juta foto/hari * 3 MB = 180 Terabyte / hari
- Video: 35 juta video/hari * 150 MB = 5250 Terabyte / hari
- Total: 180 TB/hari + 5250 TB/hari = 5430 Terabyte / hari
Kebutuhan Penyimpanan Tahunan:
5430 TB/hari * 365 hari/tahun = 1.981.950 Terabyte = 1.981,95 Petabyte
Estimasi Bandwidth
5430 TB / (24 jam * 60 menit/jam * 60 detik/menit) = 62,84 Gigabyte/detik = 502,8 Gigabits/detik (Gbps)
- Bandwidth masuk: 502,8 Gbps
Diasumsikan rasio pengguna yang membaca dibanding yang menulis adalah 100:1.
- Bandwidth keluar yang dibutuhkan: 100 * 502,8 Gbps = 50,28 Terabits/detik (Tbps)
Kesimpulan:
Sistem Instagram membutuhkan kapasitas penyimpanan yang sangat besar, yaitu sekitar 2 Petabyte per tahun. Selain itu, dibutuhkan bandwidth yang tinggi untuk menangani lalu lintas data, yaitu sekitar 500 Gbps untuk bandwidth masuk dan 50,28 Tbps untuk bandwidth keluar.
Use Case Diagram
Akun Pengguna:
- Pengguna Baru:
- Registrasi: Pengguna baru harus melakukan proses registrasi terlebih dahulu. Data registrasi akan disimpan di dalam database.
- Verifikasi Akun: Pengguna mungkin diminta untuk melakukan verifikasi akun mereka melalui email atau cara lainnya.
- Pengguna Terdaftar:
- Masuk: Pengguna yang sudah terdaftar dapat masuk menggunakan email dan password mereka.
Beranda:
- Setelah login, pengguna akan diarahkan ke halaman utama.
- Di halaman utama, pengguna akan menemukan:
- Gambar dan video dari akun yang mereka ikuti.
- Link ke halaman cerita (story page).
- Postingan terbaru akan ditampilkan di bagian atas halaman.
Interaksi Pengguna:
- Pengguna memiliki opsi untuk mengikuti atau berhenti mengikuti akun orang lain.
- Pengguna juga dapat melakukan siaran langsung (live streaming).
Pengaturan:
- Pengguna dapat mengakses menu pengaturan (setting).
- Di pengaturan, pengguna dapat:
- Melihat cerita yang sudah kadaluwarsa atau postingan yang diarsipkan.
- Membatalkan blokir terhadap pengguna lain.
- Mengajukan permintaan verifikasi akun (mungkin dengan biaya).
Low Level Design
Komponen Utama:
- Layanan Pengguna:
- Mengelola proses pendaftaran, masuk, autentikasi, dan pengelolaan profil pengguna.
- Menyimpan informasi pengguna seperti username, email, biografi, foto profil, dan lain-lain.
- Terhubung dengan penyedia autentikasi sosial (seperti Facebook, Google) untuk integrasi.
- Layanan Posting:
- Mengurus pengunggahan, pengeditan, dan penghapusan gambar dan video.
- Menyimpan informasi tambahan dari posting seperti teks deskripsi, tagar, lokasi, waktu penciptaan, dan lain-lain.
- Mengolah media yang diunggah untuk mengubah ukuran, menerapkan filter, dan membuat gambar miniatur.
- Menangani proses transkoding gambar dan video agar kompatibel dengan berbagai perangkat dan resolusi.
- Layanan Umpan Berita:
- Membuat aliran berita yang disesuaikan untuk setiap pengguna berdasarkan akun yang mereka ikuti, interaksi, aktivitas, dan keterlibatan.
- Menggunakan platform terdistribusi seperti Apache Kafka atau RabbitMQ untuk mengirim pembaruan dan pemberitahuan secara real-time.
- Memanfaatkan caching layer seperti Redis untuk mengoptimalkan akses ke aliran berita dan mengurangi beban pada database.
- Layanan Penyimpanan:
- Menyimpan gambar dan video yang diunggah dengan efisiensi dan keandalan.
- Mengadopsi solusi penyimpanan objek yang dapat disesuaikan seperti Amazon S3, Google Cloud Storage, atau Azure Blob Storage.
- Menerapkan redundansi dan strategi pemulihan bencana untuk melindungi data.
- Layanan Pencarian:
- Memfasilitasi pencarian berdasarkan pengguna, tagar, dan lokasi.
- Mengoptimalkan indeksasi pengguna, posting, dan tagar berdasarkan kriteria yang relevan.
- Mengimplementasikan algoritma pencarian dan indeksasi yang efisien untuk memastikan hasil yang cepat dan akurat.
- Layanan Komentar:
- Mengelola penambahan, pengeditan, dan penghapusan komentar pada posting.
- Mengelola jejak komentar dan hubungan antara komentar induk dan anak.
- Memberikan notifikasi kepada pengguna tentang komentar baru pada postingan mereka sendiri atau komentar yang mereka ikuti.
- Layanan Pemberitahuan:
- Memberitahu pengguna tentang kejadian penting seperti suka, komentar, tag, dan pengikut baru.
- Mengirimkan pemberitahuan ke perangkat mobile menggunakan platform seperti Firebase Cloud Messaging atau Amazon SNS.
- Memanfaatkan sistem antrian untuk mengirimkan notifikasi secara asinkron.
- Layanan Analisis (Analytics Service):
- Memantau interaksi pengguna, performa posting, dan penggunaan platform secara komprehensif.
- Mengumpulkan informasi mengenai tampilan, jumlah suka, komentar, berbagi, dan klik.
- Memberikan analisis untuk meningkatkan pengalaman pengguna, meningkatkan rekomendasi konten, dan meningkatkan efektivitas penargetan iklan.
Mengapa Kita Perlu Cache?
- Kami menggunakan cache untuk menyimpan data guna menangani jumlah pembacaan yang besar.
- Ini memperbaiki pengalaman pengguna dengan mempercepat proses pengambilan data.
- Kami juga menerapkan lazy loading, yang mengurangi waktu menunggu untuk pengguna.
- Ini memungkinkan konten dimuat saat pengguna menggulir, menghemat bandwidth, dan memfokuskan pada konten yang sedang dilihat pengguna.
- Ini mengurangi waktu yang dibutuhkan untuk melihat atau mencari foto atau video tertentu di Instagram.
High Level Design
Gambaran Umum:
Pendekatan desain ini menguraikan sistem Instagram secara keseluruhan, menjelaskan bagian inti dan hubungan di antara mereka. Sistem ini memungkinkan pengguna untuk memuat, menampilkan, dan mencari foto serta video.
Komponen:
- Client: Aplikasi mobile, aplikasi web, dan antarmuka API yang digunakan oleh pengguna untuk berinteraksi dengan sistem.
- Autentikasi & Otorisasi: Mengelola proses login pengguna, registrasi, dan kontrol akses.
- Manajemen Konten: Mengurus konten yang dihasilkan pengguna seperti foto, video, siaran langsung, cerita, dan pesan.
- Pembuatan Feed: Menyesuaikan feed untuk setiap pengguna berdasarkan pengguna yang mereka ikuti, aktivitas, dan interaksi.
- Graf Sosial (Social Graph): Melacak relasi antar pengguna seperti mengikuti, pengikut, dan teman.
- Penemuan & Pencarian: Memungkinkan pencarian pengguna, tagar, lokasi, dan konten.
- Pemberitahuan: Memberitahu pengguna tentang kejadian penting seperti suka, komentar, mention, dan pengikut baru.
- Analitik & Pelaporan: Memantau interaksi pengguna, kinerja konten, dan penggunaan platform secara keseluruhan.
Interaksi:
- Pengguna membuat konten:
- Klien mengunggah foto atau video.
- Manajemen Konten menyimpan media serta informasi terkait.
- Pembuatan Umpan Berita mengupdate feed untuk pengguna dan pengikut yang relevan.
- Pemberitahuan memberitahu pengguna yang terlibat.
- Pengguna berinteraksi dengan konten:
- Klien melakukan interaksi seperti menyukai, mengomentari, atau membagikan.
- Manajemen Konten dan Grafik Sosial mengupdate informasi terkait.
- Pembuatan Umpan Berita dapat memperbarui feed berdasarkan interaksi baru.
- Pemberitahuan memberitahu pengguna yang tertarik.
- Pengguna menemukan konten baru:
- Pengguna menggunakan fitur pencarian.
- Penemuan & Pencarian menemukan konten yang relevan.
- Pengguna menampilkan hasil pencarian.
- Pengguna mengelola koneksi:
- Pengguna mengirim permintaan untuk mengikuti atau berhenti mengikuti.
- Social graph mengupdate koneksi.
- Pembuatan Umpan Berita menyesuaikan feed berdasarkan perubahan hubungan tersebut.
- Pengguna memantau aktivitas:
- Pengguna mengecek notifikasi yang muncul di aplikasi.
- Pemberitahuan memberikan update tentang peristiwa yang relevan kepada pengguna.
Pertimbangan Desain Utama:
- Skalabilitas: Sistem harus mampu menangani jumlah pengguna yang besar dan volume data yang signifikan.
- Kinerja: Menyediakan waktu respons yang cepat untuk interaksi pengguna dan pengiriman konten.
- Keandalan: Memastikan tingkat ketersediaan yang tinggi dan mencegah kehilangan data.
- Keamanan: Melindungi keamanan data dan privasi pengguna.
- Keterlibatan: Mengembangkan fitur yang mendorong interaksi aktif pengguna dan pembuatan konten.



Comments
Post a Comment