Tugas 9 PPL - Desain System Aplikasi Instagram

 Nama : I Gusti Ngurah Ervan Juli Ardana NRP : 5025211205 Kelas : Perancangan Perangkat Lunak A Tahun : 2024


Pada pertemuan kali ini pada kelas Perancangan Perangkat Lunak A, kami diperkenalkan dengan Desain Sistem Aplikasi Instagram. Pada pertemuan ini, saya akan  akan membuat kembali Desain Sistem Aplikasi Instagram


Design System Aplikasi Instagram



  • Deskripsi Aplikasi

Instagram adalah platform media sosial yang memungkinkan pengguna untuk berbagi foto dan video dengan pengikut mereka. Diluncurkan pada tahun 2010, Instagram telah berkembang menjadi salah satu platform yang paling populer di dunia, dengan lebih dari satu miliar pengguna aktif bulanan pada saat terakhir data tersedia. Aplikasi ini memungkinkan pengguna untuk mengunggah foto dan video dari perangkat mereka, memberikan filter dan efek khusus, serta menambahkan keterangan dan tagar untuk meningkatkan visibilitasnya. Pengguna juga dapat mengatur privasi postingan mereka, memilih untuk membuatnya publik, pribadi, atau hanya terlihat oleh pengikut tertentu. Selain berbagi konten, pengguna Instagram dapat berinteraksi dengan konten yang dibagikan oleh pengguna lain dengan cara seperti menyukai, mengomentari, dan menyimpan postingan. Mereka juga dapat mengirim pesan langsung ke pengguna lain dan berbagi postingan secara pribadi.


  • Requirements

  • Kebutuhan Fungsional

  1. Autentikasi Pengguna: Pengguna harus bisa mendaftar dan masuk ke platform dengan aman menggunakan email, nomor telepon, atau akun media sosial mereka.

  2. Manage Profil Pengguna: Setiap pengguna harus memiliki profil yang menampilkan informasi dasar mereka, seperti nama, foto profil, bio, dan informasi kontak.

  3. Posting: Pengguna harus bisa membuat dan membagikan berbagai jenis postingan, seperti foto, video, dan cerita.

  4. News Feed: Pengguna harus memiliki majalah berita personal yang menampilkan konten dari akun yang mereka ikuti, berdasarkan minat dan preferensi mereka.

  5. Pencarian : Pengguna harus bisa menemukan konten dan pengguna baru melalui berbagai fungsionalitas pencarian, seperti pencarian berdasarkan nama pengguna, tagar, atau lokasi.

  6. Suka dan Komentar: Pengguna harus bisa menyukai dan mengomentari postingan yang dibagikan oleh pengguna lain.

  7. Pesan: Pengguna harus bisa berkomunikasi satu sama lain melalui pesan langsung, baik satu lawan satu atau dalam grup.

  8. Privasi dan Keamanan: Privasi dan keamanan pengguna harus dijamin dengan menerapkan langkah-langkah seperti enkripsi data, otentikasi dua faktor, dan moderasi konten.

  9. Notifikasi: Pengguna harus menerima notifikasi waktu nyata untuk tindakan yang terkait dengan akun mereka, seperti suka, komentar, dan pesan.

  10. Analytics and Insights: Platform harus menyediakan pengguna dengan analisis dan wawasan terkait kinerja akun mereka, seperti keterlibatan postingan, pertumbuhan pengikut, dan data demografis.

  11. Business Tools: Instagram juga menawarkan fitur bisnis, seperti iklan dan integrasi e-commerce, yang memungkinkan bisnis untuk mempromosikan produk dan layanan mereka di platform. Fungsionalitas ini harus dirancang dengan memperhatikan kebutuhan bisnis.

  12. Scaling: Sistem harus dirancang untuk menangani lalu lintas dan aktivitas pengguna yang tinggi, karena Instagram memiliki lebih dari 1 miliar pengguna aktif di seluruh dunia. Ini membutuhkan arsitektur yang dapat diskalakan yang dapat menangani volume permintaan dan penyimpanan data yang besar.


  • Kebutuhan Non-Fungsional

  1. Performa: Sistem harus mampu merespons permintaan pengguna dengan cepat, memastikan waktu tunggu yang sangat singkat.

  2. Skalabilitas: Sistem harus mampu mengelola peningkatan besar dalam jumlah pengguna dan konten, dengan fleksibilitas untuk menambah kapasitasnya.

  3. Keamanan: Sistem harus menjaga keamanan informasi pengguna, termasuk data login, konten yang diunggah, dan pesan pribadi.

  4. Reliabilitas: Sistem harus beroperasi dengan konsistensi dan keandalan tinggi, menjamin ketersediaan yang optimal.

  5. Usability: Antarmuka pengguna harus mudah digunakan dan dirancang dengan baik sehingga interaksi dengan sistem menjadi mudah bagi pengguna.


