İçeriğe atla
Rehber

Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber

Reliability Friday · Black Friday Edition: kasım boyu süren kampanya trafiğine yük testi, change freeze, restore, on-call ve yedi kanıt kapısıyla hazırlık.

Oğuzhan Gerçek··36 dk okuma
Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 1/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 2/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 3/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 4/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 5/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 6/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 7/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 8/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 9/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 10/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 11/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 12/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 13/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 14/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 15/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 16/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 17/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 18/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 19/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 20/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 21/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 22/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 23/24Black Friday Öncesi Sistem Hazırlığı: Teknik Rehber — 24/24
01 / 24

Kısa cevap: Hazırlık kasım başlamadan bitmelidir. Beklenen peak'in üstünde yük testi koşun; p95 ve p99 latency'yi, error rate'i, database connection sayısını ve cloud quota'larını ölçün; yedeği değil restore'u deneyin. Ay boyunca değişiklikleri kısıtlayın, 11.11 ile Black Friday–Cyber Monday çevresinde tam change freeze uygulayın, on-call rotasyonunu dört haftaya göre planlayın. Go kararını tek bir "hazırız" cümlesine değil yedi kanıt kapısına bağlayın: talep, kapasite, journey, dayanıklılık, koruma, operasyon, değişiklik. En küçük doğrulanmış sınır, kampanyanın gerçek sınırıdır.

Don't Deploy on Friday. Verify on Friday.

Kampanya trafiği neden farklıdır?

1961'de Philadelphia polisi, Şükran Günü'nün ertesindeki cumaya "Black Friday" dedi, çünkü şehir kilitleniyordu. Bugün aynı kalabalık ödeme sayfalarını kilitliyor. O yıllarda kalabalık bir cumaya sığıyordu; bugün e-ticarette indirimler kasım boyunca sürüyor ve 11.11, Black Friday ile Cyber Monday bu dönemin en yoğun günleri. Teknik açıdan bu, tek bir peak değil; dört hafta boyunca yüksek seyreden bir baseline ve üstüne binen birkaç peak demektir.

Yüksek trafikli bir dönem, normal günün büyüğü değildir. Trafik aynı anda yükselir, kullanıcı davranışı değişir, third-party limitleri görünür hâle gelir ve küçük gecikmeler retry dalgalarına dönüşür. Her peak'te yükün şekli aynıdır: istekler aynı birkaç akışa (ürün sayfası, sepet, checkout) yığılır, bot trafiği bu yığılmaya eklenir. Application katmanı yatay ölçeklenir; database, session store, stok kilidi ve ödeme entegrasyonu aynı hızda ölçeklenmez. Darboğaz önce bu katmanlarda aranır.

Bu yüzden hazırlık daha fazla CPU veya sunucu ayırmakla bitmez. Ekip, kritik customer journey'lerin beklenen yükte ve öngörülen arızalar altında nasıl davrandığını kanıtlamak zorundadır.

Ayın tamamına yayılan bir kampanya, hazırlığı üç yerden değiştirir:

  • Change freeze tek haftaya sığmaz. Ay boyunca kısıtlı değişiklik, peak günlerinde tam freeze gerekir.
  • Kapasite haftalarca yüksek kalır. Geçici quota artışları ve autoscaling alt sınırları ay boyu maliyet üretir.
  • Ekip dört hafta on-call kalır. Tek gecelik bir plan ikinci peak'e yetmez.

2026'da bu günler 11 Kasım Çarşamba (11.11), 27 Kasım Cuma (Black Friday) ve 30 Kasım Pazartesi'ye (Cyber Monday) denk geliyor; Şükran Günü kasımın dördüncü perşembesi, yani 26 Kasım. Takvim bölümü bu tarihlere göre hazırlandı; kendi kampanya takviminize göre kaydırın.

Hazır olmanın tanımı

Bir sistem, normal koşullarda tahmini peak trafiği taşıdığı için hazır sayılmaz. Hazır bir sistem kritik journey'leri hedef SLO içinde sürdürür, en önemli arıza senaryolarında kontrollü biçimde bozulur, overload sırasında kendini korur ve ekibin bildiği süre içinde toparlanır. Bu iddiaların her biri test sonucu, dashboard, runbook veya tatbikat kaydıyla doğrulanır.

Peak güvenilirliği = doğrulanmış kapasite × arıza toleransı × operasyon kabiliyeti

Çarpanlardan biri sıfıra yaklaştığında toplam güvenilirlik de düşer; en küçük doğrulanmış sınır kampanyanın gerçek sınırıdır. Bu yüzden rehber kapasite planlama, performans testi, resilience, graceful degradation, change management ve incident command pratiklerini tek bir çalışma sisteminde birleştirir. Shopify'ın BFCM hazırlık programındaki scale test ve Resiliency Matrix yaklaşımından, Google SRE'nin overload, load shedding, retry ve incident response ilkelerinden, AWS Operational Readiness Review ve Azure mission-critical test pratiklerinden yararlanır; kaynaklar son bölümde.

Temel ilkeler

İlkeOperasyonel anlamı
Kritik journey sistem sınırıdırCheckout, ödeme, sipariş oluşturma veya müşteri erişimi gibi iş sonuçları, servis bazında metriklerden önce gelir.
Kanıt hazırlığın para birimidir"Hazırız" ifadesi tek başına kabul edilmez; her iddia güncel ve erişilebilir bir kanıta bağlanır.
Failover kapasitesi peak kapasitesidirBir zone, node veya dependency kaybında kalan kapasite talebi taşımıyorsa yedeklilik kâğıt üzerindedir.
Overload tasarlanırTimeout, retry, concurrency limit, load shedding ve degraded mode önceden belirlenir; incident sırasında keşfedilmez.
Bilinmeyen risk test girdisidirYeni servisler, büyük migration'lar ve geçmiş verisi olmayan akışlar daha yüksek güvenlik payıyla ele alınır.
Değişiklik hızı risk bütçesidirKampanya yaklaştıkça sistemin değişim hızı azaltılır; acil değişiklikler daha dar kapsam ve daha güçlü rollback ile yapılır.

Rehber nasıl kullanılır

  1. Teknik lider, event owner'ı ve kapsam içindeki kritik customer journey'leri belirler.
  2. Her servis sahibi kendi kapasite sınırını, dependency'lerini, failure mode'larını ve kanıtlarını doldurur.
  3. Merkezi readiness review, riskleri yedi kanıt kapısı üzerinden değerlendirir.
  4. Kırmızı kapılar kapanmadan go kararı verilmez. Amber kapılar için yazılı risk kabulü, tetikleyici eşikler ve geri dönüş planı gerekir.
  5. Kampanya sonrasında tahmin ile gerçek karşılaştırılır; kontrol listesi incident bulgularıyla güncellenir.

Kontrol listesi maddeleri dört parçadan oluşur. Yapılacak: ne yapılmalı ve hangi araçla. Nasıl fark edilir: kontrol atlandığında sorunun ilk görüldüğü yer. Neden önemli: kontrolün arkasındaki teknik gerekçe ve kaynağı. Komut: örnek değerlerle verilen komutlar; eşikleri kendi SLO'nuza göre değiştirin.

Hazırlık takvimi · Kasım 2026

Önce zemin, sonra iki freeze, arada bir prova.

Ne zamanYapılacakİlgili madde
Kasım başlamadanYük testi, darboğaz listesi, quota ve limit artışları, restore testi, rollback provası01, 02, 04, 10
1–30 KasımKısıtlı değişiklik dönemi: yalnızca test edilmiş, geri alınabilir ve düşük riskli değişiklikler, yoğun saatlerin dışında03
9–12 Kasım11.11 çevresinde tam change freeze, war room ve canlı SLO takibi03, 05, 06
13–17 Kasım11.11 sonrası ara değerlendirme, düzeltmeler ve ikinci yük testi01, 06
20 Kasım – 1 AralıkBlack Friday ve Cyber Monday için tam change freeze, war room03, 05, 06, 10
1–4 AralıkGeçici kaynakların küçültülmesi ve postmortem02, kampanya sonrası

