PPL - Tugas 9 Desain Instagram
Revanantyo Dwigantara
5025211113
Persyaratan Fungsional
Unggah Foto dan Video: Pengguna harus dapat mengunggah konten visual ke platform.
Tambahkan Keterangan dan Lokasi: Pengguna dapat menambahkan teks keterangan dan informasi lokasi pada setiap postingan.
Pengelolaan Hubungan: Pengguna memiliki kemampuan untuk mengikuti dan berhenti mengikuti pengguna lain.
Interaksi pada Postingan: Fitur like dan komentar harus tersedia untuk memfasilitasi interaksi antar pengguna.
Feed Berdasarkan Pengikut: Sistem harus mampu menyusun feed atau timeline berdasarkan postingan dari pengguna yang diikuti.
Persyaratan Non-Fungsional
Ketersediaan Tinggi: Aplikasi harus dirancang dengan downtime minimal untuk ketersediaan yang optimal.
Skalabilitas: Sistem harus mampu menangani ratusan juta pengguna aktif secara bersamaan.
Latensi Rendah: Operasi seperti pemuatan feed harus memiliki waktu respons yang rendah untuk pengalaman pengguna yang lancar.
Keandalan dan Toleransi Kesalahan: Backend harus dirancang untuk menangani kegagalan tanpa kehilangan data atau gangguan layanan yang signifikan.
Integritas Konten: Setiap konten yang diunggah harus disimpan dengan aman dan tidak boleh hilang.
Konsistensi Feed: Sistem harus dapat menjaga konsistensi pada feed, meskipun ada keterlambatan dalam penampilan postingan kepada pengikut.
Optimasi Penyimpanan dan Bandwidth: Penggunaan efisien ruang penyimpanan dan bandwidth jaringan harus dioptimalkan.
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
Posting Komentar