Belajar Performance Test Engineer - Network & Latency Testing
Episode 18 of 28

Belajar Performance Test Engineer - Network & Latency Testing

Mensimulasikan network conditions yang realistis: latency addition, bandwidth throttling, packet loss, dan geographic testing untuk memahami dampak network terhadap performa aplikasi dari berbagai lokasi.

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

Pendahuluan

Setelah di episode 17 kita memahami tuning & optimization, kini saatnya membahas komponen yang sering dilupakan tetapi sangat mempengaruhi user experience: network. Sebagus apapun server merespons, jika network antara client dan server lambat, user tetap menunggu lama. Network latency adalah komponen yang paling sulit dikontrol oleh engineer — tetapi bisa dimengerti dan diantisipasi dengan testing yang tepat.

Episode ini membawa kalian memahami bagaimana network mempengaruhi performa, cara mensimulasikan kondisi network yang realistis, dan strategi untuk mengoptimasi aplikasi di bawah kondisi network yang buruk.

Network Components

Latency

Network latency adalah waktu yang dibutuhkan data untuk menempuh perjalanan dari client ke server dan sebaliknya. Latency ditentukan oleh jarak fisik dan jumlah hop (router/switch) di jalur.

KoneksiLatency Typical
Same data center0.1-1ms
Same city1-10ms
Cross-country20-50ms
Cross-continent100-300ms
Satellite500ms+

Bandwidth

Bandwidth adalah kapasitas maksimum data yang bisa ditransfer per detik. Bandwidth terbatas oleh ISP, network equipment, dan physical link capacity.

Packet Loss

Packet loss terjadi saat data packet hilang selama transmisi — bisa disebabkan oleh network congestion, hardware failure, atau wireless interference. TCP akan retransmit packet yang hilang, menambah latency.

Latency Simulation

Mengapa Mensimulasikan Latency?

Dalam development, client dan server biasanya berada di jaringan yang sama — latency ~0.1ms. Di production, user bisa berada di belahan dunia lain dengan latency 200ms+. Testing harus mensimulasikan kondisi production.

Linux Traffic Control (tc)

Linux punya built-in tool untuk mensimulasikan network conditions: tc (traffic control).

bash
# Tambahkan latency 100ms ke interface eth0
sudo tc qdisc add dev eth0 root netem delay 100ms
 
# Tambahkan jitter ±20ms
sudo tc qdisc change dev eth0 root netem delay 100ms 20ms
 
# Tambahkan packet loss 5%
sudo tc qdisc change dev eth0 root netem loss 5%
 
# Hapus semua aturan
sudo tc qdisc del dev eth0 root

k6 Network Simulation

k6 bisa mensimulasikan latency via tags dan monitoring:

javascript
// k6: monitor network latency per request
export default function () {
  const res = http.get('https://api.example.com/products');
  // res.timings Contains detailed timing breakdown
  check(res, {
    'DNS lookup < 50ms': (r) => r.timings.dns < 50,
    'TCP connect < 100ms': (r) => r.timings.connecting < 100,
    'TLS handshake < 200ms': (r) => r.timings.tls_handshake < 200,
    'Server processing < 300ms': (r) => r.timings.waiting < 300,
  });
}

Bandwidth Throttling

Testing di Bawah Bandwidth Terbatas

Banyak user mengakses aplikasi dari mobile network dengan bandwidth terbatas. Testing harus mempertimbangkan skenario ini:

bash
# Limit bandwidth ke 1Mbps
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 50ms
 
# Bandwidth asymmetric: 10Mbps down, 1Mbps up
sudo tc qdisc add dev eth0 root handle 1: htb default 10
sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 10mbit
sudo tc class add dev eth0 parent 1: classid 1:20 htb rate 1mbit

Impact terhadap Application

Aplikasi yang tidak dirancang untuk bandwidth rendah akan terasa lambat — images yang tidak di-compress, scripts yang tidak di-minify, dan responses yang terlalu besar.

Packet Loss Testing

Mensimulasikan Packet Loss

bash
# 10% packet loss (realistis untuk mobile/satellite)
sudo tc qdisc add dev eth0 root netem loss 10%
 
# Burst packet loss: 20% chance kehilangan 5 packet berturut-turut
sudo tc qdisc add dev eth0 root netem loss 20% 5

Dampak ke Application

Packet LossDampak
0-1%Tidak terasa untuk user
1-5%Re-transmissions menambah latency
5-10%Signifikan; TCP throughput menurun drastis
10%+Sangat buruk; connection timeout sering

Geographic Testing

Multi-Region Testing

Untuk aplikasi yang melayani user global, testing harus dilakukan dari berbagai region:

javascript
// k6: geographic testing
const REGIONS = [
  { name: 'jakarta', latency: '20ms' },
  { name: 'singapore', latency: '40ms' },
  { name: 'tokyo', latency: '80ms' },
  { name: 'us-west', latency: '180ms' },
];
 
export default function () {
  const res = http.get('https://api.example.com/products');
  check(res, {
    'status 200': (r) => r.status === 200,
    'acceptable latency': (r) => r.timings.duration < 500,
  });
}

Optimasi untuk Network

HTTP/2 dan HTTP/3

HTTP/2 mengurangi latency dengan multiplexing — banyak request dalam satu koneksi. HTTP/3 (QUIC) mengurangi latency lebih jauh dengan menghilangkan TCP handshake.

Connection Keep-Alive

Mempertahankan koneksi terbuka mengurangi latency untuk request berikutnya — tidak perlu TCP/TLS handshake ulang.

Compression

Gzip atau Brotli compression mengurangi ukuran payload — mengurangi transfer time di bandwidth rendah.

plaintext
Content-Encoding: gzip
Content-Encoding: br  # Brotli, lebih baik dari gzip

Penutup

Di episode 18 ini kalian telah memahami network & latency testing:

  • Network components: latency, bandwidth, packet loss — ketiganya mempengaruhi UX.
  • Latency simulation: Linux tc, k6 timing breakdown.
  • Bandwidth throttling: mensimulasikan mobile dan bandwidth rendah.
  • Packet loss: dampak terhadap TCP throughput dan UX.
  • Optimasi: HTTP/2, keep-alive, compression.

Di episode 19 selanjutnya, kita akan membahas Security in Load Tests — bagaimana menjalankan load test dengan aman tanpa mempengaruhi production, rate limiting, dan DDoS-aware testing. Siapkan security checklist kalian!

Belajar Performance Test Engineer - Network & Latency Testing | Belajar Performance Test Engineer