Peak'e geri sayım

Aşağıdaki geri sayım ilk peak'e (11.11) göredir. Black Friday için aynı döngü, 13–17 Kasım ara değerlendirmesiyle kısaltılmış olarak yeniden koşulur; ilk peak'in bulguları ikincisinin test senaryosudur.

DönemAna işlerÇıkış kriteri
T−12 – T−8 haftaKapsam, event owner, kritik journey'ler, trafik tahmini, dependency map, vendor bildirimleriBaseline ve risk listesi
T−8 – T−4 haftaServis ve platform testleri, darboğaz düzeltmeleri, quota artışları, observability eksikleriİlk capacity envelope
T−4 – T−2 haftaFull-scale test, failover under load, chaos senaryoları, incident tatbikatıYük altında recovery kanıtı
T−2 – T−1 haftaSon düzeltmeler, tekrar testleri, emergency access kontrolü, freeze başlangıcıYedi kapının ilk kararı
T−7 – T−2 günDress rehearsal, war room provası, dashboard ve iletişim şablonlarıGo / no-go kararı
T−1 – T−0 günCapacity pre-scale, cache warming, son değişiklik kontrolü, on-call handoverEvent state
T+0 – T+3 günCanlı komuta, trend takibi, kontrollü optimizasyon, veri toplamaEvent log ve karar kaydı
T+3 – T+10 günTahmin–gerçek karşılaştırması, incident review, kalıcı aksiyonlarYeni readiness baseline

Yedi kanıt kapısı ve go / no-go

Go veya no-go kararı genel bir kanaate değil, yedi bağımsız kanıt alanına dayanır. Her kapının tek bir sorumlusu, son kanıt tarihi ve açık riskleri vardır. Bir kapının yeşil olması belgesinin var olduğunu değil, içeriğinin güncel ve test edilmiş olduğunu gösterir.

KapıKarar sorusuAsgari kanıt
1 · TalepPeak, burst, coğrafya, kullanıcı karması ve iş yükü vektörü tahmin edildi mi?Forecast dosyası ve varsayımlar
2 · KapasiteNormal ve arızalı durumda güvenli kapasite ölçüldü mü?Scale test sonuçları ve limitler
3 · JourneyKritik customer journey'ler SLO içinde uçtan uca doğrulandı mı?Synthetic test ve journey dashboard
4 · DayanıklılıkÖnemli failure mode'lar yük altında denendi mi?Game Day kaydı ve Resiliency Matrix
5 · KorumaTimeout, retry, load shedding ve degraded mode mekanizmaları çalışıyor mu?Konfigürasyon ve overload testi
6 · OperasyonAlarm, runbook, on-call, yetki ve iletişim akışı prova edildi mi?Tatbikat ve erişim doğrulaması
7 · DeğişiklikFreeze, emergency change ve rollback kuralları uygulanabilir mi?Değişiklik takvimi ve rollback testi

Durum kuralları

DurumTanımKarar etkisi
YeşilKanıt güncel, sahibi belli, hedef karşılanmış, açık yüksek risk yokGo
AmberHedef kısmen karşılanmış veya workaround var; tetikleyici, owner ve süre yazılıRisk kabulü ile go
KırmızıKanıt yok, test başarısız, kritik limit bilinmiyor veya recovery doğrulanmamışNo-go

Ortalama bir readiness skoru kritik bir kırmızıyı gizler. 100 kontrolün 95'inin tamamlanması etkileyici görünür; eksik beş kontrol payment database kapasitesi, WAF fail-open davranışı veya rollback yetkisiyle ilgiliyse sistem hazır değildir. Kapılar birbirini telafi etmez: yönetim özeti renklerle sunulabilir, teknik karar kapı bazında verilir.

Go / no-go review

Review toplantısının amacı sunum dinlemek değil, eksik kanıtı ve kabul edilmemiş riski ortaya çıkarmaktır. Her kapı sahibi üç dakikada hedefi, sonucu, açık riski ve istediği kararı sunar; tartışma kanıt üzerinde yürür. Toplantıya girmeden şunlar hazır olmalı:

  • Talep modeli ve marketing campaign takvimi güncel (kanıt: forecast version · sorumlu: event owner)
  • Full-scale ve failover under load sonuçları erişilebilir (test run ID · platform)
  • Kritik journey SLO dashboard'ları canlı (dashboard URL · journey owner)
  • Açık P0/P1 teknik riskler owner ve tarihle listeli (risk register · tech lead)
  • Vendor quota ve escalation teyitleri tamam (vendor kaydı · service owner)
  • On-call roster, break-glass hesapları ve war room prova edildi (drill log · ops lead)
  • Freeze ve emergency change authority duyuruldu (change plan · change owner)

Karar kaydında şu alanlar bulunur: karar (go / koşullu go / no-go), karar zamanı, Event Commander, kırmızı kapılar, kabul edilen amber riskler, koşullar ve son tarih, bir sonraki review.

No-go kriterleri

  • Kritik journey'nin peak test sonucu yok veya SLO karşılanmıyor.
  • Tek bir failure domain kaybında kalan doğrulanmış kapasite tahmini peak'in altında.
  • Payment, order veya benzeri write akışında idempotency ve reconciliation belirsiz.
  • Overload davranışı kontrolsüz retry, sınırsız queue veya process crash üretiyor.
  • Kritik dependency için owner, alarm veya çalışır runbook yok.
  • Incident response rollerinde veya production erişiminde doğrulanmamış boşluk var.
  • Event penceresinde geri döndürülemeyen yüksek riskli migration planlanmış.

Talep modeli ve capacity envelope

Kapasite tahmini tek bir RPS sayısı değildir. Aynı toplam trafik; cache hit ratio, authenticated kullanıcı oranı, ürün karması, payload boyutu veya checkout dönüşüm oranı değiştiğinde bambaşka bir altyapı yükü üretir. Bu yüzden talep, her kritik journey için çok boyutlu bir iş yükü vektörü olarak modellenir. Kampanyada kullanılabilecek güvenli sınır, en yüksek laboratuvar sonucu değil; planlanan arıza senaryosu ve güvenlik payı düşüldükten sonra kalan doğrulanmış kapasitedir.

Talep vektörü

BoyutModellenmesi gereken davranış
Trafik şekliBaseline, ramp, burst, flash sale, soak ve cooldown ayrı modellenir.
Kullanıcı karmasıAnonymous, authenticated, yeni kullanıcı, bot, partner ve admin trafiği ayrılır.
İşlem karmasıBrowse, search, login, cart, checkout, payment, order, webhook ve raporlama oranları yazılır.
CoğrafyaBölge, ISP, cihaz ve saat dilimi dağılımı; CDN ve region routing etkisiyle birlikte ele alınır.
Veri şekliHot key, popüler ürün, yüksek fan-out sorgu, büyük payload ve cold cache senaryoları eklenir.
Dış sistemlerPayment, fraud, SMS, e-posta, ERP ve partner API rate limitleri iş yüküne bağlanır.

Temel hesaplar

P = baseline × büyüme × kampanya etkisi × belirsizlik katsayısı

Peak tahmini P'de katsayılar aynı veriden türetilmemelidir; aksi hâlde aynı büyüme iki kez sayılır. En iyi, beklenen ve stres senaryoları ayrı tutulur.

H = doğrulanmış kapasite / tahmini peak

Headroom H yalnızca normal durumda değil, kaybedilmesi planlanan en büyük failure domain çıkarıldıktan sonra da hesaplanır.

L = λ × W

Little's law'a göre sistemdeki ortalama eş zamanlı iş sayısı L, geliş hızı λ ile sistemde kalma süresi W'nin çarpımıdır. Latency iki katına çıkarsa aynı RPS için concurrency de yaklaşık iki katına çıkar; connection pool ve thread pool bu yüzden latency'ye bağlı dolar.

ΔQ = geliş hızı − işleme hızı

