Angka dan estimasi
Ringkasan satu halaman untuk dibaca ulang menjelang interview. Dari Lesson 0003 (latency, percentile, angka yang perlu dihafal) dan 0004 (QPS, storage, bandwidth), ditambah tabel availability dari 0027.
Angka latency (urutan, bukan angka persis)
| Operasi | Waktu | Artinya untuk desain |
|---|---|---|
| Main memory reference | 100 ns | Memori jauh lebih murah dari apa pun lewat jaringan: dasar cache |
| Round trip di dalam datacenter | 0,5 ms | Sepuluh panggilan berurutan ke service/database = 5 ms |
| Disk seek (hard disk berputar) | 10 ms | Akses acak mahal; index menghindari baca acak yang tidak perlu |
| Paket California → Belanda → California | 150 ms | Jarak fisik tidak bisa dikalahkan kode: dekatkan data ke user (CDN) |
Sumber: Jeff Dean, "Numbers Everyone Should Know" (2009). [1] Angka disk berasal dari 2009; yang dihafal adalah urutannya: memori ≪ jaringan datacenter ≪ disk acak ≪ antarbenua.
Latency, throughput, percentile
- Latency = waktu satu request (ms). Throughput = request per detik (QPS). Menambah server menaikkan throughput, tidak mempercepat satu request yang lambat.
- Latency adalah distribusi: tulis target sebagai percentile, mis. p99 < 300 ms, bukan rata-rata. Rata-rata menyembunyikan ekor. [2]
- Fan-out memperbesar ekor: halaman yang memanggil 100 service, masing-masing 1% lambat, kena minimal satu panggilan lambat dengan peluang 1 − 0,99100 ≈ 63%.
Dua angka bantu dan satuan
| Angka | Pakai untuk |
|---|---|
| 1 hari = 86.400 detik ≈ 10⁵ detik | 10 juta request per hari = 10⁷ / 10⁵ = 100 QPS |
| 2¹⁰ ≈ 10³ (KB) · 2²⁰ ≈ 10⁶ (MB) · 2³⁰ ≈ 10⁹ (GB) · 2⁴⁰ ≈ 10¹² (TB) | Satu baris data kecil ±1 KB; satu foto ratusan KB sampai beberapa MB; memori server puluhan sampai ratusan GB |
| 1 byte = 8 bit | Jaringan dalam bit per detik, storage dalam byte: 100 MB/s = 800 Mbps |
Empat rumus
- QPS = DAU × request per user per hari / 10⁵. DAU = user yang aktif minimal sekali sehari, bukan akun terdaftar.
- QPS puncak = QPS rata-rata × faktor puncak (asumsi, sering 2–3×). Kalau 30% request datang dalam satu jam: 0,3 × total / 3.600.
- Storage = record baru per hari × ukuran × 365 × tahun disimpan (+ index dan replika).
- Bandwidth = QPS × ukuran request/response. Hitung baca dan tulis terpisah.
Contoh baku
| Soal | Hitungan | Kesimpulan |
|---|---|---|
| 1.000 DAU × 20 request | 20.000 / 10⁵ = 0,2 QPS; puncak ±2 QPS; 1 KB × 1.000/hari ≈ 365 MB/tahun | Satu server + satu database. Tanpa LB, cache, queue |
| Kapasitas kasar satu server | ±10 ms per request, satu request sekaligus → 1.000 / 10 = 100 request/detik | Patokan kapan beberapa server mulai masuk akal |
| Chat 10 juta DAU × 40 pesan | 4 × 10⁸ / 10⁵ = 4.000 QPS, puncak ±8.000; × 100 byte = 40 GB/hari ≈ 15 TB/tahun | Beberapa server; pikirkan masa simpan dan pembagian data |
| Foto 1 juta DAU × 50 tampilan × 200 KB | 500 QPS × 200 KB = 100 MB/s = 800 Mbps | Sinyal CDN, bukan sinyal banyak server |
Availability: jatah downtime
| Target | Downtime per bulan (30 hari) |
|---|---|
| 99% | ±7,2 jam |
| 99,9% | ±43,2 menit |
| 99,99% | ±4,32 menit |
Sumber: Google SRE Book, Availability Table. [3]
Aturan di interview: bulatkan bebas, ucapkan asumsi dengan suara keras, maksimal ±5 menit. Estimasi punya satu fungsi: menentukan apakah komponen tambahan dibutuhkan.
[1] Jeff Dean, LADIS 2009 keynote ("Numbers Everyone Should Know") · [2] Google SRE Book, bab 4: Service Level Objectives · [3] Google SRE Book, Appendix A: Availability Table
Lesson: 0003 · 0004 · Cheat sheet lain: kerangka 5 langkah · trade-off komponen · Indeks