Berdasarkan requirements diatas, kita dapat menentukan estimasi kapasitas yang dapat digunakan aplikasi instagram.


  • Estimasi Kapasitas


  • Estimasi Traffic

  • Pengguna Aktif Harian: Instagram memiliki lebih dari 1 miliar pengguna aktif bulanan, dengan perkiraan 500 juta pengguna aktif harian. Dengan asumsi peningkatan 20% dalam jumlah pengguna aktif harian dalam setahun ke depan, kita dapat memperkirakan jumlah pengguna aktif harian menjadi 600 juta.


Pengguna Aktif Harian Saat Ini: 500 juta

Perkiraan Peningkatan (20%): 500 juta * 20% = 100 juta

Jumlah Pengguna Aktif Harian dalam Setahun ke Depan: 500 juta + 100 juta = 600 juta


  • Posting Harian: Berdasarkan statistik saat ini, pengguna Instagram membagikan sekitar 100 juta foto dan video setiap hari. Dengan asumsi peningkatan 20% dalam setahun ke depan, kita dapat memperkirakan jumlah postingan harian menjadi 120 juta.


Jumlah Postingan Harian Saat Ini: 100 juta

Perkiraan Peningkatan (20%): 100 juta * 20% = 20 juta

Jumlah Postingan Harian dalam Setahun ke Depan: 100 juta + 20 juta 

= 120 juta


Maka dari itu kita dapat menentukan, request per detik (RPS) yang harus ditangani

oleh sistem : 


Estimasi RPS untuk Posting Foto dan Video:

 RPS=(Jumlah Postingan Harian)/(Jumlah Detik dalam Sehari)

RPS=120,000,000/86,400

RPS≈1,389


  • Pesan Harian: Pengguna Instagram mengirim sekitar 10 miliar pesan langsung per bulan. Dengan asumsi bahwa setiap pengguna mengirim rata-rata 10 pesan per hari, kita dapat memperkirakan jumlah pesan harian menjadi 100 miliar.


Jumlah Pesan Langsung per Pengguna per Hari: 10

Jumlah Pengguna Aktif Harian: 600 juta

Jumlah Pesan Harian: 600 juta * 10 = 6 miliar

Jumlah Pesan Harian (dalam miliar): 6 miliar / 1000 = 100 miliar


Maka dari itu kita dapat menentukan, request per detik (RPS) yang harus ditangani

oleh sistem : 


Estimasi RPS untuk Pengiriman Pesan Langsung: 

RPS=(Jumlah Pesan Harian)/(Jumlah Detik dalam Sehari)

RPS=100,000,000,000/86,400 

RPS≈1,157,407

  1. Estimasi Storage

Dengan mengasumsikan ukuran foto rata-rata sebesar 500 KB dan ukuran video sebesar 50 MB, total penyimpanan yang diperlukan untuk postingan harian akan menjadi 6 PB. Dengan mengasumsikan ukuran pesan rata-rata sebesar 1 KB, total penyimpanan yang diperlukan untuk pesan harian akan menjadi 100 TB.


Ukuran Rata-rata Foto: 500 KB

Ukuran Rata-rata Video: 50 MB

Ukuran Foto dalam Byte: 500 KB * 1024 = 512,000 bytes

Ukuran Video dalam Byte: 50 MB * 1024 * 1024 = 52,428,800 bytes

Total Penyimpanan untuk Postingan Harian: (Jumlah Foto * Ukuran Foto) + (Jumlah Video * Ukuran Video) = (120 juta * 512,000 bytes) + (120 juta * 52,428,800 bytes) = 6 PB

Ukuran Rata-rata Pesan: 1 KB

