PPL - Tugas 9 Desain Instagram

Revanantyo Dwigantara

5025211113

Persyaratan Fungsional

  1. Unggah Foto dan Video: Pengguna harus dapat mengunggah konten visual ke platform.

  2. Tambahkan Keterangan dan Lokasi: Pengguna dapat menambahkan teks keterangan dan informasi lokasi pada setiap postingan.

  3. Pengelolaan Hubungan: Pengguna memiliki kemampuan untuk mengikuti dan berhenti mengikuti pengguna lain.

  4. Interaksi pada Postingan: Fitur like dan komentar harus tersedia untuk memfasilitasi interaksi antar pengguna.

  5. Feed Berdasarkan Pengikut: Sistem harus mampu menyusun feed atau timeline berdasarkan postingan dari pengguna yang diikuti.

Persyaratan Non-Fungsional

  1. Ketersediaan Tinggi: Aplikasi harus dirancang dengan downtime minimal untuk ketersediaan yang optimal.

  2. Skalabilitas: Sistem harus mampu menangani ratusan juta pengguna aktif secara bersamaan.

  3. Latensi Rendah: Operasi seperti pemuatan feed harus memiliki waktu respons yang rendah untuk pengalaman pengguna yang lancar.

  4. Keandalan dan Toleransi Kesalahan: Backend harus dirancang untuk menangani kegagalan tanpa kehilangan data atau gangguan layanan yang signifikan.

  5. Integritas Konten: Setiap konten yang diunggah harus disimpan dengan aman dan tidak boleh hilang.

  6. Konsistensi Feed: Sistem harus dapat menjaga konsistensi pada feed, meskipun ada keterlambatan dalam penampilan postingan kepada pengikut.

  7. Optimasi Penyimpanan dan Bandwidth: Penggunaan efisien ruang penyimpanan dan bandwidth jaringan harus dioptimalkan.

  8. Caching untuk Performa: Penggunaan caching harus diterapkan untuk meningkatkan performa aplikasi.

Estimasi Kapasitas

Estimasi Lalu Lintas: Dengan 500 juta pengguna aktif harian dan sekitar 5 juta unggahan per hari, rata-rata 57 unggahan per detik diperkirakan.

Estimasi Penyimpanan: Jika ukuran rata-rata unggahan adalah 200KB, maka sekitar 1TB penyimpanan dibutuhkan per hari.

Desain Komponen

  • Klien: Aplikasi seluler atau desktop terhubung ke server backend melalui API REST.
  • Load Balancer: Digunakan untuk mendistribusikan lalu lintas di antara server backend.
  • Layanan Gambar: Menyediakan API untuk mengelola unggahan gambar.
  • S3: Penyimpanan objek untuk menyimpan gambar dengan skala dan keamanan yang baik.
  • CloudFront: CDN untuk meningkatkan kecepatan pengiriman gambar.
  • Layanan Pembuatan Feed: Bertanggung jawab atas pembuatan feed pengguna.
  • Redis Cache: Digunakan untuk caching data untuk mengurangi latensi.

Berikut adalah beberapa endpoint API yang umumnya terdapat dalam desain sistem aplikasi mirip Instagram:

1. Upload Image

POST/api/image/upload

Request Body:

{ "image": "base64_encoded_image_data", "caption": "optional_caption_text" }

Response:

{ "imageId": "unique_image_identifier" }

2. Get User Feed

GET/api/feed

Response:

{ "feeds": [ { "imageId": "unique_image_identifier", "imageUrl": "image_url", "caption": "caption_text" }, { "imageId": "unique_image_identifier", "imageUrl": "image_url", "caption": "caption_text" }, ... ] }

3. Follow User

POST/api/user/follow/{userId}

Response: 200 OK (No content)

4. Search Images

GET/api/image/search?keyword={searchKeyword}

Response:

{ "feeds": [ { "imageId": "unique_image_identifier", "imageUrl": "image_url", "caption": "caption_text" }, { "imageId": "unique_image_identifier", "imageUrl": "image_url", "caption": "caption_text" }, ... ] }

5. User Registration

POST/api/user/register

Request Body:

{ "username": "user_name", "email": "user_email", "password": "user_password" }

Response: 200 OK (No content)

6. Like Image

POST/api/image/like/{imageId}

Response: 200 OK (No content)

7. Comment on Image

POST/api/image/comment/{imageId}

Request Body:

{ "comment": "comment_text" }

Response: 200 OK (No content)

8. Update Profile

PUT/api/user/profile

Request Body:

{ "username": "new_username", "bio": "new_bio_info" }

Response: 200 OK (No content)

9. Delete Image

DELETE/api/image/{imageId}

Response: 200 OK (No content)

10. Get User Profile

GET/api/user/profile/{userId}

Response:

{ "username": "user_name", "bio": "user_bio_info" }

High Level Design



Use Case Diagram



Diagram ini mengilustrasikan fungsi-fungsi utama aplikasi seperti registrasi pengguna, interaksi dengan konten, manajemen hubungan, dan pengaturan akun.

Komentar

Postingan populer dari blog ini

PPL - Evaluasi Tengah Semester

PPL - Tugas 5 Low Level Design