Back to Blog Database & Performance

Optimasi Web untuk Jutaan Request

Studi kasusTraffic naik 12× dalam 20 menit

Latency p95 meningkat dari 180 ms menjadi 4,8 detik. CPU app server hanya 45%, tetapi connection pool database habis.

Menangani jutaan request bukan soal satu trik. Performa lahir dari pengukuran, pengurangan pekerjaan per request, kontrol concurrency, dan degradasi yang dirancang.

Temukan batas sistem dengan observability

Gabungkan metric, log, dan trace. Average latency sering menyembunyikan ekor lambat; lihat p95 dan p99, error rate, saturation, serta dependency time.

SinyalPertanyaan
Latency p95/p99Berapa lama pengguna terburuk menunggu?
ThroughputBerapa request sukses per detik?
SaturationResource mana yang mendekati batas?
Error rateKegagalan berasal dari aplikasi atau dependency?
Queue timeApakah request menunggu sebelum diproses?

Kurangi kerja di jalur request

  1. 1
    Cache respons atau data yang sering dibaca.
  2. 2
    Gabungkan query dan hilangkan N+1.
  3. 3
    Pindahkan email, laporan, dan proses berat ke queue.
  4. 4
    Kompres payload dan kirim field yang benar-benar diperlukan.
  5. 5
    Gunakan CDN untuk aset dan konten publik.

Lindungi dependency dengan backpressure

Pseudo
if (!dbPool.tryAcquire(timeout: 50ms)) {
  return HTTP 503 with Retry-After;
}
try {
  return handleRequest();
} finally {
  dbPool.release();
}

Menolak sebagian request secara terkendali lebih baik daripada membuat seluruh sistem timeout. Rate limit, bounded queue, circuit breaker, dan timeout harus memiliki nilai yang diselaraskan.

Degradasi yang dirancang

Ketika recommendation service gagal, tampilkan produk populer. Ketika laporan real-time terlambat, tampilkan snapshot terakhir dengan timestamp. Fitur inti tetap hidup meskipun fitur tambahan menurun.

Uji sebelum traffic nyata

Bash
# contoh uji beban bertahap dengan k6
k6 run --vus 100 --duration 5m load-test.js

Gunakan data dan pola request yang menyerupai produksi. Naikkan beban bertahap, temukan titik jenuh, lalu verifikasi bahwa autoscaling, alert, dan recovery benar-benar bekerja.

Prinsip akhirnya

Skala besar adalah disiplin mengurangi ketidakpastian: ukur, batasi, isolasi, dan siapkan jalan keluar ketika sesuatu gagal.

Share this article

Related articles

Copied