Total Penyimpanan untuk Pesan Harian: Jumlah Pesan * Ukuran Pesan = 100 miliar * 1 KB 

= 100 TB


  1. Estimasi Bandwidth

Dengan mengasumsikan tingkat unggah foto rata-rata sebesar 50 Mbps dan tingkat unggah video sebesar 500 Mbps, total bandwidth yang diperlukan untuk postingan harian akan sekitar 6 Tbps. Dengan mengasumsikan tingkat unggah pesan rata-rata sebesar 1 Mbps, total bandwidth yang diperlukan untuk pesan harian akan sekitar 100 Gbps.


Tingkat Unggah Rata-rata Foto: 50 Mbps

Tingkat Unggah Rata-rata Video: 500 Mbps

Total Bandwidth untuk Postingan Harian: (Jumlah Foto * Tingkat Unggah Foto) + (Jumlah Video * Tingkat Unggah Video) = (120 juta * 50 Mbps) + (120 juta * 500 Mbps) = 6 Tbps

Tingkat Unggah Rata-rata Pesan: 1 Mbps

Total Bandwidth untuk Pesan Harian: Jumlah Pesan * Tingkat Unggah Pesan = 100 miliar * 1 Mbps 

= 100 Gbps


  • Use Case Diagram

  • Jika pengguna baru, mereka akan mendaftar terlebih dahulu, kemudian disimpan di database, mereka akan memverifikasi profilnya.

  • Jika pengguna sudah mendaftar, mereka akan memberikan Id email dan Kata Sandi.

  • Di halaman beranda mereka akan mendapatkan foto dan video, serta halaman cerita.

  • Postingan yang diposting sekarang, akan muncul di bagian atas. Pengguna dapat mengikuti atau berhenti mengikuti orang tersebut. Pengguna bisa siaran langsung. Itu semua tergantung pada mereka.

  • Akan ada pengaturan, di mana pengguna dapat melihat cerita masa lalu atau postingan yang telah diarsipkan. Pengguna dapat membuka blokir orang yang bisa mendapatkan akun terverifikasi, setelah membayar.


  • High-Level Design

  • Komponen Sistem

  • Client — Ini adalah aplikasi mobile/desktop yang akan terhubung ke server backend melalui REST API yang didefinisikan di atas.

  • Load Balancer — Kita akan menggunakan load balancer untuk mendistribusikan lalu lintas antara server yang berbeda. Ini akan membuat sistem kita lebih tersedia dan jika sebuah server mengalami masalah di belakang load balancer, load balancer dapat mendistribusikan lalu lintas ke server yang lain.

  • Image Service — Image service bertanggung jawab menyediakan API untuk mengunggah gambar dan mendapatkan metadata gambar. API metadata akan mengembalikan jalur gambar di S3 yang akan digunakan oleh klien untuk memuat gambar di aplikasi mereka.

  • S3 — Kami menggunakan penyimpanan objek untuk menyimpan gambar yang diunggah oleh pengguna. AWS S3 adalah penyimpanan objek yang skalabel dan murah yang bisa kita gunakan di sini. Kami dapat mengintegrasikannya dengan AWS CloudFront sehingga gambar dapat ditampilkan lebih cepat di aplikasi pengguna.

  • CloudFront — Amazon CloudFront adalah layanan jaringan pengiriman konten (CDN) yang dibangun untuk kinerja tinggi, keamanan, dan kemudahan pengembang. Dengan bantuan CloudFront, gambar akan ditampilkan lebih cepat di aplikasi pengguna.

  • Image DDB — Kami menggunakan AWS Dynamo DB untuk menyimpan metadata gambar yang diunggah oleh pengguna. Kami telah membahas tentang ini di bagian atas.

  • SNS — Pada setiap unggahan pengguna, kami menerbitkan pemberitahuan dengan bantuan AWS Simple Notification Service. Ini akan berguna dalam pemrosesan lainnya seperti pemantauan, pembuatan feed, analitik, dll. Berbagai SQS dapat berlangganan ke SNS ini untuk mendengarkan event.

  • SQS — Kami menggunakan AWS Simple Queue Service yang akan berlangganan ke event unggahan SNS dan layanan pembuatan feed akan mendengarkan SQS ini untuk memproses event.

  • Feed Generation Service — Layanan ini bertanggung jawab untuk pembuatan feed pengguna. Layanan ini akan mendengarkan event unggahan pengguna melalui SQS dan memulai proses untuk pembuatan feed pengguna. Layanan ini akan menangani jutaan event dan bisa ada diskusi terpisah tentang Desain Tingkat Rendah untuk layanan ini. Kami akan membahasnya di artikel mendatang.

  • Feed DDB — Kami menggunakan Dynamo DB untuk menyimpan data feed pengguna. Layanan pembuatan feed akan berinteraksi dengan DDB untuk memperbarui feed pengguna.

  • Redis Cache — Untuk menjaga latensi baca tetap rendah bagi pengguna kami, kami menerapkan lapisan caching di antara layanan pembuatan feed dan DDB. Ketika permintaan datang untuk mengambil feed pengguna, pertama-tama akan diperiksa di cache redis, jika tidak tersedia maka akan diambil dari DDB dan mengembalikan respons.

  • Interaksi Pengguna

