Wawancara Desain Sistem: Rancang WhatsApp

"Rancang WhatsApp" menguji pengiriman real-time pada skala masif, penyimpanan pesan yang persisten, status (online/terakhir dilihat), dan masalah manajemen koneksi untuk menjaga ratusan juta perangkat tetap terhubung. Seperti biasa, pewawancara menginginkan penalaran dan trade-off Anda, bukan salinan sistem aslinya.

Lakukan secara metodis: perjelas kebutuhan, perkirakan skala, rancang jalur koneksi dan pengiriman, tentukan cara penyimpanan pesan, lalu tangani chat grup dan hal-hal sulit seperti pengiriman offline dan urutan. Panduan di bawah mengikuti jalur tersebut.

1. Memperjelas kebutuhan

Kunci ruang lingkup terlebih dahulu. Inti dari sistem ini adalah pesan satu-ke-satu dengan pengiriman yang andal; perjelas apakah chat grup, media, dan enkripsi end-to-end termasuk dalam ruang lingkup sesi ini.

  • Fungsional: mengirim/menerima pesan, konfirmasi pengiriman dan dibaca, status online, chat grup, pengiriman offline saat penerima terputus.
  • Non-fungsional: latensi rendah, ketersediaan tinggi, durabilitas (tidak ada pesan yang hilang), urutan dalam satu percakapan.
  • Perlu diperjelas: enkripsi E2E dan penanganan media — sebutkan, lalu tentukan secara eksplisit apakah masuk dalam ruang lingkup.

2. Memperkirakan skala

Tentukan angka-angka yang mendorong desain. Anggap ~2 miliar pengguna dan puluhan miliar pesan per hari; itu berarti ratusan ribu pesan per detik saat puncak, dan ratusan juta perangkat yang terhubung secara simultan — manajemen koneksi menjadi masalah kelas utama.

3. Jalur koneksi dan pengiriman

Pesan membutuhkan koneksi yang persisten, bukan polling request/response. Perangkat menjaga WebSocket tetap terbuka ke server gateway. Komponen pusat harus tahu gateway mana yang saat ini memegang koneksi setiap pengguna agar pesan dapat dirutekan ke server yang tepat.

  • Gateway WebSocket: menjaga koneksi perangkat yang aktif, menangani pengiriman/penerimaan.
  • Registri sesi/status: memetakan pengguna → server gateway saat ini (misalnya di Redis), diperbarui saat terhubung/terputus.
  • Perutean pesan: gateway pengirim mencari gateway penerima dan meneruskannya; jika offline, pesan dimasukkan ke dalam antrean.

4. Penyimpanan pesan dan pengiriman offline

Pesan harus tetap ada meski penerima terputus. Simpan setiap pesan secara persisten dan lacak status pengiriman per penerima; kirimkan segera jika penerima online, atau simpan dan teruskan (store-and-forward) saat mereka terhubung kembali.

Pola akses yang berat pada penulisan, dengan kunci per percakapan, lebih diuntungkan oleh penyimpanan wide-column seperti Cassandra (throughput tulis tinggi, skala horizontal) dibanding satu basis data relasional. Setelah pesan dikonfirmasi terkirim ke semua penerima, pesan tersebut dapat dihapus atau dibiarkan kedaluwarsa, karena WhatsApp tidak menyimpan pesan yang sudah terkirim di server tanpa batas waktu.

5. Chat grup

Pesan grup adalah fan-out: satu pengiriman menjadi N pengiriman. Untuk ukuran grup yang umum, fan-out-on-write (mendorong ke jalur pengiriman setiap anggota) sederhana dan cepat dibaca. Perhatikan trade-off-nya — grup yang sangat besar membuat fan-out-on-write menjadi mahal, itulah sebabnya grup siaran yang sangat besar menjadi masalah desain yang berbeda.

6. Trade-off yang perlu diucapkan

Tutup dengan menyebutkan tegangan yang ada: urutan (nomor urut per percakapan vs urutan global), konsistensi vs ketersediaan untuk konfirmasi (eventual cukup untuk 'terakhir dilihat', lebih kuat untuk pengiriman), dan fan-out-on-write vs on-read untuk grup. Menyebutkan hal ini secara eksplisit adalah yang membuat jawaban terasa senior.

Latih desain sistem WhatsApp dengan bantuan real-time

Asisten wawancara desain sistem dari Natively dapat membantu Anda tetap terstruktur selama sesi live — menyarankan dimensi berikutnya yang perlu dibahas dan menampilkan trade-off secara real-time, semuanya di perangkat Anda sendiri.

Put it on your own machine.

A live-conversation assistant that runs locally. Nothing leaves your machine.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Source-available under the Natively Personal Use Source License v1.0 · IP geolocation by DB-IP