Queue büyümesi ΔQ'daki pozitif fark kısa süreli görünse bile kuyruk yaşını hızla büyütür. Dashboard yalnızca queue depth değil, oldest message age göstermelidir.

Capacity envelope çalışma tablosu

Her bileşen için iki profil çıkarılır: normal limit ve arıza altı limit. Headroom ikisine göre ayrı hesaplanır.

BileşenNormal limitArıza altı limitPeak ihtiyaçHeadroomDarboğaz sinyali
Edge ve CDN___ RPS___ RPS___ RPS___Origin fetch ve WAF latency
Load balancer___ conn/s___ conn/s___ conn/s___Active connection ve SYN backlog
Application___ RPS___ RPS___ RPS___Concurrency ve p99
Database___ TPS___ TPS___ TPS___Lock wait ve replica lag
Cache___ ops/s___ ops/s___ ops/s___Eviction ve hit ratio
Queue___ msg/s___ msg/s___ msg/s___Oldest message age ve consumer lag
Third party___ req/s___ req/s___ req/s___429 ve timeout

Capacity plan için kırmızı bayraklar

  • Autoscaling'in ihtiyaç duyduğu quota ayrılmamış veya scale-out süresi peak ramp süresinden uzun.
  • Application instance sayısı artırıldığında database connection pool ve streaming connection toplamı doğrulanmamış.
  • Failover region boş görünse de image pull, warm-up, cache fill veya data replication nedeniyle zamanında trafik alamıyor.
  • Test anonymous browse ağırlıklı; authenticated checkout, webhook veya admin akışları gerçek oranında temsil edilmiyor.
  • Cloud veya CDN sağlayıcısına büyük quota ve kapasite artışı önceden bildirilmemiş.
  • Tek sonuç ortalama latency; p99, error rate, saturation ve recovery time raporlanmıyor.

Kritik customer journey'ler ve SLO

Servisler altyapı organizasyonuna göre bölünür; müşteri deneyimi bu sınırları izlemez. Hazırlığın ana birimi bu yüzden servis değil kritik journey'dir: ürün görüntüle → sepete ekle → ödeme → sipariş onayı. Her journey edge'den veri katmanına ve dış servislere kadar uçtan uca izlenir.

Journey reliability sheet

Her kritik journey için bir satır doldurulur; boş kalan alan açık risktir.

AlanDoldurulacak bilgi
JourneyÖrnek: ürün görüntüle → sepete ekle → ödeme → sipariş onayı
İş sonucuBaşarılı sipariş, başarılı giriş, bilet tahsisi veya dosya erişimi
SLISuccess rate, p95/p99 latency, correctness, freshness ve queue completion
Event SLOÖrnek: checkout success ≥ %99,5 ve p99 < 2,5 s
Peak iş yüküRPS, concurrency, payload, kullanıcı karması ve burst süresi
Dependency'lerDNS, CDN, WAF, auth, database, cache, payment, fraud, messaging
Failure davranışıFail closed, fail open, cached response, asynchronous completion veya feature off
KorumaTimeout budget, retry budget, circuit breaker, concurrency limit, load shed priority
RecoveryRunbook, rollback, failover ve beklenen toparlanma süresi
KanıtTest run ID, dashboard URL, Game Day kaydı ve owner

SLI seçimi

SLIÖlçümDikkat
AvailabilityBaşarılı ve geçerli yanıt oranıHTTP 200 tek başına yeterli değildir; iş sonucu doğrulanır.
Latencyp50, p95, p99 ve deadline aşımıOrtalama, tail latency bozulmasını gizler.
CorrectnessDoğru fiyat, stok, sipariş veya bakiyeHızlı ama yanlış cevap başarısızlıktır.
FreshnessVerinin üretim ile görünürlük arasındaki yaşıETL ve streaming backlog müşteri etkisine çevrilir.
DurabilityKabul edilen işlemin kaybolmamasıAcknowledgement öncesi persistence noktası bilinmelidir.
CompletionAsenkron işin hedef sürede tamamlanmasıQueue depth yerine oldest message age ve completion latency izlenir.

Synthetic transaction tasarımı

  • Shallow probe yalnızca endpoint erişimini kontrol eder; deep probe gerçek iş sonucunu doğrular. İkisi farklı alarmlara bağlanır.
  • Test kullanıcısı, ürün ve ödeme verisi peak sırasında tükenmeyecek ve gerçek müşteriyle çakışmayacak şekilde ayrılır.
  • Synthetic transaction farklı region ve ISP noktalarından çalışır. İçeriden başarılı görünen servis dış kullanıcı için erişilemez olabilir.
  • Canary sonucu genel error rate içinde kaybolmaz; bağımsız metric ve alarmı bulunur.
  • Her kritik journey dashboard üzerinde tek satırda success, latency, volume ve saturation ile görünür.

Kontrol listesi · 01–03 · Yük testi, limitler ve değişiklik politikası

01 · Peak yükü kampanyadan önce siz üretin

Gerçek kullanıcı yolunu (ana sayfa, arama, ürün, sepet, checkout) izleyen bir senaryoyu, beklenen peak istek hızının üzerine çıkarak çalıştırın. k6, JMeter, Locust ya da Gatling bu iş için yeterli. Ortalama yerine p95 ve p99 latency'ye, error rate'e, database connection sayısına ve queue depth'e bakın. Testi CDN ve WAF arkasından da koşun, çünkü kampanya günü trafik oradan gelecek. Başarılı bir test yalnızca hedef RPS'ye ulaşmaz; sistem sınırını, sınırın yaklaştığını gösteren sinyalleri, sınır aşıldığında müşterinin gördüğü davranışı ve yük düştüğünde toparlanma süresini ortaya çıkarır. Her test bir hipotezle başlar ve yeniden üretilebilir bir sonuçla biter.

TestAmaçRaporlanacak çıktı
BaselineNormal üretim karmasını doğrulaMevcut p50/p95/p99 ve resource cost
RampAutoscaling ve warm-up davranışını ölçScale trigger ve ready-to-serve süresi
PeakTahmini peak'i hedef SLO ile taşıJourney SLO ve saturation
BurstAni flash sale veya push trafiğini uygulaQueue spike ve load shed başlangıcı
SoakUzun süreli yükte leak ve birikimi bulMemory, GC, connection ve backlog trendi
StressBreaking point ve bozulma şeklini bulİlk limit ve müşteri etkisi
Failover under loadPeak yükte zone, region veya node kaybetRecovery time ve kalan headroom
Dependency degradationLatency, timeout, 429 ve partial error enjekte etRetry amplification ve circuit breaker davranışı
RecoveryYük veya arıza sonrası normale dönüşü ölçBacklog drain ve reentry davranışı

Gerçekçi trafik üretimi. Open workload model kullanın: yeni istekler önceki yanıtın bitmesini beklemez, böylece latency artarken yük kaybolmaz; gerçek internet trafiği de böyle davranır. Kullanıcı akışlarını production oranlarına göre ağırlıklandırın; nadir ama pahalı akışları ayrıca stress senaryosuna alın. Cache warm ve cold durumlarını ayrı koşun; cache busting yalnızca bilinçli bir senaryo olarak kullanılır. Test verisi hot key, kampanya ürünü, yüksek fan-out ve gerçek payload boyutlarını kapsasın. Load generator kapasitesini hedefin üstünde doğrulayın; generator saturation sistem limiti sanılmamalıdır. Third-party sistemlere gerçek zarar verecek çağrı yapılmaz; mock, sandbox veya önceden onaylı limit kullanılır.

// k6 · örnek değerler: hedef hızı ve eşikleri kendi peak trafiğinize ve SLO'nuza göre ayarlayın.
import http from 'k6/http';

