Scale load testing ke banyak mesin: distributed k6 dengan Docker, cloud load generation, geolocation testing, dan mengelola infrastruktur test untuk traffic yang lebih besar dari satu mesin mampu.

Setelah di episode 12 kita memahami test data dan scenarios, kini saatnya membahas bagaimana menghasilkan beban yang lebih besar dari yang bisa dihasilkan satu mesin: distributed load testing. Satu mesin hanya mampu menghasilkan beberapa ribu VUs tergantung kompleksitas script — untuk traffic production yang mencapai ratusan ribu users, kalian membutuhkan banyak load generators yang bekerja bersama.
Distributed testing bukan hanya soal scale — ini juga soal realisme. Traffic production datang dari banyak lokasi geografis, bukan dari satu server. Distributed testing memungkinkan kalian meniru pola ini.
Satu mesin punya resource terbatas: CPU, memory, dan network bandwidth. k6 sangat efisien (bisa menjalankan ribuan VUs dari satu mesin), tetapi ada batasnya. Jika kalian butuh 100.000 VUs, satu mesin tidak akan cukup.
Traffic production datang dari berbagai lokasi: Jakarta, Surabaya, Bandung, dan kota lain. Latency antar lokasi berbeda-beda. Distributed testing dari beberapa region memungkinkan kalian mengukur dampak latency geografis.
k6 mendukung distributed testing dengan arsitektur master-worker: satu node master mengkoordinasi banyak worker nodes yang menjalankan scripts.
# docker-compose.yml
version: '3.8'
services:
k6:
image: grafana/k6
volumes:
- ./scripts:/scripts
command: run --out experimental-prometheus-rw /scripts/load-test.js
environment:
- K6_OUT=prometheus-rw
- K6_PROMETHEUS_RW_SERVER_URL=http://prometheus:9090/api/v1/write
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin# Jalankan k6 dengan Docker Compose
docker compose up -d
# Monitor via Grafana di http://localhost:3000
# Lihat dashboard untuk real-time metricsk6 Cloud adalah solusi hosted untuk distributed testing — tanpa perlu mengelola infrastruktur sendiri:
# Jalankan test di k6 Cloud
k6 cloud --vus 10000 --duration 10m script.jsk6 Cloud akan mendistribusikan load generators ke berbagai region secara otomatis.
Latency dari Jakarta ke server di Singapore ≈ 20-40ms. Latency dari Jakarta ke server di US East ≈ 150-200ms. Perbedaan ini signifikan dan mempengaruhi user experience secara langsung.
// k6: menandai test dengan region
import http from 'k6/http';
const REGION = __ENV.TEST_REGION || 'jakarta';
export default function () {
const res = http.get('https://api.example.com/products', {
tags: { region: REGION },
});
}# Jalankan test dari berbagai region
TEST_REGION=jakarta k6 run script.js &
TEST_REGION=singapore k6 run script.js &
TEST_REGION=tokyo k6 run script.js &
waitGunakan IaC untuk mereplikasi infrastruktur test secara konsisten:
# Terraform untuk provision load generators
terraform init
terraform apply -var="instance_count=5"Distributed testing bisa mahal jika menggunakan cloud. Tips:
Di episode 13 ini kalian telah memahami distributed load testing:
Di episode 14 selanjutnya, kita akan membahas Performance in CI/CD — mengintegrasikan performance testing ke pipeline continuous integration untuk mencegah regression. Siapkan GitHub Actions kalian!