TUGAS 13 - PERANCANGAN PERANGKAT LUNAK (A)
- Dapatkan link
- X
- Aplikasi Lainnya
TUGAS 13 - PERANCANGAN PERANGKAT LUNAK (A)
Desain Sistem Instagram
Apa itu Instagram?
Persyaratan Desain Sistem Instagram
Persyaratan Fungsional
Berikut adalah beberapa persyaratan fungsional untuk desain sistem Instagram:
- Mengunggah Foto dan Video: Pengguna dapat mengunggah foto dan video.
- Mengikuti dan Berhenti Mengikuti Pengguna: Pengguna dapat mengikuti dan berhenti mengikuti pengguna lain.
- Menyukai dan Tidak Menyukai Postingan: Pengguna dapat memberikan like atau menghapus like pada postingan.
- Mencari Foto dan Video: Pengguna dapat mencari konten berdasarkan keterangan dan lokasi.
- Menghasilkan Feed Berita: Pengguna dapat melihat feed yang berisi foto dan video dari pengguna yang mereka ikuti secara kronologis.
Persyaratan Non-Fungsional
- Skalabilitas: Sistem harus dapat menangani jutaan pengguna dengan peningkatan sumber daya komputasi dan penyimpanan.
- Latensi: Waktu yang dibutuhkan untuk menghasilkan feed berita harus rendah.
- Ketersediaan: Sistem harus sangat andal dan tersedia setiap saat.
- Daya Tahan: Konten yang diunggah (foto dan video) tidak boleh hilang.
- Konsistensi: Konten baru mungkin memerlukan waktu untuk muncul di feed pengguna di wilayah yang jauh, namun konsistensi tetap harus terjaga.
- Keandalan: Sistem harus mampu mentolerir kegagalan perangkat keras dan perangkat lunak.
Estimasi Kapasitas untuk Desain Sistem Instagram
Asumsi:
- 1 miliar pengguna, dengan 500 juta pengguna aktif harian.
- 60 juta foto dan 35 juta video dibagikan setiap hari.
- Ukuran maksimum setiap foto: 3 MB.
- Ukuran maksimum setiap video: 150 MB.
- Rata-rata, setiap pengguna mengirimkan 20 permintaan per hari.
Penyimpanan Harian:
- Foto: 60 juta foto/hari * 3 MB = 180 TB/hari
- Video: 35 juta video/hari * 150 MB = 5250 TB/hari
- Total: 180 TB + 5250 TB = 5430 TB/hari
Penyimpanan Tahunan: 5430 TB/hari * 365 hari = 1981.95 PB
Estimasi Bandwidth:
- Bandwidth harian: 5430 TB/86400 detik ≈ 62.84 GB/detik ≈ 502.8 Gbps
- Bandwidth masuk ≈ 502.8 Gbps
- Dengan rasio pembaca terhadap penulis 100:1, bandwidth keluar yang dibutuhkan ≈ 50.28 Tbps
Diagram Kasus Penggunaan untuk Desain Sistem Instagram
Diagram di atas menggambarkan bagaimana pengguna berinteraksi dengan Instagram. Pengguna baru akan mendaftar dan memverifikasi profil mereka. Pengguna yang sudah terdaftar akan masuk dengan email dan kata sandi. Di halaman utama, pengguna dapat melihat postingan, cerita, dan melakukan siaran langsung. Mereka dapat mengikuti atau berhenti mengikuti pengguna lain, memblokir pengguna, serta melihat cerita dan postingan yang diarsipkan. Ada juga opsi untuk mendapatkan akun terverifikasi.
Desain Tingkat Rendah (LLD) Sistem Instagram
Layanan Pengguna:
- Mengelola pendaftaran, login, otentikasi, dan profil pengguna.
- Menyimpan data pengguna seperti nama pengguna, email, bio, dan foto profil.
- Terintegrasi dengan penyedia otentikasi sosial (Facebook, Google).
Layanan Posting:
- Mengelola unggahan, pengeditan, dan penghapusan foto dan video.
- Menyimpan metadata posting seperti keterangan, hashtag, lokasi, dan timestamp.
- Memproses media yang diunggah untuk resizing, filtering, dan pembuatan thumbnail.
- Mengelola transcoding foto dan video untuk perangkat dan resolusi berbeda.
Layanan Feed:
- Menghasilkan feed berita yang dipersonalisasi berdasarkan pengguna yang diikuti, suka, aktivitas, dan keterlibatan.
- Memanfaatkan sistem terdistribusi seperti Apache Kafka atau RabbitMQ untuk pembaruan real-time.
- Menggunakan cache seperti Redis untuk pengambilan feed yang cepat dan mengurangi beban database.
Layanan Penyimpanan:
- Menyimpan foto dan video yang diunggah secara 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.
Layanan Pencarian:
- Memungkinkan pencarian pengguna, hashtag, dan lokasi.
- Mengindeks pengguna, posting, dan hashtag berdasarkan parameter relevan.
- Menggunakan algoritma pencarian yang efisien untuk hasil yang cepat dan akurat.
Layanan Komentar:
- Mengelola penambahan, pengeditan, dan penghapusan komentar pada posting.
- Melacak utas komentar dan hubungan induk-anak.
- Memberi tahu pengguna tentang komentar baru pada posting mereka.
Layanan Notifikasi:
- Memberi tahu pengguna tentang peristiwa penting seperti suka, komentar, mention, dan pengikut baru.
- Mengirim pemberitahuan ke perangkat mobile melalui platform seperti Firebase Cloud Messaging atau Amazon SNS.
- Memanfaatkan antrian untuk pengiriman pemberitahuan secara asinkron.
Layanan Analitik:
- Melacak keterlibatan pengguna, performa 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 menyasar iklan.
Mengapa kita membutuhkan caching untuk menyimpan data? Meng-cache data membantu menangani jutaan permintaan baca, meningkatkan pengalaman pengguna dengan mempercepat proses pengambilan. Lazy loading juga mengurangi waktu tunggu klien dan menghemat bandwidth dengan memuat konten saat pengguna menggulir. Ini meningkatkan latensi untuk melihat atau mencari foto atau video di Instagram.
Desain Tingkat Tinggi (HLD) Sistem Instagram
Sistem ini memungkinkan pengguna untuk mengunggah, melihat, dan mencari gambar serta video. Sistem juga harus mendukung interaksi sosial seperti mengikuti pengguna lain. Berikut adalah komponen utama dan interaksi dalam desain sistem Instagram:
Komponen:
- Klien: Aplikasi seluler, aplikasi web, dan API untuk interaksi pengguna.
- Autentikasi & Otorisasi: Mengelola login, registrasi, dan kontrol akses pengguna.
- Manajemen Konten: Mengelola konten seperti foto, video, siaran langsung, cerita, dan pesan.
- Pembuatan Feed: Memperbarui feed berita pengguna berdasarkan interaksi dan keterlibatan.
- Graf Sosial: Melacak hubungan antar pengguna (mengikuti, pengikut, teman).
- Penemuan & Pencarian: Memungkinkan pencarian konten, pengguna, hashtag, dan lokasi.
- Notifikasi: Memberi tahu pengguna tentang peristiwa penting.
- Analitik & Pelaporan: Melacak keterlibatan pengguna dan performa konten.
Interaksi:
- Pengguna membuat konten: Mengunggah foto/video melalui klien. Manajemen Konten menyimpan media dan metadata. Pembuatan Feed memperbarui feed pengguna dan pengikut terkait. Notifikasi memberi tahu pengguna yang tertarik.
- Pengguna berinteraksi dengan konten: Mengirim like/komentar/bagikan melalui klien. Manajemen Konten dan Graf Sosial memperbarui data. Pembuatan Feed mengatur ulang feed berdasarkan interaksi baru. Notifikasi memberi tahu pengguna yang tertarik.
- Pengguna menemukan konten baru: Menggunakan fungsionalitas pencarian. Penemuan & Pencarian mengidentifikasi konten relevan. Klien menampilkan hasil pencarian.
- Pengguna mengelola koneksi: Mengirim permintaan mengikuti/berhenti mengikuti. Graf Sosial memperbarui koneksi. Pembuatan Feed menyesuaikan feed berdasarkan perubahan hubungan.
- Pengguna memonitor aktivitas: Memeriksa feed notifikasi. Notifikasi memberikan pembaruan tentang peristiwa yang relevan.
Pertimbangan Desain Utama
- Skalabilitas: Sistem harus dapat menangani jutaan pengguna dan volume data yang besar.
- Performa: Memberikan waktu respons cepat untuk interaksi pengguna dan pengiriman konten.
- Keandalan: Memastikan ketersediaan tinggi dan mencegah kehilangan data.
- Keamanan: Melindungi data dan privasi pengguna.
- Keterlibatan: Mendesain fitur yang mendorong interaksi pengguna dan pembuatan konten.
Pemilihan Database untuk Penyimpanan Data
Memilih jenis database yang tepat untuk sistem Instagram adalah penting. Data yang relasional dan membutuhkan urutan kronologis serta durabilitas dapat dipenuhi oleh database berbasis SQL. Selain itu, kemampuan untuk melakukan kueri relasional seperti mengambil pengikut atau gambar berdasarkan ID pengguna menjadi alasan tambahan memilih SQL.
Mikro Layanan untuk Desain Sistem Instagram
Layanan pembuatan gambar dan feed digunakan sebagai arsitektur mikro layanan. Arsitektur ini memungkinkan pengiriman aplikasi besar dan kompleks dengan cepat dan dapat diandalkan. Mikro layanan memungkinkan deploy independen, fleksibilitas, dan kepemilikan tim kecil.
Skalabilitas untuk Desain Sistem Instagram
Skalabilitas mengacu pada kemampuan sistem untuk tetap berfungsi dengan baik di bawah beban kerja yang meningkat. Untuk meningkatkan skalabilitas, lebih banyak server dapat ditambahkan ke lapisan layanan aplikasi, dan jumlah database dapat ditingkatkan untuk menyimpan data pengguna yang terus bertambah.
Kesimpulan
Desain sistem Instagram adalah arsitektur kompleks yang memprioritaskan skalabilitas, ketersediaan, keamanan, dan pengalaman pengguna. Keberhasilan platform ini didukung oleh infrastruktur backend yang kokoh, yang mampu menangani basis pengguna besar dan konten dinamis. Desain ini mencakup berbagai komponen dan interaksi yang mendukung operasi harian dan pertumbuhan platform secara keseluruhan.
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar