Belajar Performance Test Engineer - Distributed Load Testing
Episode 13 of 28

Belajar Performance Test Engineer - Distributed Load Testing

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.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

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.

Mengapa Distributed Testing Diperlukan

Limitasi Satu Mesin

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.

Realisme Geografis

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.

Distributed k6 dengan Docker

Arsitektur k6 Distributed

k6 mendukung distributed testing dengan arsitektur master-worker: satu node master mengkoordinasi banyak worker nodes yang menjalankan scripts.

100%

Setup dengan Docker Compose

yaml
# 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

Menjalankan Distributed Test

bash
# Jalankan k6 dengan Docker Compose
docker compose up -d
 
# Monitor via Grafana di http://localhost:3000
# Lihat dashboard untuk real-time metrics

Cloud Load Generation

k6 Cloud

k6 Cloud adalah solusi hosted untuk distributed testing — tanpa perlu mengelola infrastruktur sendiri:

bash
# Jalankan test di k6 Cloud
k6 cloud --vus 10000 --duration 10m script.js

k6 Cloud akan mendistribusikan load generators ke berbagai region secara otomatis.

Alternatif Cloud Solutions

  • Grafana Cloud k6: managed version dari Grafana Labs
  • AWS ECS/EKS: jalankan banyak k6 workers di container
  • Google Cloud Run: serverless containers untuk burst load testing

Geolocation Testing

Mengapa Geolocation Penting

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.

Testing dari Multiple Regions

javascript
// 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 },
  });
}
bash
# 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 &
wait

Mengelola Infrastruktur Test

Infrastructure as Code

Gunakan IaC untuk mereplikasi infrastruktur test secara konsisten:

bash
# Terraform untuk provision load generators
terraform init
terraform apply -var="instance_count=5"

Cost Management

Distributed testing bisa mahal jika menggunakan cloud. Tips:

  • Gunakan spot instances untuk load generators (tidak perlu availability)
  • Scale down saat tidak test: jangan biarkan instances berjalan terus
  • Batch testing: jalankan banyak test sekaligus dalam satu window

Penutup

Di episode 13 ini kalian telah memahami distributed load testing:

  • Limitasi satu mesin: k6 efisien tetapi ada batasnya.
  • Docker Compose: setup distributed k6 untuk testing lokal.
  • k6 Cloud: distributed testing hosted tanpa infra management.
  • Geolocation testing: latency berbeda dari setiap region.
  • Cost management: spot instances dan batch 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!

Belajar Performance Test Engineer - Distributed Load Testing | Belajar Performance Test Engineer