Wawancara Desain Sistem: Rancang Twitter

"Rancang Twitter" adalah masalah pembuatan feed yang klasik. Tampak sederhana — memposting tweet, membaca timeline — tetapi bagian yang menarik adalah menghasilkan timeline utama setiap pengguna pada skala besar, di mana jawaban yang tepat adalah strategi fan-out hibrida. Pewawancara ingin melihat Anda menemukan bahwa kedua pendekatan naif gagal, dan bernalar sampai pada perpaduannya.

Lakukan secara sengaja: perjelas kebutuhan, perkirakan rasio baca/tulis, rancang penyimpanan tweet, lalu timeline — membandingkan fan-out-on-write dengan fan-out-on-read dan sampai pada hibrida yang menangani masalah selebriti. Panduan di bawah mengikuti jalur tersebut.

1. Memperjelas kebutuhan

Batasi pada masalah inti feed. Pengguna memposting tweet, mengikuti orang lain, dan membaca timeline utama yang menggabungkan tweet dari semua orang yang mereka ikuti, dari yang terbaru.

  • Fungsional: memposting tweet, follow/unfollow, timeline utama (orang yang Anda ikuti), timeline pengguna (satu penulis); pencarian dasar di luar ruang lingkup kecuali diminta.
  • Non-fungsional: sangat berat pada pembacaan, pembacaan timeline berlatensi rendah, ketersediaan tinggi; konsistensi eventual untuk timeline dapat diterima.
  • Perlu diperjelas: media, balasan/thread, dan ranking — akui saja, lalu batasi pada feed kronologis untuk sesi ini.

2. Memperkirakan skala dan rasio baca/tulis

Rasio ini mendorong seluruh desain. Pembacaan jauh lebih banyak daripada penulisan — pengguna menggulir timeline mereka jauh lebih sering daripada memposting. Dengan ratusan juta pengguna, sistem harus membuat pembacaan timeline murah meski itu membuat penulisan lebih mahal. Satu pengamatan ini mengarah pada precompute timeline.

3. Penyimpanan tweet

Tweet sendiri adalah data sederhana yang berat pada append. Simpan dalam penyimpanan yang dipartisi secara horizontal, dengan kunci ID tweet (dengan ID yang dapat diurutkan berdasarkan waktu seperti Snowflake ID, sehingga urutan sudah tertanam). Penyimpanan terpisah untuk graf sosial menyimpan hubungan follower/following.

  • Tweet: penyimpanan terdistribusi, dipartisi berdasarkan ID tweet; ID yang dapat diurutkan berdasarkan waktu memberikan urutan kronologis yang murah.
  • Graf sosial: siapa mengikuti siapa, dioptimalkan untuk 'dapatkan semua follower X' dan 'dapatkan semua yang diikuti X'.
  • Cache (Redis) menyimpan data hot — tweet terbaru dan timeline yang telah dihitung sebelumnya.

4. Pembuatan timeline: fan-out saat tulis vs saat baca

Ini adalah inti dari masalah ini. Fan-out-on-write (push) menyisipkan setiap tweet baru ke daftar timeline yang telah dihitung sebelumnya milik setiap follower pada saat posting — pembacaan timeline menjadi lookup cache yang murah, tetapi posting dari seseorang dengan jutaan follower memicu jutaan penulisan. Fan-out-on-read (pull) membangun timeline pada saat pembacaan dengan menggabungkan tweet terbaru dari semua orang yang Anda ikuti — penulisan murah, tetapi pembacaan mahal dan lambat bagi pengguna yang mengikuti banyak akun.

  • Fan-out-on-write: pembacaan cepat, penulisan mahal; sangat baik untuk pengguna normal.
  • Fan-out-on-read: penulisan murah, pembacaan mahal; diperlukan untuk akun dengan jumlah follower yang sangat besar.

5. Masalah selebriti dan hibrida

Tidak ada pendekatan murni yang menang, jadi gabungkan keduanya. Gunakan fan-out-on-write untuk sebagian besar pengguna, tetapi untuk akun 'selebriti' dengan jumlah follower yang sangat besar, JANGAN fan-out tweet mereka saat menulis. Sebagai gantinya, pada saat pembacaan, gabungkan timeline follower yang telah dihitung sebelumnya dengan pengambilan langsung dari sedikit selebriti yang mereka ikuti. Ini membatasi amplifikasi penulisan sambil menjaga pembacaan tetap cepat — jawaban yang ingin didengar pewawancara.

6. Trade-off yang perlu diucapkan

Tutup dengan tegangan: amplifikasi penulisan versus latensi pembacaan (seluruh keputusan fan-out), biaya penyimpanan timeline yang telah dihitung sebelumnya versus menghitungnya ulang, dan konsistensi — keterlambatan beberapa detik sebelum tweet muncul di timeline follower dapat diterima, sehingga konsistensi eventual memungkinkan Anda untuk diskalakan. Menyatakan ambang batas hibrida secara eksplisit (bagaimana Anda mengklasifikasikan 'selebriti') menunjukkan penilaian senior.

Latih desain sistem Twitter 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