Pembuatan Konten oleh Pengguna:

  • Pengguna mengunggah foto atau video melalui aplikasi seluler.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web menyimpan konten ke dalam penyimpanan dan basis data.

Pengguna Mengakses Konten:

  • Pengguna membuka aplikasi seluler dan melihat feed.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web mengambil konten dari basis data dan penyimpanan.

  • Server web mengirimkan konten ke aplikasi seluler.

Interaksi Pengguna dengan Konten:

  • Pengguna memberikan like, komentar, atau membagikan konten.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web memperbarui basis data dengan interaksi pengguna tersebut.

Pencarian Konten Baru oleh Pengguna:

  • Pengguna memasukkan kata kunci pencarian di aplikasi seluler.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web mencari konten dalam basis data berdasarkan kata kunci tersebut.

  • Server web mengirimkan hasil pencarian ke aplikasi seluler.

Pengiriman Pesan Pribadi oleh Pengguna:

  • Pengguna membuka fitur Direct Messaging di aplikasi seluler.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web mengambil pesan dari basis data.

  • Server web mengirimkan pesan ke aplikasi seluler.

Pengelolaan Koneksi dengan Pengguna Lain:

  • Pengguna mengikuti atau berhenti mengikuti pengguna lain.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web memperbarui basis data dengan informasi koneksi pengguna tersebut.

Pemantauan Aktivitas Akun oleh Pengguna:

  • Pengguna melihat statistik tentang pengikut, like, dan komentar.

  • Aplikasi seluler mengirimkan permintaan ke server web.

  • Server web mengambil data dari basis data.

  • Server web mengirimkan data tersebut ke aplikasi seluler.

4o


  • Low-Level Design

Berikut adalah rincian komponen dan interaksi utama dalam desain tingkat rendah Instagram:

Layanan Pengguna:

  • Mengelola pendaftaran pengguna, login, otentikasi, dan pengelolaan profil.

  • Menyimpan informasi pengguna seperti nama pengguna, email, bio, dan gambar profil.

  • Terintegrasi dengan penyedia otentikasi sosial seperti Facebook dan Google.

Layanan Postingan:

  • Mengurus pengunggahan, pengeditan, dan penghapusan foto dan video.

  • Menyimpan metadata posting seperti keterangan, tagar, lokasi, dan stempel waktu.

  • Memproses media yang diunggah untuk perubahan ukuran, penyaringan, dan pembuatan thumbnail.

  • Mengelola transcoding foto dan video untuk berbagai perangkat dan resolusi.

Layanan Umpan:

  • Menghasilkan feed berita yang dipersonalisasi untuk setiap pengguna berdasarkan pengikut, suka, aktivitas, dan keterlibatan.

  • Menggunakan sistem terdistribusi seperti Apache Kafka atau RabbitMQ untuk pembaruan dan notifikasi waktu nyata.

  • Menggunakan lapisan cache seperti Redis untuk pengambilan feed yang cepat dan mengurangi beban pada database.

Layanan Penyimpanan:

  • Menyimpan foto dan video yang diunggah dengan efisien dan andal.

  • Memanfaatkan solusi penyimpanan objek yang skalabel seperti Amazon S3, Google Cloud Storage, atau Azure Blob Storage.

  • Menerapkan mekanisme redundansi dan pemulihan bencana untuk perlindungan data.