export const options = {
  scenarios: {
    kampanya: {
      executor: 'ramping-arrival-rate', // open workload model
      startRate: 50,
      timeUnit: '1s',
      preAllocatedVUs: 200,
      maxVUs: 2000,
      stages: [
        { target: 600, duration: '10m' }, // peak hıza çık
        { target: 600, duration: '20m' }, // peak'te kal
      ],
    },
  },
  thresholds: {
    http_req_duration: ['p(95)<800'], // milisaniye
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  // Gerçek senaryoda ana sayfa → arama → ürün → sepet → checkout adımları sırayla çağrılır.
  http.get('https://staging.example.com/urun/123');
}

Nasıl fark edilir: Dashboard'lar normal görünürken müşteri hizmetlerine "ödeme sayfası dönüp duruyor" şikâyetleri gelmeye başlar.

Neden önemli: Ortalama, kuyrukta bekleyen isteklerin yaşadığı gecikmeyi gizler; p95 ve p99 onu gösterir. Örnekteki eşikler şunu söyler: her 20 istekten en fazla biri 0,8 saniyeyi geçebilir, her 100 istekten en fazla biri hata alabilir. Closed model ile warm cache üzerinde geçen bir test, gerçek peak'i temsil etmeyebilir.

Test kabul kriteri. Test ancak şu altı kanıt varsa geçmiş sayılır:

  • Kritik journey SLO'ları test boyunca karşılandı (run raporu ve dashboard snapshot · journey owner)
  • Normal ve failure senaryosu ayrı raporlandı (iki kapasite profili · platform)
  • İlk saturation noktası ve leading indicator belirlendi (grafik ve threshold · servis owner)
  • Retry ve timeout davranışı downstream yüküyle birlikte ölçüldü (attempt histogramı · app owner)
  • Test sonrası backlog hedef sürede boşaldı (queue age trendi · data owner)
  • Bulgular düzeltildi ve aynı senaryo yeniden koşuldu (karşılaştırmalı run ID · event owner)

Test raporunda aynı zaman ekseninde şu grafikler bulunur: offered load, accepted load ve completed business transaction; journey success rate ile p50/p95/p99 latency; CPU'nun yanında concurrency, connection, queue age, database wait, cache hit ve third-party error; autoscaler desired / ready / serving instance sayıları ve warm-up süresi; failure injection, operatör aksiyonu, recovery başlangıcı ve tam recovery zaman damgaları.

02 · Quota ve limitleri tek tabloda toplayın

Cloud hesabınızdaki vCPU, IP adresi, load balancer ve NAT gateway quota'larını yan yana yazın. Yanına database'in max_connections değerini, application'ın connection pool boyutunu ve firewall'un concurrent session ile saniyedeki yeni bağlantı (CPS) limitlerini ekleyin. Autoscaling'in üst sınırının bu limitlere sığdığını doğrulayın. Capacity envelope tablosundaki "normal limit" sütunu bu listeden doldurulur.

# AWS: EC2 quota'ları
aws service-quotas list-service-quotas --service-code ec2 --output table

# Azure: bölgedeki vCPU kullanımı ve limitleri
az vm list-usage --location westeurope --output table
-- PostgreSQL: anlık connection sayısı ve üst sınır
SELECT count(*) FROM pg_stat_activity;
SHOW max_connections;

Nasıl fark edilir: Autoscaling yeni sunucu açmaya çalışır ama açamaz; konsolda tek satırlık bir quota hatası durur. Ya da sunucular açılır ama database "too many connections" hatası vermeye başlar.

Neden önemli: Autoscaling yalnızca quota kadar büyür ve her yeni application instance'ı kendi connection pool'unu getirir. Bunu restorandaki masalar gibi düşünün: her sunucu kendi rezervasyonuyla gelir, restoranın masa sayısı (max_connections) ise değişmez; masalar dolunca database yeni bağlantıları reddeder. Connection pool toplamı instance sayısıyla çarpılıp database'in connection bütçesine bağlanır. Quota artışı sağlayıcı onayı gerektirebilir; talebi kasımdan önce açın ve bütçe alarmlarını artırılmış quota'lara göre güncelleyin.

03 · Değişiklikleri ay boyunca kısıtlayın, peak'lerde dondurun

Kasım boyunca production'a yalnızca test edilmiş, geri alınabilir ve düşük riskli değişiklikler çıksın, onlar da yoğun saatlerin dışında. Peak günlerinin çevresinde (takvimdeki iki freeze dönemi) tam change freeze uygulayın. Kapsamı yazılı olsun: application release'leri, Infrastructure as Code (Terraform vb.) değişiklikleri, database schema değişiklikleri, WAF ve CDN kuralları. Freeze sistemi dokunulmaz yapmak değildir; amaç değişiklik sayısını azaltmak, istisnaları görünür kılmak ve rollback kapasitesini korumaktır.

DönemPolitikaİzin verilen değişiklikKampanya takvimindeki karşılığı
T−4 – T−2 haftaFeature freezeKullanıcı davranışını değiştirmeyen, test edilmiş reliability düzeltmeleriEkim sonu – kasım başı
T−2 hafta – T−3 günCode ve config freezeYalnızca event riskini düşüren ve rollback'i doğrulanmış değişiklik1–30 Kasım kısıtlı değişiklik
T−72 – T−0 saatStrict freezeIncident Commander veya change authority onaylı acil değişiklik9–12 Kasım ve 20 Kasım – 1 Aralık tam freeze
Peak sırasındaLive change controlÖlçülebilir tetikleyiciye bağlı, küçük blast radius ve anlık gözlem11.11, Black Friday, Cyber Monday
T+0 – T+3 günControlled thawTrafik normale döndükten ve backlog boşaldıktan sonra aşamalı13–17 Kasım ve 1–4 Aralık

Emergency change kaydı. Freeze sırasında her istisna şu alanları doldurur: trigger (hangi metric ve eşik değişikliği gerektiriyor), hipotez (müşteri etkisini hangi mekanizmayla azaltacak), blast radius (hangi region, tenant, endpoint veya trafik yüzdesi), validation (ilk 5, 10 ve 20 dakikada hangi metrikler izlenecek), rollback (tek adım, owner, süre ve geri dönüş eşiği), approver (IC ve teknik owner; güvenlik etkisi varsa security owner), kayıt (zaman damgası, commit veya config ve sonuç).

Canary ve rollback kuralları. Canary yalnızca error rate ile değil kritik journey success, tail latency ve saturation ile değerlendirilir; canary gerçek trafik karmasını temsil etmiyorsa sonuç genellenmez. Rollback yeni deploy kadar test edilir; schema veya data migration geri dönüşü imkânsızsa forward-fix planı ve koruma modu bulunur. Config değişikliği de kod gibi versiyonlanır, peer review ve audit edilir. Peak sırasında aynı anda birden fazla hipotez değiştirilmez; aksi hâlde hangi değişikliğin sonucu etkilediği bilinemez.

Nasıl fark edilir: Kesinti, kampanyadan bir gün önce yapılan "küçük" bir konfigürasyon değişikliğinin ardından başlar ve war room'daki ilk soru "en son ne değişti?" olur.

Neden önemli: Google'ın SRE kitabına göre kesintilerin yaklaşık %70'i canlı sistemde yapılan bir değişiklikten kaynaklanır. Ayın tamamını dondurmak ise başka bir risk yaratır: değişiklikler birikir ve aralıkta tek seferde, daha büyük bir release olarak çıkar. Kısıtlı değişiklik ile peak freeze'i bu iki riski dengeler. Reliability Friday serimizin kuralı da bu: Don't Deploy on Friday. Verify on Friday.

Kontrol listesi · 04–06 · Restore, synthetic monitoring ve on-call

04 · Yedeği değil, restore'u ölçün

Kritik database'leri en son yedekten bir test ortamına restore edin. İki süreyi ayrı ölçün: verinin geri yüklenme süresi ve application'ın yeniden sipariş alabildiği ana kadar geçen süre. Point-in-time recovery (PITR) kullanıyorsanız belirli bir saate dönmeyi de deneyin ve sonuçları RPO ve RTO hedeflerinizle karşılaştırın. Kanıt, yedeğin varlığı değil; son test kaydındaki restore süresi ve doğrulanmış veri bütünlüğüdür.

Nasıl fark edilir: Backup dashboard'u aylardır yeşildir. Restore ilk kez gerçek bir arızada denenir ve planlanandan saatler sonra biter.

Neden önemli: Eksik WAL ya da binlog dosyaları, erişilemeyen encryption key'ler ve sürüm uyumsuzlukları ancak restore sırasında ortaya çıkar. Kampanya gününde kaybedilen her dakika, sıradan bir gündekinden daha çok siparişe mal olur.

05 · Müşterinin yolunu synthetic check'lerle izleyin

Ana sayfa, arama, sepete ekleme ve ödeme adımlarını dışarıdan, birden fazla bölgeden ve dakikada bir deneyen synthetic check'ler kurun. Alarmları CPU ve memory eşiklerine değil SLO'ya bağlayın: örneğin ödeme adımında beş dakikalık pencerede error rate ve p95 latency. Synthetic transaction tasarımı için bir önceki bölümdeki beş kural geçerlidir.

# Basit bir endpoint kontrolü: HTTP kodu ve toplam süre
curl -s -o /dev/null -w '%{http_code} %{time_total}s\n' https://www.example.com/sepet

Observability tarafında kampanya öncesi şu altı kontrol kapatılır:

  • Dashboard RED ve USE metriklerini kritik journey'lerle aynı zaman ekseninde gösteriyor.
  • Telemetry pipeline peak yükte çalışıyor; log hacmi ve cardinality limiti incident anında körlük yaratmıyor.
  • Alarm SLO tehdidine ve aksiyona bağlı; noisy alarm'lar kampanya öncesi temizlendi.
  • Third-party dependency, quota, certificate, replication ve queue age için leading indicator alarmı var.
  • Deploy, config, failover ve marketing push grafiklere event marker olarak düşüyor.
  • War room için tek ekranlık executive view ile derin teknik dashboard'lar ayrılmış.

Nasıl fark edilir: Altyapı dashboard'ları yeşilken siparişler düşer. Sorunu ilk siz değil, sosyal medyada şikâyet eden müşteri fark eder.

Neden önemli: Altyapı metrikleri nedeni gösterir; synthetic check ve SLO alarmı ise müşterinin yaşadığı sonucu.

06 · On-call'u dört haftaya, runbook'u kampanya saatlerine göre planlayın

Kampanya ayı için on-call rotasyonunu, escalation matrisini ve kritik senaryolar için kısa runbook'ları hazırlayın. Ödeme sağlayıcısı yavaşlarsa, database connection'ları dolarsa ya da CDN hata dönerse ilk üç adım ne? Rollback, kampanyayı durdurma ve müşteriye duyuru kararlarının kimde olduğunu yazın. Aynı kişinin hem sistemi düzeltmeye hem koordinasyon yapmaya hem de paydaşları bilgilendirmeye çalışması response kalitesini düşürür; roller olay başlamadan atanır ve dress rehearsal sırasında prova edilir.

RolSorumlulukArayüz
Event CommanderGenel event durumu, go / no-go, risk kabulü ve önceliklerBusiness ve teknik liderlik
Incident Commander (IC)Incident ilanı, koordinasyon, rol atama ve karar kontrolüTüm response ekipleri
Operations LeadMitigation, teknik workstream ve runbook uygulamasıServis ve platform owner'ları
Communications Leadİç ve dış güncelleme, müşteri ve status iletişimiCSM, support, marketing, leadership
ScribeZaman damgası, hipotez, aksiyon, owner ve sonuç kaydıIC
Business LiaisonMüşteri etkisi, gelir ve kampanya önceliğiBusiness owner

Bu rol dağılımı bir örnektir; kendi organizasyonunuzda roller birleşebilir veya farklı adlanabilir.

Incident ilan tetikleyicileri

TetikleyiciAksiyon
Kritik journey SLO iki ardışık ölçüm penceresinde ihlalIncident ilan et ve IC ata
Error rate normalin 3 katı ve yükseliyorİlgili owner ile teknik workstream aç
Arıza altı capacity headroom %10'un altına düştüDegradation veya traffic control başlat
Queue oldest age recovery SLO'yu aşacak trenddeIngest limit veya consumer recovery planı
Third-party 429 veya timeout hızla artıyorRetry budget'ı düşür ve fallback'i değerlendir
Telemetry kaybı kritik journey'yi görünmez yaptıRiski yükselt, değişikliği durdur, bağımsız probe kullan

War room çalışma düzeni. Tek karar kanalı, tek incident kaydı ve sabit conference bridge kullanılır. Her aksiyon owner ve zaman damgasıyla yazılır; sonucu gelmeden aynı hipotez unutulmaz. Teknik ekipler thread veya ayrı workstream'de çalışır, kararlar ana kanalda özetlenir. Güncelleme ritmi önceden belirlenir; yeni bilgi yoksa bile durum ve bir sonraki kontrol zamanı yazılır. IC sistemi düzeltmeye dalmaz; koordinasyon, öncelik ve iletişim kontrolünü korur. Recovery ilanı tek metriğe dayanmaz: journey SLO, backlog, saturation ve error trendi birlikte normale dönmelidir.

Event dashboard yerleşimi

BölümGösterilecek metrikler
Business outcomeSipariş, ödeme, login, active user ve başarısız iş sonucu
Critical journeysSuccess rate, p95/p99 latency ve volume
TrafficOffered, accepted, shed, bot ve retry trafiği
CapacityHeadroom, concurrency, ready instance, database saturation ve queue age
DependenciesThird-party success, latency, 429 ve region health
Change markersDeploy, config, failover, feature flag ve marketing push
IncidentSeverity, owner, başlangıç zamanı, son update ve next update

Nasıl fark edilir: Gece 02.00'de alarm çalar. Telefonu açan kişi, ödeme sağlayıcısında kime ulaşacağını ve kampanyayı durdurma yetkisinin kimde olduğunu bilmez.

Neden önemli: Olay anında aranan her bilgi müdahale süresine eklenir. Rotasyon ve runbook, yorgun bir ekibin de aynı adımları atabilmesini sağlar.

Kontrol listesi · 07–10 · Dış servisler, botlar, tarihler ve kill switch

07 · Dış servislere timeout, retry budget ve circuit breaker koyun

Ödeme, 3D Secure, SMS ile doğrulama (OTP), kargo, stok ve e-posta entegrasyonlarını listeleyin. Her çağrı için açık bir timeout ve jitter'lı exponential backoff ile sınırlı retry tanımlayın. Ardından bir circuit breaker ve bir fallback davranışı ekleyin: kuyruğa alma, alternatif sağlayıcı ya da kullanıcıya net bir mesaj. Ödeme çağrılarında idempotency key kullanın. Overload sırasında amaç bütün istekleri kabul etmek değil, sistemin çökmesini önlerken en değerli müşteri işlemlerini tamamlamaktır; bu kontroller upstream'den downstream'e tutarlı çalışmalı, autoscaling, load balancing ve load shedding birbirine zıt sinyal üretmemelidir.

Timeout budget. Bir müşteri isteğinin toplam deadline'ı, zincirdeki her çağrıya bağımsız ve daha uzun timeout vermekle korunamaz. Her hop kalan budget'ı bilmeli; artık kullanıcıya fayda üretmeyecek iş başlamamalı veya iptal edilmelidir. Client vazgeçtikten sonra server tarafta devam eden iş, görünmeyen yükü büyütür. Aşağıdaki dağılım bir örnektir; değerler journey SLO'nuzdan türetilir.

KatmanÖrnek budgetKural
Client toplam2 000 msKullanıcı beklentisi ve journey SLO'dan türetilir
Edge ve network200 msTekrar DNS veya TLS maliyeti hesaba katılır
Application1 400 msAlt çağrı budget'larının toplamı değil kritik yol dikkate alınır
Database350 msQuery timeout, transaction sınırından kısa olur
Recovery payı50 msYanıt serileştirme ve iptal için bırakılır

Retry budget. Retry kapasite üretmez; yalnızca geçici ve lokal hataların başka bir denemede başarılı olma olasılığını kullanır. Birden fazla katmanda bağımsız retry yapılırsa tek kullanıcı işlemi katlanarak büyür: üç katmanın her biri ilk deneme dâhil dört attempt yaparsa database'e kadar 4³, yani 64 attempt oluşabilir. Bu yüzden retry tek bir kontrollü katmanda, exponential backoff ve jitter ile, açık bir bütçe içinde yapılır.

DurumÖrnekDavranış
RetriableGeçici connection reset, seçili 5xx, lokal backend overloadSınırlı attempt ve jitter
Non-retriableValidation error, auth failure, malformed request, business rejectHemen döndür
Global overloadYüksek retry ratio, tüm backend'lerde saturationRetry'ı durdur ve load shed et
Write operationPayment veya order createIdempotency key olmadan retry etme

Nasıl fark edilir: Çağrı merkezine aynı cümle gelmeye başlar: "Kartımdan para çekildi ama siparişim görünmüyor."

Neden önemli: Timeout tanımlanmamış ya da çok uzun bırakılmış bir çağrı, yavaş bir dış servis yüzünden thread'leri ve connection'ları tutar; kuyruk büyür ve sağlıklı istekler de yavaşlar. Sınırsız retry, yavaşlayan servise giden yükü katlayıp kesintiye çevirir. Ödeme çağrısını idempotency key olmadan yeniden denemek çift tahsilat riski doğurur. Circuit breaker evdeki sigorta gibi çalışır: arıza tek bir odada kalır, bütün ev kararmaz.

08 · Bot trafiğini ödeme akışından ayırın

WAF'ta bot management ve rate limiting kurallarını endpoint bazında ayarlayın: login, sepet, stok sorgusu ve ödeme için ayrı limitler. Credential stuffing ve kart testi (card testing) saldırılarını yakalamak için login ve ödeme endpoint'lerinde başarısız deneme oranını izleyin. DDoS korumanızın application katmanını (L7) da kapsadığını doğrulayın. Rate limit global, tenant ve endpoint seviyesinde iş önceliğine göre uygulanır; bot davranışını normal müşteri burst'ünden ayıran kuralların false positive riski kampanya öncesi test edilir. Her güvenlik kontrolü için fail-open veya fail-closed kararı yazılı ve onaylı olmalı; fraud kontrollerinin latency'si ve fail mode'u ödeme journey'siyle birlikte test edilmelidir. Privileged access, break-glass hesapları, MFA ve audit kayıtları ile security kural değişiklikleri için emergency rollback ve iletişim owner'ı da bu maddenin parçasıdır.

Nasıl fark edilir: Kampanya ürünü, gerçek müşteriler sepete ulaşamadan "tükendi" görünür.

Neden önemli: Imperva'nın 2026 Bad Bot Report'una göre web trafiğinin yarısından fazlası (%53) botlardan geliyor. Ayıklanmayan her bot isteği, gerçek müşterilerle aynı connection pool'u, aynı stok sorgusunu ve aynı ödeme limitini kullanır.

09 · Certificate, domain, DNS ve disk tarihlerini kontrol edin

Kasım içinde süresi dolacak TLS certificate'larını ve domain'leri kampanya başlamadan yenileyin; certificate yenilemeyi ACME ile otomatikleştirin. Secret, license ve token expiry tarihlerinin de event penceresi dışında olduğunu doğrulayın. Kampanya sırasında trafik yönlendirmesi planlıyorsanız DNS TTL değerlerini önceden düşürün. Log ve metric hacmi haftalarca yüksek kalacağı için disk doluluk alarmlarını, log rotation'ı ve retention sürelerini gözden geçirin.

# Certificate'ın bitiş tarihi
echo | openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | openssl x509 -noout -enddate

# DNS kaydının TTL değeri (ikinci sütun)
dig +noall +answer www.example.com

Nasıl fark edilir: Bir sabah mobil uygulama ve API istemcileri aynı anda bağlantı hatası verir, tarayıcı kırmızı bir güvenlik uyarısı gösterir. Ya da loglarla dolan bir disk yüzünden servis yazamaz hâle gelir ve durur.

Neden önemli: CA/Browser Forum kararıyla 15 Mart 2026'dan bu yana verilen ve tarayıcıların güvendiği TLS certificate'ları en fazla 200 gün geçerli; her certificate yılda en az iki kez yenilenmeli. 15 Mart 2027'de süre 100 güne, 15 Mart 2029'da 47 güne inecek ve yenileme yılda yaklaşık sekiz kereye çıkacak.

10 · Kill switch ve virtual waiting room hazırlayın

Yük altında kapatılabilecek bileşenleri (öneri motoru, canlı stok sayaçları, kişiselleştirme, ağır raporlar) feature flag ile tek hamlede kapatılabilir hâle getirin. Ödeme akışını en üstte tutan bir öncelik sırası belirleyin. Kapasite sınırına yaklaşıldığında devreye girecek bir virtual waiting room eşiği tanımlayın. Feature flag ve kill switch tek owner'a bağlı olmamalı; audit ve rollback adımları bulunmalı.

Load shedding önceliği

Öncelikİş sınıfıOverload davranışı
P0Ödeme doğrulama, sipariş kaydı, kimlik doğrulamaEn son shed edilir; ayrılmış concurrency kullanır
P1Sepet, stok kontrolü, fiyatDegraded response veya kısa cache kullanılabilir
P2Arama, öneri, kişiselleştirme, yorumlarDaha ucuz sonuç veya feature off
P3Raporlama, export, webhook replay, batchErtelenir veya queue'ya alınır
P4Crawler, bot ve düşük değerli otomasyonRate limit veya erken reject

Graceful degradation kataloğu

MekanizmaÖrnekKoruduğu kaynakRisk
Feature disableRecommendation'ı kapatCPU ve downstream QPSDönüşüm etkisi
Stale cacheSon bilinen katalog verisiDatabase readFreshness ve correctness
Reduced resultDaha az arama sonucuCPU, memory, networkDeneyim kalitesi
Async completionBildirim veya raporu erteleSenkron latencyBacklog büyümesi
Admission controlConcurrency üstünü reddetThread, connection, memoryKontrollü 429
Traffic partitionPremium veya kritik müşteri havuzuAyrılmış kapasiteAdalet ve sözleşme

Nasıl fark edilir: Yük arttığında ödeme sayfası da yavaşlar, çünkü ağır bileşenlerle aynı kaynakları paylaşır ve onları kapatacak bir düğme yoktur.

Neden önemli: Graceful degradation, tam kesintiyle kısmi hizmet arasındaki farktır. Öneri motoru kapanırsa müşteri fark etmeyebilir, ödeme kapanırsa fark eder. Virtual waiting room bankadaki sıra numarası gibidir: kimse geri çevrilmez, ama herkes içeri aynı anda girmez.

Dependency ve failure modeli

Dependency haritası yalnızca servislerin birbirini çağırdığını gösterirse yetersiz kalır. Her bağlantı için failure semantics yazılır: timeout olduğunda ne olur, retry kimde yapılır, stale veri kabul edilir mi, startup dependency yoksa servis açılır mı ve dependency geri geldiğinde trafik nasıl toparlanır?

Resiliency Matrix

Shopify'ın yüksek trafikli etkinlikler için kullandığı Resiliency Matrix, her arıza senaryosunda müşterinin hangi journey'leri hangi kalitede tamamlayabildiğini tek tabloda gösterir. Tabloyu doldurmak başlı başına bir tabletop exercise'dır; satırları ve sütunları taramak sistemin en kırılgan yerini gösterir. Aşağıdaki hücreler örnektir; kendi dependency'lerinize göre doldurun.

Failure senaryosuBrowseLoginCheckoutSiparişBeklenen davranış
CDN cache miss artışıYavaşNormalNormalNormalOrigin protection ve request coalescing
Auth latency yüksekNormalYavaşKısmiNormalDeadline ve sınırlı retry
Primary database kaybıCachedKısmiKapalıAsenkronFailover ve write fence
Payment provider timeoutNormalNormalKısmiPendingIdempotency ve reconciliation
Kafka consumer lagNormalNormalNormalGecikmeliBacklog age SLO ve consumer scale
Bir region kaybıNormalNormalNormalNormalÖnceden ayrılmış failover capacity

Failure mode kaydı

Matristeki her hücrenin arkasında sekiz sorusu cevaplanmış bir kayıt bulunur.

AlanSoru
TriggerHangi arıza veya eşik bu durumu başlatır?
DetectionHangi metric veya synthetic test bunu kaç dakikada algılar?
Blast radiusHangi müşteri segmenti, region veya journey etkilenir?
System responseOtomatik koruma mekanizması ne yapar?
Operator actionHangi owner hangi runbook adımını uygular?
Recovery conditionServisin sağlıklı kabul edilmesi için hangi göstergeler gerekir?
Reentry riskTrafik geri verildiğinde cache fill, retry veya rebalance dalgası oluşur mu?
EvidenceBu davranış en son ne zaman ve hangi yükte test edildi?

Test edilecek failure sınıfları

SınıfÖrnekler
CapacityCPU, memory, connection, thread, file descriptor, IOPS, quota ve queue saturation
LatencyDependency yavaş ama erişilebilir; timeout zinciri ve concurrency büyümesi
Partial failureNode, zone, shard, partition veya müşteri segmenti bazında hata
DataReplica lag, stale cache, poison message, duplicate ve out-of-order event
NetworkPacket loss, DNS sorunu, MTU, latency, partition ve asymmetric routing
Control planeAutoscaler, orchestrator, config store, IAM veya deployment sistemi sorunu
Third party429, timeout, invalid response, schema change veya hard outage
HumanYanlış config, eksik yetki, hatalı dashboard ve runbook sapması

Her Game Day senaryosu için kart şu alanları taşır: hipotez, başlangıç yükü, enjekte edilen arıza, beklenen müşteri davranışı, beklenen alarm ve otomasyon, abort kriteri, gözlenen davranış, recovery süresi, bulgular ve owner.

Teknik katman kontrolleri

Aşağıdaki kontroller servis sahiplerinin kendi alanlarında doğrulaması gereken minimumlardır. Her kontrol bir evidence link, owner ve son doğrulama tarihiyle tutulur. Observability ve security kontrolleri 05 ve 08 numaralı maddelerde yer aldığı için burada tekrarlanmadı.

DNS, CDN, WAF ve edge

  • DNS TTL, secondary DNS ve registrar erişimi doğrulandı; acil değişiklik yetkisi test edildi.
  • CDN cache key, TTL, stale-if-error, origin shield ve request coalescing davranışları ölçüldü.
  • Cold cache ve cache purge sonrası origin kapasitesi test edildi.
  • WAF rule evaluation, bot management, DDoS profili ve rate limit kapasitesi peak'e göre ayarlandı.
  • TLS handshake, certificate expiry, OCSP ve connection reuse metrikleri dashboard'da.

Network ve load balancer

  • New connection rate, active connection, SYN backlog, ephemeral port ve NAT table kapasitesi ölçüldü.
  • Health check, application'ın gerçekten trafik alabilir olduğunu ölçüyor; warm-up bitmeden node healthy sayılmıyor.
  • Connection draining ve keepalive süreleri deploy, scale ve failover davranışıyla uyumlu.
  • Zone veya region kaybında routing convergence ve session stickiness etkisi test edildi.
  • Load shedding hataları load balancer tarafından başarı gibi yorumlanmıyor; feedback loop kontrol edildi.
  • Bandwidth yanında packet rate (PPS), drop, retransmit ve load balancer data plane limitleri izleniyor.

Compute, Kubernetes ve runtime

  • Request ve limit değerleri gerçek profille uyumlu; CPU throttling ve memory OOM davranışı peak testinde ölçüldü.
  • HPA sinyali leading indicator kullanıyor; CPU'dan önce queue age veya concurrency gerekiyorsa uygulandı.
  • Cluster autoscaler quota, IP, subnet, image pull ve scheduling kısıtlarıyla birlikte test edildi.
  • Startup, readiness ve liveness probe'ları overload altında restart loop üretmiyor.
  • JVM GC, heap, thread pool; .NET thread starvation; runtime connection pool metrikleri görünür.
  • Pod disruption budget ve topology spread, failure domain kaybında kalan kapasiteyi koruyor.

Application ve API

  • Her downstream çağrıda deadline, bounded retry, idempotency ve cancellation davranışı tanımlı.
  • N+1 query, pahalı serialization, büyük payload ve senkron fan-out profilleri giderildi veya sınırlandı.
  • Circuit breaker threshold ve half-open davranışı test edildi; recovery sırasında thundering herd oluşmuyor.
  • Concurrency limit ve queue bound açık; sınırsız in-flight request kabul edilmiyor.
  • İş hataları teknik error rate içinde kaybolmuyor; checkout rejection ile system failure ayrılıyor.

Database ve data platform

  • Peak TPS, connection, lock wait, buffer cache, IOPS, log flush ve replication lag sınırları ölçüldü.
  • Hot partition, hot key ve kampanya ürünü için skew testi yapıldı.
  • Read replica lag durumunda stale read ve read-your-writes kararları journey bazında yazılı.
  • Failover sırasında write fencing, transaction retry ve duplicate write davranışı test edildi.

Cache, queue ve streaming

  • Cache hit ratio yanında origin amplification, eviction, memory fragmentation ve hot key izleniyor.
  • Cache stampede için jittered TTL, request coalescing veya single flight uygulandı.
  • Queue depth yanında oldest message age, arrival rate, completion rate ve dead letter ölçülüyor.
  • Consumer scaling partition sayısı, ordering ve downstream kapasiteyle uyumlu.
  • Duplicate delivery ve out-of-order message için idempotent consumer davranışı test edildi.
  • Backlog drain süresi kampanya sonrası recovery SLO içinde hesaplandı.

Third party ve vendor

  • Quota, burst, concurrent connection ve günlük limitler yazılı olarak doğrulandı.
  • Vendor, kampanya tarihi, beklenen hacim ve escalation contact bilgisiyle bilgilendirildi.
  • Timeout, 429, partial response ve schema deviation senaryoları simüle edildi.
  • Fallback provider veya manuel süreç için veri tutarlılığı ve reconciliation planı var.
  • Vendor status page tek sinyal değil; bağımsız synthetic ölçüm bulunuyor.
  • Support contract, severity tanımı ve escalation süresi event command planına işlendi.

Peak günü runbook'u

Bu bölüm genel bir iskelet sunar; her ortam için komut, dashboard, owner ve escalation bağlantıları kurumun kendi sistemlerine göre eklenir. Aynı iskelet 11.11, Black Friday ve Cyber Monday için ayrı ayrı koşulur.

ZamanAksiyonOwner
T−120 dkOn-call check-in, bridge ve iletişim kanalı açılışıEvent Commander
T−90 dkCapacity pre-scale, quota ve ready instance kontrolüPlatform
T−75 dkCache warming ve kritik synthetic transactionApp ve edge
T−60 dkReplication lag, queue age, backup ve third-party healthData ve servis
T−45 dkFreeze audit ve son değişikliklerin gözden geçirilmesiChange owner
T−30 dkJourney dashboard baseline snapshotObservability
T−15 dkGo checkpoint ve açık risklerin okunmasıEvent Commander
T−0Campaign start marker ve sıklaştırılmış gözlemScribe
T+0 – T+60 dk5 veya 10 dakikalık trend review; gereksiz değişiklik yokIC ve Ops
Peak sonrasıBacklog drain, scale-down gate ve controlled thawPlatform ve Data

Canlı karar eşikleri

Eşikler örnektir; boş bırakılan değerler kendi SLO'nuzdan doldurulur.

MetricUyarıAksiyonRecovery
Journey success< event SLOIncident ve dependency triage3 pencere SLO üstü
p99 latency> hedefin 1,5 katıConcurrency ve database wait kontrolüTrend baseline'a yakın
Retry ratio> %___Retry budget'ı düşür2 pencere eşik altı
Queue oldest age> ___ dakikaIngest limit ve consumer scaleBacklog drain trendi
Database connection> %___Admission controlHeadroom %___
Cache hit< %___Origin protectionHit ratio stabilize
Third-party 429> %___Rate limit ve fallbackProvider normal

Scale-down için güvenlik koşulları

  • Offered load belirlenen süre boyunca düşüş trendinde.
  • Queue ve streaming backlog hedef recovery süresinde boşalıyor.
  • Cache hit ratio ve database load normalleşti.
  • Geç gelen webhook, batch ve reconciliation trafiği hesaplandı.
  • Bir sonraki coğrafi peak veya kampanya dalgası başlamadan önce yeterli süre var.
  • Scale-down, failure domain başına minimum failover capacity'yi koruyor.

Ara değerlendirme ve kampanya sonrası

İlk peak'i ikincisinin provası olarak kullanın. 11.11'den sonraki günlerde kısa bir ara değerlendirme yapın ve bulguları Black Friday'den önce kapatın. Kasım bittiğinde büyüttüğünüz kaynakları (autoscaling alt sınırları, geçici sunucular, büyütülmüş database sınıfları) geri küçültmeyi takvime bağlayın; aksi hâlde aralık faturasına yansır.

Kampanya problemsiz geçtiğinde de review yapılır. Hazırlık programının hangi varsayımları doğru çıktı, hangi kapasite kullanılmadı, hangi alarm gereksizdi ve hangi manuel müdahale gelecekte otomatikleştirilebilir soruları cevaplanır. Bu notlar bir sonraki kampanyanın yük testi senaryosu olur.

KarşılaştırmaSorular
Tahmin ve gerçekPeak zamanlaması, trafik, kullanıcı karması ve dönüşüm ne kadar saptı?
KapasiteHangi bileşen sınıra en çok yaklaştı; headroom doğru muydu?
Müşteri sonucuJourney SLO, correctness ve destek talebi nasıl değişti?
OtomasyonHangi autoscaling veya protection mekanizması beklendiği gibi çalışmadı?
OperasyonHangi karar gecikti; hangi dashboard veya yetki eksikti; hangi runbook adımı işe yaramadı?
MaliyetPre-scale ve kampanya maliyeti, korunan iş sonucuyla uyumlu muydu?
Kalıcı iyileştirmeHangi geçici çözüm platform kabiliyetine dönüşmeli?

Kaldır, standartlaştır veya ürünleştir

Kampanya hazırlığında üretilen her geçici mekanizma üç gruptan birine atanır: kaldır, standartlaştır veya ürünleştir. Resiliency Matrix, synthetic journey, capacity model ve incident drill gibi kabiliyetler yalnızca Black Friday için bırakılmaz; normal operasyon standardına eklenir. Böylece bir sonraki peak hazırlığı sıfırdan başlamaz.

Aksiyon kalite kriteri

  • Aksiyon belirli bir failure mechanism'i azaltır; genel iyileştirme ifadesi değildir.
  • Owner ve tarih bulunur; başarı metriği ölçülebilir.
  • Mümkünse guardrail veya otomatik kontrol hâline getirilir.
  • Aynı sınıf incident'i diğer servislerde de arayan yatay tarama içerir.
  • Tamamlandığında aynı test veya Game Day senaryosuyla yeniden doğrulanır.

Bu rehber yaşayan bir standarttır. Her yüksek etkili incident, başarısız test veya kampanya review'u sonrasında kontrol listesine yeni bir madde eklenebilir; yeni madde belirli bir failure mechanism'e, açık bir kanıta ve uygulanabilir bir owner modeline dayanmalıdır. Yılda en az bir kez sahiplik, araç bağlantıları ve risk eşikleri gözden geçirilir.

Anti-pattern kataloğu

Aşağıdaki cümleler readiness toplantılarında sık duyulur ve her biri bir kanıt boşluğunu örter.

Yanlış güven sinyaliGerçek risk
"CPU %30, hazırız"Darboğaz connection, lock, queue, IOPS, downstream quota veya tail latency olabilir.
"Autoscaling çözer"Scale-out gecikir; quota, IP, warm-up ve downstream kapasite sınırları vardır.
"Load test geçti"Yanlış trafik karması, closed model veya warm cache gerçek peak'i temsil etmeyebilir.
"İki region var"İkinci region peak'i tek başına taşımıyorsa ve failover yük altında denenmediyse koruma sağlamaz.
"Retry reliability sağlar"Kontrolsüz retry, geçici hatayı cascading failure'a çevirir.
"Queue veri kaybını önler"Sınırsız backlog recovery süresini bozar ve downstream'i kampanya sonrasında da baskılar.
"Freeze risk yaratmaz"Eski kritik açıklar ve kapasite problemleri de risk taşır; istisna süreci gerekir.
"Dashboard var"Karar eşiği, owner ve runbook yoksa grafik operasyon kabiliyeti değildir.
"Backup var"Restore süresi ve doğrulanmış bütünlük bilinmiyorsa recovery kanıtı yoktur.
"Incident olmadı"Sistemin güvenli olduğu anlamına gelmeyebilir; tahmin düşük veya gözlem eksik olabilir.

Kontrol tablosu · yazdırıp doldurun

On madde, iki kampanya sonrası iş; her satırda bir sorumlu ve bir tarih. Tabloyu kasım başlamadan doldurun. Freeze dönemlerinde yalnız "Durum" sütunu güncellenir; yeni iş eklenmez.

NoKontrolSorumluHedef tarihDurum
01Peak yük testi koşuldu; p95, p99, error rate ve database connection sayısı kaydedildi
02Quota ve limit tablosu çıkarıldı; artış talepleri açıldı
03Değişiklik politikası ve iki freeze dönemi yazılı olarak duyuruldu
04Son yedekten restore denendi; iki süre ölçüldü
05Synthetic check'ler ve SLO alarmları kuruldu
06Dört haftalık on-call rotasyonu, escalation matrisi ve runbook'lar hazır
07Dış servislerde timeout, retry budget, circuit breaker ve idempotency key
08Endpoint bazında rate limit; L7 DDoS koruması doğrulandı
09Certificate, domain, DNS TTL, disk ve log retention süreleri kontrol edildi
10Feature flag'ler ve virtual waiting room eşiği tanımlandı
+11.11 sonrası ara değerlendirme yapıldı; bulgular kapatıldı
+Aralık başında scale-down ve postmortem takvime bağlandı

Event readiness ana kaydı

Kampanya başında tek sayfada doldurulur: kampanya ve tarih, Event Commander, teknik lider, kritik journey'ler, tahmini peak ve burst, freeze başlangıcı, go / no-go tarihi, war room, vendor escalation. Yedi kapı özeti aynı sayfada yer alır: her kapı için owner, kanıt, durum (R / A / G) ve açık risk.

Runbook doğrulama kaydı

  • Runbook başka bir ekip üyesi tarafından uygulanabildi (tatbikat kaydı)
  • Tüm komut ve bağlantılar güncel (kontrol tarihi)
  • Gerekli production yetkileri doğrulandı (access test)
  • Rollback adımı gerçek ortam benzerinde denendi (test run)
  • Recovery condition açık ve ölçülebilir (dashboard)
  • Escalation kişi ve süreleri güncel (roster)

Eclit notu: Sisteminizin sınırını müşterilerinizden önce siz öğrenin.

Bu kontrollerin bir kısmını sürekli hizmet olarak da yürütüyoruz: 7/24 izleme, performans ve kapasite analitiği, yedekleme ve kurtarma ve uygulama güvenliği (WAF). Serinin bir önceki sayısında Terraform drift'i ve "No changes" çıktısının neyi kanıtlamadığını incelemiştik.

Every Friday. One Production Check.

Kaynaklar

Kontrol listeleri ve karar kapıları kaynakların birebir kopyası değildir; ortak reliability ilkelerinin kampanya dönemine uygulanmış hâlidir. Aşağıdaki sayfaların tamamı 30 Ekim 2026'da açılıp kontrol edildi.