Reference · System Design · Kerangka 5 langkah

Kerangka 5 langkah

Ringkasan satu halaman untuk dibaca ulang menjelang interview. Dari Lesson 0027, dengan pola kalimat dari 0025. Latihan penuhnya: mock 0036.

Lima langkah dan alokasi 45 menit

1 · Requirement→ 2 · Estimasi→ 3 · API + data model→ 4 · High-level (v1)→ 5 · Deep dive
LangkahYang ditulis di papanWaktu
1. Klarifikasi requirement3–5 functional requirement ("user bisa …"); non-functional dalam angka: DAU, latency, availability, consistency±5 menit
2. EstimasiQPS rata-rata dan puncak, rasio baca:tulis, storage beberapa tahun, bandwidth bila relevan±5 menit
3. API + data model2–4 endpoint inti (method, path, input, output); tabel/entitas utama dengan key±7 menit
4. High-level designDesain v1 paling sederhana yang memenuhi angka langkah 2; telusuri satu request tulis dan satu request baca±13 menit
5. Deep dive, bottleneck, trade-offBottleneck pertama dari angka, komponen yang menyelesaikannya, biaya dan risikonya, evolusi v2±15 menit

5 + 5 + 7 + 13 + 15 = 45 menit adalah konvensi track ini, bukan aturan resmi. Kalau interviewer mengarahkan ke bagian tertentu, ikuti; kerangka adalah peta, bukan naskah.

Pertanyaan klarifikasi standar (langkah 1)

Kalau interviewer menjawab "terserah Anda": ajukan asumsi dengan angka, lalu minta persetujuan.

Langkah 4 dan 5: v1 dulu, komponen dibenarkan angka

Jebakan dan perbaikan

JebakanPerbaikan
Langsung menggambar diagram akhir dengan 10 kotakGambar v1 dulu, lalu evolusi v2 dengan alasan per kotak
Estimasi dihitung lalu dilupakanRujuk angka langkah 2 setiap kali menambah komponen
Deep dive di topik favorit, bukan bottleneckPilih bottleneck terbesar menurut angka, atau tanya interviewer
Satu pilihan tanpa trade-offSelalu sebut biaya: latency, konsistensi, biaya operasional, risiko

Lima studi kasus dalam satu baris

SoalAngka kunciKeputusan deep dive
URL shortener±10 QPS tulis, ±1.000 baca (100:1), ±1 TB / 5 tahunBase62 dari sequence; 302 vs 301; cache-aside setelah p99 diukur
Rate limiterLimit konsisten di banyak instanceCounter di Redis (INCR atomik), 429 + Retry-After
NotificationPengiriman lambat dan pihak ketiga tidak stabilQueue per channel, retry + backoff, idempotency, DLQ
News feed (B)Read-heavy; akun besarFan-out on read di v1 → hybrid fan-out on write
Chat (B)Jutaan koneksi bersamaanWebSocket stateful, presence dengan TTL, seq per percakapan

[1] Google SRE Book, bab 4: Service Level Objectives · [2] Google SRE Book, Appendix A: Availability Table · [3] Google SRE Book, bab 9: Simplicity

Cheat sheet lain: angka dan estimasi · trade-off komponen · Indeks