PPL: Pertemuan 13

 

Desain System Aplikasi Instagram


Deskripsi Aplikasi

Instagram adalah platform media sosial yang memungkinkan pengguna untuk berbagi foto dan video, mengikuti teman, selebriti, serta berbagai konten menarik lainnya. Aplikasi ini dirancang untuk memberikan pengalaman berbagi yang kaya dan interaktif, didukung oleh berbagai fitur sosial seperti like, komentar, dan pesan langsung. Desain sistem aplikasi Instagram harus memastikan kinerja yang tinggi, skalabilitas, keamanan, dan pengalaman pengguna yang optimal.


Persyaratan Fungsional

1. Autentikasi dan Otentikasi Pengguna:

   - Pengguna dapat membuat akun baru.

   - Pengguna dapat login menggunakan kredensial mereka.

   - Pengguna dapat melakukan logout.

   - Mendukung login sosial melalui Facebook, Google, dll.


2. Profil Pengguna:

   - Pengguna dapat melihat dan mengedit profil mereka (bio, gambar profil, dll).

   - Pengguna dapat mengikuti dan berhenti mengikuti pengguna lain.

   - Pengguna dapat melihat daftar pengikut dan pengguna yang mereka ikuti.


3. Postingan:

   - Pengguna dapat mengunggah foto dan video.

   - Pengguna dapat mengedit dan menghapus postingan mereka.

   - Pengguna dapat menambahkan keterangan, tagar, dan lokasi ke postingan.

   - Postingan ditampilkan di feed pengguna dan pengikut mereka.


4. Interaksi Sosial:

   - Pengguna dapat memberikan suka (like) pada postingan.

   - Pengguna dapat memberikan komentar pada postingan.

   - Pengguna dapat mengedit dan menghapus komentar mereka.

   - Pengguna dapat berbagi postingan ke pengguna lain melalui pesan langsung.


5. Feed:

   - Pengguna dapat melihat feed yang dipersonalisasi berdasarkan aktivitas dan pengikut mereka.

   - Feed diperbarui secara real-time.


6. Pemberitahuan:

   - Pengguna mendapatkan notifikasi tentang suka, komentar, sebutan, dan pengikut baru.

   - Notifikasi dikirimkan melalui push notifications atau email.


7. Pencarian:

   - Pengguna dapat mencari pengguna lain, hashtag, dan lokasi.

   - Pencarian menampilkan hasil yang relevan dan cepat.


8. Pesan Langsung:

   - Pengguna dapat mengirim dan menerima pesan langsung.

   - Mendukung pengiriman foto dan video dalam pesan.


9. Keamanan dan Privasi:

   - Mendukung pengaturan privasi akun (publik atau pribadi).

   - Pengguna dapat memblokir dan melaporkan pengguna lain.

   - Menyediakan verifikasi dua langkah untuk keamanan tambahan.


Persyaratan Non-Fungsional    

1. Kinerja dan Skalabilitas:

   - Aplikasi harus mampu menangani jutaan pengguna secara bersamaan.

   - Respon aplikasi harus cepat dengan waktu muat yang minimal.

   - Sistem harus dapat diskalakan secara horizontal untuk mendukung pertumbuhan pengguna.


2. Keandalan dan Ketersediaan:

   - Aplikasi harus memiliki waktu kerja (uptime) yang tinggi, minimal 99.9%.

   - Sistem harus memiliki mekanisme pemulihan bencana dan backup reguler.


3. Keamanan:

   - Data pengguna harus dilindungi dengan enkripsi baik dalam transit maupun saat disimpan.

   - Implementasi protokol keamanan untuk mencegah serangan seperti SQL injection, XSS, dll.

   - Sistem harus mematuhi regulasi privasi data (misalnya GDPR).


4. Penggunaan Sumber Daya:

   - Aplikasi harus efisien dalam penggunaan sumber daya server.

   - Optimasi penggunaan bandwidth untuk menghemat data pengguna.


5. Portabilitas dan Kompatibilitas:

   - Aplikasi harus kompatibel dengan berbagai perangkat dan sistem operasi (iOS, Android, web).

   - Dukungan untuk berbagai resolusi layar dan orientasi perangkat.


6. Pengalaman Pengguna (UX):

   - Antarmuka pengguna harus intuitif dan mudah digunakan.

   - Navigasi aplikasi harus lancar dan konsisten.


7. Pemeliharaan dan Dukungan:

   - Kode harus ditulis dengan baik dan terdokumentasi untuk memudahkan pemeliharaan.

   - Menyediakan dukungan teknis dan update reguler untuk aplikasi.


8. Kepatuhan:

   - Sistem harus mematuhi semua regulasi yang berlaku terkait privasi dan keamanan data pengguna.

   - Memastikan bahwa aplikasi mematuhi persyaratan dan pedoman platform (misalnya, App Store, Google Play).


Low Level Design


Layanan Pengguna (User Service):
  • Menyimpan dan mengelola data pengguna.
  • Menyediakan otentikasi dan otorisasi untuk akses aplikasi.
  • Terintegrasi dengan penyedia otentikasi sosial (misalnya, Facebook, Google).
Layanan Postingan (Post Service):

  • Mengelola pengunggahan, pengeditan, dan penghapusan postingan.
  • Menyimpan metadata yang terkait dengan setiap postingan.
Layanan Media (Media Service):
  • Memproses media yang diunggah.
  • Mengelola penyimpanan media dengan efisiensi tinggi.
Layanan Feed Pengguna (User Feeds Service):
  • Menghasilkan feed yang dipersonalisasi untuk pengguna.
  • Mengelola pembaruan feed secara real-time menggunakan sistem messaging.