Layanan Pencarian:

  • Memungkinkan pencarian pengguna, tagar, dan lokasi.

  • Mengindeks pengguna, postingan, dan tagar berdasarkan parameter relevan.

  • Menggunakan algoritma pengindeksan dan pencarian yang efisien untuk hasil yang cepat dan akurat.

Layanan Komentar:

  • Mengelola penambahan, pengeditan, dan penghapusan komentar pada postingan.

  • Melacak rangkaian komentar dan hubungan induk-anak.

  • Memberi tahu pengguna tentang komentar baru pada postingan mereka atau komentar yang mereka ikuti.

Layanan Notifikasi:

  • Memberi tahu pengguna tentang peristiwa penting seperti suka, komentar, sebutan, dan pengikut baru.

  • Mengirim notifikasi ke perangkat seluler melalui platform seperti Firebase Cloud Messaging atau Amazon SNS.

  • Menggunakan sistem antrian untuk pengiriman notifikasi secara asinkron.

Layanan Analisis:

  • Melacak keterlibatan pengguna, kinerja postingan, dan penggunaan platform secara keseluruhan.

  • Mengumpulkan data tentang tampilan, suka, komentar, berbagi, dan klik.

  • Menyediakan wawasan untuk meningkatkan pengalaman pengguna, mengoptimalkan rekomendasi konten, dan menargetkan iklan.

-

  • Desain Basis Data

  1. Skema Database


  1. Implementasi Database


-- Create User Table

CREATE TABLE Users (

   UserID SERIAL PRIMARY KEY,

   Username VARCHAR(255) NOT NULL,

   Email VARCHAR(255) NOT NULL,

   PasswordHash VARCHAR(255) NOT NULL,

   ProfilePicture VARCHAR(255),

   Bio TEXT,

   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);


-- Create Post Table

CREATE TABLE Posts (

   PostID SERIAL PRIMARY KEY,

   UserID INT NOT NULL,

   ContentURL VARCHAR(255),

   Caption TEXT,

   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

   FOREIGN KEY (UserID) REFERENCES Users(UserID)

);


-- Create Comment Table

CREATE TABLE Comments (

   CommentID SERIAL PRIMARY KEY,

   PostID INT NOT NULL,

   UserID INT NOT NULL,

   Content TEXT NOT NULL,

   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

   FOREIGN KEY (PostID) REFERENCES Posts(PostID),

   FOREIGN KEY (UserID) REFERENCES Users(UserID)

);


-- Create Like Table

CREATE TABLE Likes (

   LikeID SERIAL PRIMARY KEY,

   PostID INT NOT NULL,

   UserID INT NOT NULL,

   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

   FOREIGN KEY (PostID) REFERENCES Posts(PostID),

   FOREIGN KEY (UserID) REFERENCES Users(UserID)

);


-- Create Follow Table

CREATE TABLE Follows (

   FollowerID INT NOT NULL,

   FolloweeID INT NOT NULL,

   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

   PRIMARY KEY (FollowerID, FolloweeID),

   FOREIGN KEY (FollowerID) REFERENCES Users(UserID),

   FOREIGN KEY (FolloweeID) REFERENCES Users(UserID)

);

  1. Penjelasan Implementasi

User Table

  • UserID (Primary Key): Ini adalah pengenal unik untuk setiap pengguna.

  • Username: Nama tampilan pengguna.

  • Email: Alamat email pengguna untuk kontak dan login.

  • PasswordHash: Kata sandi yang di-hash dengan aman untuk otentikasi pengguna.

  • ProfilePicture: Ini adalah URL atau referensi ke foto profil pengguna.

  • Bio: Bio profil pengguna.

  • CreatedAt: Stempel waktu saat akun pengguna dibuat.

Post Table

  • PostID (Primary Key): Ini adalah pengenal unik untuk setiap postingan.

  • UserID: Pengenal untuk pengguna yang membuat postingan.

  • ContentURL: Ini adalah URL atau referensi ke foto atau video.

  • Caption: Teks keterangan yang menyertai postingan.

  • CreatedAt: Ini adalah stempel waktu saat postingan dibuat.

