Kodeloka
  1. Kodeloka
  2. Kelas k6
  3. Materi

Modul 1 ยท Modul 1 dari 15

Kenapa Load Testing Wajib & Posisi k6

Memahami masalah nyata yang dicegah load testing, jenis-jenis pengujian performa, dan alasan k6 jadi standar baru di industri.

Masalah yang Sebenarnya Kita Selesaikan

Aplikasi yang lancar dipakai 5 orang belum tentu bertahan saat dipakai 5.000 orang. Kegagalan performa hampir selalu muncul di waktu paling mahal: flash sale, pembukaan PPDB, awal bulan penggajian, atau saat kampanye marketing baru jalan. Load testing adalah cara kita memindahkan kegagalan itu dari produksi ke laptop kita sendiri, jauh sebelum pengguna merasakannya.

๐ŸŽฏ Definisi kerja yang dipakai di industri

Load testing adalah proses menirukan perilaku sejumlah pengguna secara bersamaan terhadap sebuah sistem, lalu mengukur tiga hal: latency (berapa lama), throughput (berapa banyak per detik), dan error rate (berapa persen gagal) โ€” pada level beban yang terdefinisi.

Enam Jenis Pengujian Performa

Ini adalah kosakata dasar. Salah menyebut jenis tes akan membuat hasilnya salah dibaca oleh tim lain.

JenisBebanPertanyaan yang DijawabDurasi Khas
Smoke test1โ€“5 VUApakah skripnya benar dan sistem tidak error di beban minimal?30 detik โ€“ 1 menit
Load testBeban normal / rata-rata puncakApakah SLO terpenuhi pada beban sehari-hari?10 โ€“ 30 menit
Stress testNaik bertahap melewati kapasitasDi titik mana sistem mulai rusak?20 โ€“ 60 menit
Spike testLonjakan mendadak lalu turunApakah sistem selamat dan pulih setelah lonjakan?2 โ€“ 10 menit
Soak / enduranceBeban normal, waktu panjangAdakah memory leak, koneksi bocor, disk penuh?2 โ€“ 24 jam
Breakpoint testNaik terus tanpa batas sampai jebolBerapa kapasitas maksimum absolut?Sampai gagal

Kenapa k6, Bukan JMeter?

k6 dibuat oleh Load Impact (kini bagian dari Grafana Labs). Inti mesinnya ditulis dengan Go โ€” hemat memori dan sangat efisien โ€” sementara skrip tesnya ditulis dengan JavaScript (ES6+) sehingga akrab bagi developer.

AspekApache JMeterGrafana k6
Definisi tesXML lewat GUI (sulit di-review di Git)File JavaScript (diff-able, code review biasa)
Model konkurensi1 thread OS per virtual user (berat)Goroutine + JS VM ringan (ribuan VU di 1 mesin)
Konsumsi memoriRatusan MBโ€“GB, sering butuh tuning JVMUmumnya ยฑ 1โ€“5 MB per VU
Integrasi CI/CDPerlu plugin & konfigurasi tambahanSatu binary, exit code non-zero saat threshold gagal
Kriteria lulus/gagalAssertion terpisah, tidak bakuthresholds โ€” SLO sebagai kode, kelas satu
Ekosistem observabilityTerpisahNative ke Prometheus, Grafana, Loki, Tempo
โš ๏ธ Yang k6 bukan
  • Bukan browser sungguhan (secara default). k6 mengirim HTTP request langsung โ€” ia tidak menjalankan JavaScript halaman, tidak me-render CSS, tidak memuat gambar otomatis. Jadi k6 mengukur performa backend, bukan Core Web Vitals. Untuk itu ada modul k6/browser yang dibahas di modul lanjutan.
  • Bukan alat monitoring. k6 menghasilkan beban dan mengukur dari sisi klien. Untuk tahu kenapa lambat, Anda tetap butuh Prometheus/Grafana di sisi server.
  • Bukan pengganti unit test. k6 menguji perilaku sistem di bawah beban, bukan kebenaran logika bisnis.

Kosakata Wajib: SLI, SLO, SLA

Tiga istilah ini sering tertukar padahal beda tanggung jawab hukum dan teknisnya.

  • SLI (Service Level Indicator) โ€” angka yang diukur. Contoh: p95 latency endpoint /checkout.
  • SLO (Service Level Objective) โ€” target internal atas SLI. Contoh: p95 < 500 ms selama 30 hari. Inilah yang kita terjemahkan menjadi thresholds di k6.
  • SLA (Service Level Agreement) โ€” janji kontraktual ke pelanggan, biasanya lebih longgar dari SLO dan ada denda bila dilanggar.
๐Ÿ’ก Aturan praktis menentukan target awal

Bila belum ada SLO resmi, mulai dari data produksi Anda sendiri: ambil p95 latency saat ini, tetapkan sebagai batas maksimum agar tidak terjadi regresi, lalu perketat bertahap. Menetapkan target dari angan-angan ("pokoknya di bawah 100 ms") hanya menghasilkan pipeline merah yang akhirnya diabaikan tim.

Kenapa p95, Bukan Rata-rata?

Rata-rata (average) menyembunyikan penderitaan. Bila 95 request selesai 50 ms dan 5 request selesai 5.000 ms, rata-ratanya 297 ms โ€” terlihat sehat, padahal 5% pengguna Anda menunggu 5 detik. Persentil menjawab pertanyaan yang benar:

  • p50 (median) โ€” pengalaman pengguna tipikal.
  • p95 โ€” pengalaman 5% pengguna paling apes. Ini metrik utama untuk SLO.
  • p99 โ€” ekor terburuk, biasanya mengungkap masalah GC, lock database, atau cold start.