Layanan Pencarian (Search Service):
  • Mengindeks dan mencari pengguna, hashtag, dan lokasi.
  • Menyediakan hasil pencarian yang cepat dan relevan.
Layanan Komentar (Comment Service):
  • Mengelola penambahan, pengeditan, dan penghapusan komentar.
Layanan Pemberitahuan (Notification Service):
  • Mengirim notifikasi ke pengguna tentang peristiwa penting seperti suka, komentar, dan pengikut baru.
Layanan Penyimpanan (Storage Service):
  • Menyimpan data dengan solusi penyimpanan objek yang dapat diskalakan seperti Amazon S3.
Layanan Analisis (Analytics Service):
  • Melacak dan menganalisis keterlibatan pengguna dan kinerja platform.


High Level Design




1. Client

   - Deskripsi: Aplikasi mobile/desktop yang terhubung ke server backend melalui REST API yang telah didefinisikan.
   - Fungsi Utama: Mengunggah dan mengunduh foto dan video, mengikuti dan berhenti mengikuti pengguna, menyukai dan mengomentari postingan, serta melihat feed.

2. Load Balancer

   - Deskripsi: Menggunakan load balancer untuk mendistribusikan lalu lintas antara server yang berbeda.
   - Fungsi Utama: Meningkatkan ketersediaan sistem dan mendistribusikan lalu lintas jika ada server yang turun.

3. Media Service

   - Deskripsi: Bertanggung jawab menyediakan API untuk mengunggah media (foto dan video) dan mendapatkan metadata media.
   - Fungsi Utama: Mengunggah media ke S3 Bucket dan mengembalikan jalur media di S3 yang akan digunakan oleh klien untuk memuat media di aplikasi mereka.

4. User Service

   - Deskripsi: Menangani semua operasi yang berkaitan dengan pengguna, termasuk pendaftaran, login, dan manajemen profil.
   - Fungsi Utama: Mengelola data pengguna di User DB dan menyediakan antarmuka untuk operasi pengguna.

5. News Feed Service

   - Deskripsi: Bertanggung jawab untuk menghasilkan dan mengelola feed pengguna.
   - Fungsi Utama: Mengambil data dari News Feed DB dan News Feed Cache untuk menampilkan feed yang dipersonalisasi.

6. Social Service

   - Deskripsi: Menangani interaksi sosial seperti suka, komentar, dan hubungan pengikut.
   - Fungsi Utama: Mengelola data interaksi sosial di Social DB dan berinteraksi dengan layanan notifikasi.

7. S3 Bucket for Media

   - Deskripsi: Penyimpanan objek untuk menyimpan media yang diunggah oleh pengguna.
   - Fungsi Utama: Menyimpan media dengan skala yang dapat ditingkatkan dan biaya yang murah. Mengintegrasikan dengan AWS CloudFront untuk rendering media yang lebih cepat di aplikasi pengguna.

8. CloudFront

   - Deskripsi: Layanan content delivery network (CDN) dari Amazon yang dibangun untuk performa tinggi, keamanan, dan kenyamanan pengembang.
   - Fungsi Utama: Mempercepat rendering media di aplikasi pengguna.

9. Media DB

   - Deskripsi: Penyimpanan untuk metadata media yang diunggah oleh pengguna.
   - Fungsi Utama: Menyimpan informasi tentang media seperti jalur di S3, waktu unggah, dan pengguna yang mengunggah.

10. User DB

    - Deskripsi: Penyimpanan data pengguna.
    - Fungsi Utama: Menyimpan data pengguna seperti informasi profil, kredensial, dan pengaturan privasi.

11. News Feed DB (Cassandra DB)

    - Deskripsi: Penyimpanan untuk data feed pengguna.
    - Fungsi Utama: Menyimpan feed pengguna dan mendukung kueri cepat untuk menampilkan feed.

12. News Feed Cache (Redis)

    - Deskripsi: Cache untuk meningkatkan kinerja pengambilan feed.
    - Fungsi Utama: Menyimpan data feed yang sering diakses untuk pengambilan cepat.

13. Social DB (Neo4j)

    - Deskripsi: Penyimpanan data interaksi sosial.
    - Fungsi Utama: Menyimpan hubungan sosial pengguna seperti suka, komentar, dan pengikut menggunakan basis data graf.

14. SNS (Simple Notification Service)

    - Deskripsi: Layanan untuk mengelola dan mengirim notifikasi.
    - Fungsi Utama: Mengirim notifikasi push kepada pengguna untuk event seperti pengikut baru, suka, komentar, dll.

15. Lambda

    - Deskripsi: Fungsi AWS Lambda untuk menjalankan kode secara otomatis dalam menanggapi event.
    - Fungsi Utama: Menangani logika pemberitahuan dan pemrosesan event tanpa perlu pengelolaan server.



Use Case Diagram 



Hubungan antara Use Case
  • Pengguna baru akan melakukan pendaftaran terlebih dahulu dan kemudian melakukan login untuk mengakses fitur-fitur lainnya.
  • Setelah login, pengguna dapat mengunggah foto, mengedit detail foto, memberikan komentar, serta mengedit atau menghapus komentar.
  • Pengguna juga dapat mengikuti akun lain untuk mendapatkan pembaruan dari akun yang diikuti.
  • Admin memiliki kontrol penuh atas pengelolaan pengguna dan konten dalam sistem, memastikan bahwa semua aktivitas berjalan sesuai dengan kebijakan yang ditetapkan.
  • Admin dapat menyetujui atau menghapus konten yang diunggah oleh pengguna dan juga dapat mengelola informasi produk jika sistem mencakup fitur e-commerce




Comments

Popular posts from this blog

PPL: Pertemuan 7

ETS PPL

PPL: Pertemuan 14