Comment Table

  • CommentID (Primary Key): Ini adalah pengenal unik untuk setiap komentar.

  • PostID: Pengenal untuk postingan terkait.

  • UserID: Pengenal untuk pengguna yang membuat komentar.

  • Content: Konten teks dari komentar.

  • CreatedAt: Stempel waktu saat komentar dibuat.

Like Table

  • LikeID (Primary Key): Ini adalah pengenal unik untuk setiap suka.

  • PostID: Pengenal untuk postingan yang disukai.

  • UserID: Pengenal untuk pengguna yang menyukai postingan.

  • CreatedAt: Stempel waktu saat suka dibuat.

Follow Table

  • FollowerID: Pengenal untuk pengguna yang mengikuti.

  • FolloweeID: Pengenal untuk pengguna yang diikuti.

  • CreatedAt: Stempel waktu saat hubungan mengikuti dibuat.


  • Desain API

  • signup (username, firstname, lastname, saltedpasswordhash, phone_number, email, bio, photo): menambahkan pengguna ke tabel pengguna

  • login (username, saltedpasswordhash): masuk pengguna dan memperbarui waktu login terakhir

  • search_user (searchstring, authtoken): mengembalikan data pengguna publik untuk string pencarian yang diberikan (dapat dicari dalam nama depan, nama belakang, dan nama pengguna)

  • getuserby_id (userid, authtoken): mengembalikan data pengguna publik untuk ID pengguna yang diberikan

  • follow_user (userid, targetuserid, authtoken): menambahkan data pengikut ke database

  • add_post (file, caption, userid, authtoken): mengunggah file ke server penyimpanan file

  • delete_post (userid, postid, auth_token): menghapus postingan pengguna yang diberikan beserta metadata-nya (menggunakan penghapusan lunak)

  • get_feed (userid, count, offset, timestamp, authtoken): mengembalikan postingan teratas setelah stempel waktu yang diberikan dari pengguna yang diikuti oleh pengguna yang diberikan sesuai dengan jumlah dan offset

  • getuserposts (userid, count, offset, authtoken): mengembalikan postingan dari pengguna yang diberikan sesuai dengan jumlah dan offset

  • post_like (userid, postid, auth_token): menambahkan ID postingan yang diberikan ke suka pengguna yang diberikan

  • post_unlike (userid, postid, auth_token): menghapus ID postingan yang diberikan dari suka pengguna yang diberikan

  • add_comment (userid, postid, comment): menambahkan komentar pada postingan yang diberikan oleh pengguna yang diberikan

  • delete_comment (userid, commentid): menghapus komentar pengguna yang diberikan dengan ID komentar yang diberikan


  • Load Balancing


Untuk menangani permintaan pengguna, instagram perlu menggunakan Load Balancer untuk mendistribusikan permintaan diantara server aplikasi. Salah satu cara untuk melakukannya adalah dengan menggunakan teknik round-robin, di mana permintaan didistribusikan secara bergiliran. Namun, pendekatan ini bisa bermasalah jika ada server yang tidak tersedia, karena permintaan mungkin masih dikirim ke server tersebut. Untuk mencegah hal ini, instagram dapat menerapkan sistem "heartbeat" di mana setiap server mengirimkan sinyal ke penyeimbang beban pada interval yang telah ditetapkan untuk menunjukkan bahwa server tersebut masih aktif.


Load Balancer juga diperlukan untuk server database dan cache, yang mungkin juga didistribusikan. Untuk mengarahkan permintaan ke server yang tepat, kita dapat menggunakan teknik yang disebut hashing konsisten. Teknik ini melibatkan pemetaan setiap permintaan ke server tertentu berdasarkan informasi spesifik pengguna. Ini membantu memastikan bahwa permintaan diarahkan ke server yang benar dan beban didistribusikan secara merata.



Referensi : 

  1. https://nikhilgupta1.medium.com/instagram-system-design-f62772649f90

  2. https://www.geeksforgeeks.org/design-instagram-a-system-design-interview-question/

  3. https://www.enjoyalgorithms.com/blog/design-instagram

  4. https://kuliahppl.blogspot.com/2024/06/desain-system-aplikasi-instagram.html

  5. https://www.geeksforgeeks.org/how-to-design-a-database-for-instagram/

Komentar

Postingan populer dari blog ini

Blog Ervan

Tugas 1 PPB - Redesign Mobile Application

Tugas 1 PBKK - Calculator app