İçeriğe Atla
Rehberler · 10 dk okuma · görüntülenme
100%

k6 ile SLO Odaklı Yük Testi: Kapasite Baseline ve Release Gate

Yük testini “en yüksek RPS” yarışından çıkarıp, SLO (latency/error) odaklı kapasite baseline’ına ve CI release gate’ine dönüştüren pratik yaklaşım.

SLO eşiği ve yük testi eğrisini gösteren kapak görseli

Yük testi çoğu ekipte iki uçta yapılır: ya hiç yapılmaz ya da “kaç RPS gördük?” yarışına döner. Oysa operasyonel gerçeklik şudur: üretimde kazanmanız gereken şey maksimum throughput değil, SLO içinde kalabilmektir. Bu yüzden yük testini şu soruya bağlarım:

Bu servis, hedef SLO’sunu (latency + error) bozmadan hangi yükte kalabiliyor?

SLO eşiği ve yük testi eğrisini gösteren kapak görseli
RPS artarken p95 yükselir; asıl hedef, SLO çizgisini geçtiğiniz noktayı “kapasite sınırı” olarak yönetmektir.

1) Önce SLO’yu netleştir

Yük testini başlatmadan şu üç hedefi yazın:

  • p95 latency (ör. 250ms)
  • error rate (ör. %0.5)
  • test süresi boyunca “saturation sinyali” (CPU, thread pool, DB conn, queue lag…)

2) k6 senaryosu: Basit ama karar üreten

Örnek bir k6 iskeleti (HTTP API varsayalım):

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 20 },
    { duration: '3m', target: 50 },
    { duration: '3m', target: 80 },
    { duration: '2m', target: 0 },
  ],
  thresholds: {
    http_req_failed: ['rate<0.005'],       // error rate < %0.5
    http_req_duration: ['p(95)<250'],      // p95 < 250ms
  },
};

export default function () {
  const res = http.get(`${__ENV.BASE_URL}/api/v1/health`);
  check(res, { 'status 200': (r) => r.status === 200 });
  sleep(0.2);
}

Bu senaryonun amacı “en çok istek” değil; SLO içinde kalma sınırını gözlemek.

3) Kapasite baseline: “bugün” ile “yarın”ı kıyasla

Operasyonel fayda için test tek seferlik olmamalı. İki pratik yöntem:

  • Baseline’ı JSON olarak saklayın (örn. son başarılı release)
  • Yeni test sonucunu baseline ile kıyaslayıp “regression” yakalayın

Basit bir yaklaşım:

  1. k6 çıktısını --summary-export ile JSON’a alın
  2. CI içinde, p95 ve error metriklerini baseline ile kıyaslayın
  3. Belirli bir sapma üstünde pipeline’ı fail edin

4) Release gate mantığı: performans bir “kabul kapısı” olsun

Benim önerdiğim release gate kuralı:

  • Fonksiyonel testler geçse bile,
  • Eğer p95 veya error rate SLO’yu aşıyorsa ya da baseline’dan belirgin kötüleşiyorsa,
  • Release “guarded” moda düşer (daha küçük canary, daha agresif rollback, daha kısa gözlem aralığı).

Bu model “performans testini” bir rapor olmaktan çıkarıp değişiklik kontrolüne bağlar.

5) Sahada en sık hata: Test ortamı gerçeği yansıtmaz

Bu tuzağı azaltmak için:

  • Üretim benzeri veri (en azından veri boyutu ve indeks davranışı)
  • Cache warmup ayrı; ölçümü warmup sonrası yapın
  • Test kullanıcılarının rate limit / auth etkisini simüle edin
  • Downstream bağımlılıkları “fake” ile değil, kontrollü gerçekle test edin

Sonuç: Yük testi, kapasite yönetiminin dili olmalı

k6 ile SLO odaklı yük testi, performansı bir “hava durumu” değil, operasyonel karar girdisi yapar. Baseline + gate birlikte çalıştığında “yavaşlayan release”leri daha üretime çıkmadan yakalarsınız. Bu da incident yerine kontrollü iyileştirme üretir.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

Yeni yazılardan haberdar olun

Haftada bir yeni içerikler ve kaynaklar doğrudan e-postanıza gelsin.

Spam yok. Yalnızca yeni ve önemli içerikler için e-posta gönderilir.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar