UNDER PRESSURE

Level 0 · Membaca Tekanan

Sesi 6: Hukum yang Membatasi Segalanya

Sesi 6 / 343 menit baca

1. Bayangkan jika

Bayangkan manajemen perusahaanmu setuju menyewa 10 server baru. - Dari 1 server \rightarrow naik jadi 10 server: Kapasitas naik 8 kali lipat (Sangat memuaskan!). - Karena senang, mereka menggandakan lagi dari 10 server \rightarrow jadi 20 server: Tapi kapasitasnya hanya naik 40%. - Merasa kurang, mereka menambah lagi jadi 40 server: Yang terjadi justru di luar nalar... Throughput sistem malah anjlok turun 30% lebih lambat daripada saat hanya memakai 20 server.

Kenapa menambah mesin bisa membuat sistem lebih lambat daripada sebelum ditambah?


2. Apa yang sebenarnya terjadi

Di dunia komputasi terdistribusi, ada dua hukum fisika software yang tidak bisa dilawan:

1. Hukum Amdahl (Amdahl's Law)

Sebuah program selalu memiliki bagian yang bisa diparalelkan (1 - \sigma) dan bagian yang harus dieksekusi berurutan / serial (\sigma). Misal: 5% dari kodemu adalah penulisan serial ke database bersama (\sigma = 0.05). Meskipun kamu menyewa 1.000 server, kecepatan maksimum sistemmu tidak akan pernah bisa melebihi 20x lipat (1 / 0.05 = 20). Bagian serial 5% itu menjadi rem permanen (diminishing returns).

2. Universal Scalability Law (USL)

Ditemukan oleh Dr. Neil Gunther, USL menambahkan satu faktor mematikan kedua: Coherency Penalty (\kappa) alias biaya gosip antar-node.

Saat server bertambah banyak: - Node 1 harus menyinkronkan data dengan Node 2, Node 3, ... Node 40. - Jumlah jalur komunikasi antar-node tumbuh secara kuadratik: \frac{N(N-1)}{2}. - Pada titik tertentu, seluruh bandwidth dan CPU server habis hanya untuk cross-talk, cache invalidation, dan distributed locks (saling menunggu kesepakatan).

Inilah yang disebut Retrograde Scalability (Skalabilitas Mundur): Menambah server justru merusak kinerja.


3. Rumus Tanpa Pusing

Formula Universal Scalability Law (USL):

C(N) = \frac{N}{1 + \sigma(N - 1) + \kappa N(N - 1)}

  • N = Jumlah server / core.
  • \sigma (Sigma) = Contention (antre di sumber daya serial bersama).
  • \kappa (Kappa) = Coherency (biaya sinkronisasi / cross-talk delay).

Jika \kappa = 0, rumus ini menjadi Hukum Amdahl (grafik mendatar).
Jika \kappa > 0, grafik akan memuncak lalu menukik jatuh ke bawah.


4. Nama resminya

Istilah Definisi
Amdahl's Law Batas teoritis percepatan sistem yang dibatasi oleh porsi kerja serial.
Universal Scalability Law (USL) Model matematis kapasitas sistem dengan memperhitungkan antrean (contention) dan koordinasi (coherency).
Contention (\sigma) Gesekan antrean di sumber daya tunggal (misal: row lock database, shared disk).
Coherency (\kappa) Keterlambatan akibat menjaga data tetap konsisten di banyak node (misal: cache sync, quorum consensus).
Serial Fraction Persentase eksekusi yang tidak bisa dibagi ke banyak worker.
Retrograde Scalability Kondisi di mana penambahan worker/server justru menurunkan total throughput sistem.

5. Di dunia kita (Sistem Produksi)

  1. Kasus Database Row Lock:
    100 pod aplikasi mencoba mengurangi stok barang flash sale yang sama di baris tabel database (UPDATE items SET stock = stock - 1 WHERE id = 1). Semakin banyak pod ditambah, semakin parah waktu tunggu lock contention (\sigma).
  2. Kasus Distributed Cache Invalidation:
    50 node aplikasi menyimpan lokal cache. Setiap ada update, satu node harus mem-broadcast invalidation signal ke 49 node lainnya (\kappa). Trafik internal meledak dan sistem mengalami network thrashing.

6. Lensa Performance Tester

  1. Ukur Kurva USL dari Data Riil: Jalankan load test pada 2, 4, 8, dan 16 node. Masukkan data throughput ke regresi USL untuk menemukan nilai \sigma dan \kappa.
  2. Ketahui Titik Puncak (N_{max}): Rumus titik puncak server:
    N_{max} \approx \sqrt{\frac{1 - \sigma}{\kappa}}
    Jangan pernah menyewa server melampaui N_{max} karena itu membakar anggaran tanpa hasil.
  3. Optimasi Arsitektur Sebelum Scaling: Menghilangkan 1% porsi serial (\sigma) atau mengurangi broadcast cache (\kappa) menghasilkan lonjakan kapasitas jauh lebih besar daripada menambah 20 server baru.

7. Penutup Level 0 — Membaca Tekanan

Selamat! Kamu telah menyelesaikan Level 0: Membaca Tekanan (Sesi 1–06).
Kamu sekarang memahami: - 1.4 detik pertama permintaan (Sesi 1) - Ke mana waktu pergi: APM vs Real User (Sesi 2) - Kurva eksponensial antrean (Sesi 3) - Trikotomi Concurrency, TPS, dan Latency (Sesi 4) - Enam laci saturasi server (Sesi 5) - Batas matematis penggandaan mesin (Sesi 06)


8. Selamat Datang di Level 1 — Menggandakan Mesin

Sesi 7: "Server yang Kamu Pesan, Bukan yang Kamu Dapat"
Sebelum menggandakan server, kita harus bertanya: apa sebenarnya "satu server" itu?
Bare metal? Virtual Machine? Atau Container yang berbagi kernel dengan tetangga berisik (Noisy Neighbor)?