SRE Interview Prep#
SRE rolünün DevOps'tan ayrılan tarafı: rakam ile düşünme, kasten arıza çıkarma, kapasiteyi değil güvenilirliği mühendislik etme.
🎯 SRE rolünde aranan core skill'ler#
- Numerical reasoning — error budget, capacity, scale (back-of-envelope)
- Systems thinking — cascade, retry storm, thundering herd
- Calm under pressure — incident simulation
- Communication — postmortem, runbook
- Eng. craftsmanship — toil reduction, automation, observability
1️⃣ SLO Design Round#
Soru tipik: "Sana bir servis verdim — payment-api: ödeme alıyor. Aylık 100M request, 5% peak hours, p99 latency hedef ~500ms. SLO tasarla."
Adım adım nasıl yaklaşırsın:
- Müşteri perspektifi: Ödeme alındı mı? Latency ne kadar acı veriyor?
- SLI seç:
- Availability: HTTP 2xx oranı (5xx server hatası kabul edilmez)
- Latency: ödeme oluşturma p99 < 500ms
- (Opsiyonel) Correctness: idempotency key respect edilme oranı
- SLO koy:
- Availability: %99.95 / 30 gün → 21.6 dk down/ay budget
- Latency: %99.9 of requests p99 < 500ms / 30 gün
- SLA müşteriye: %99.9 (intern SLO buffer'lı)
- Multi-burn-rate alert:
- Fast: 14.4x burn → 2 saatte budget tükenir → SEV-1 page
- Slow: 6x burn → 5 günde tükenir → SEV-2 ticket
- Error budget policy: budget < %20 → feature freeze
💡 Ne göstermek istiyorlar: matematik + müşteri perspektifi + automate-able alert.
2️⃣ Incident Response Simulation#
Soru tipik: "Senaryo: 14:02 UTC, p99 latency 200ms → 8s sıçradı. 5xx oranı %3'e çıktı. Sen on-call'sın. İlk 5 dakikada ne yaparsın?"
Söylemen gereken sıra:
- Acknowledge PagerDuty alert'i (kimse "kimse görmüyor" sanmasın)
- Severity belirle — customer-impacting → SEV-1
- Incident channel aç —
/incident sev-1 payment-api(otomasyon) - Recent change kontrolü (en sık sebep):
- Son deploy ne zaman?
kubectl rollout history - Config değişikliği? Feature flag toggle?
- Quick rollback hazır — "düzeltmeye çalışmadan önce, geri dön":
kubectl rollout undo deployment/payment-api- Diagnosis (paralel):
- Downstream service latency? (DB, external API)
- Pod restart? OOM? CPU throttle?
- DB connection pool exhaust?
- Recent traffic spike?
- Communication — status page güncelle, customer comms tetikle
- Mitigate, sonra root cause
🔑 "Mitigate first, investigate later" prensibi. 14 dakika down olmaktansa, 4 dakika rollback + 2 saat sonra incognito root-cause araştır.
3️⃣ Capacity Planning#
Soru tipik: "Şu an servis 10K RPS. Önümüzdeki Black Friday 50K RPS bekleniyor. Hazırlığını nasıl yaparsın?"
Aşamalar:
- Baseline ölç (current):
- Şu an pod sayısı, CPU/RAM kullanımı, p99 latency
- DB connection sayısı, query latency
-
Downstream API limit'leri
-
Linear scale assumption (genelde yanlış):
-
5x trafik = 5x pod? Hayır. DB, cache, downstream pinch point'ler var
-
Bottleneck tespiti — önce DB:
- Read: replica scale-up + read-heavy query'leri replica'ya yönlendir
- Write: connection pool, prepared statement cache, write batching
-
Eğer master CPU bound → vertical scale veya sharding
-
Cache layer:
- Redis hit ratio? Capacity?
-
CDN cacheable response için kullan
-
Load test:
- k6 / Gatling / Locust ile 60K RPS sustained
- p99 latency degrade noktası?
-
HPA hızı yetiyor mu? (60s scale-up window?)
-
Pre-scale (önemli!):
- HPA reactive → ilk dalga acı. Manuel
replicas: 100event öncesi -
Database connection pool pre-warm
-
Headroom:
- Hedef peak'ten %30 fazla kapasite
-
Cost: maliyet artar — finance ile koordine
-
Monitoring tighter:
- Burn-rate alert eşikleri sıkılaştır
-
On-call ekibi 2 katı (war room)
-
Rollback plan:
- Eski sürüme geri dönüş (kapasite-eski sürüm uyumlu mu?)
- Feature flag ile yeni-feature kapatma
4️⃣ Toil Reduction#
Soru tipik: "Ekibinin toil'ünü %50'nin altına indirmen gerekti. Nasıl yaklaşırsın?"
Adımlar:
- Ölç: 1 hafta time-track (her saat ne yapıldı, kaç saat manuel?)
- Top 5 toil'i listele (en sık + en uzun)
- Her biri için ROI hesapla:
- Kaç saat tasarruf? (haftada × 52)
- Otomatize etmek kaç saat alır?
- Payback period < 3 ay olanlar öncelik
- Quick wins:
- Slack komutuyla self-service ("
/restart-pod payment-api") - Otomatik ticket triage (etiket, severity)
- Runbook'ları script'leştir
- Yapısal:
- Sık kırılan servis için reliability iyileştirmesi (root cause fix)
- On-call rotation healthier (alert fatigue audit)
- Sonuç ölç: ay sonra time-track tekrarla, çıkan grafik
Toil sıfır olmaz; kontrol altında olur. Yeni feature'lar, yeni toil yaratır. Sürekli rebalance.
5️⃣ Chaos Engineering#
Soru tipik: "İlk chaos experiment'ini nasıl tasarlarsın?"
Süreç:
- Steady state tanımla — normal nasıl görünüyor?
- p99 latency, error rate, throughput
- SLO'lar in-budget
- Hipotez kur: "Bir Postgres replica düşerse, cluster ayakta kalır."
- Blast radius minimize:
- Önce dev/staging'de
- Sonra prod, ama sadece %1 traffic
- Off-hours
- Tooling:
- Chaos Mesh / LitmusChaos / AWS FIS
- Bir replica pod'u 5dk için sil
- Observe:
- SLO etki yedi mi?
- Failover nasıl gerçekleşti?
- Recovery time?
- Result:
- Hipotez doğrulandı mı?
- Bulgular → action item'lar
- Iterate: her ay yeni bir scenario, sonunda continuous chaos
"Niye prod'da chaos?"#
Stage'de bulunan hatalar prod'da hep tekrar bulunur. Ama sadece prod'da bulunan hatalar prod'da olur. Karşı taraf bunu duymak istemez, ama gerçek bu.
6️⃣ Pratik problemler#
Problem A — Cascading failure#
Servis A → Servis B → Servis C
(bütün B → C çağrıları yavaşladı, A timeout retry yapıyor, B daha çok yük yiyor)
Çözümler: - Circuit breaker (Hystrix, Polly, resilience4j) - Bulkhead — connection pool'ları izole et - Backoff with jitter — retry storm'unu engelle - Load shedding — A %50 trafiği reject etsin, healthier kalsın - Adaptive concurrency limit — Netflix's concurrency-limits
Problem B — Thundering herd#
Cache miss → 1000 pod aynı DB query'sini paralel atıyor.
Çözümler: - request coalescing — aynı key'i bekleyenler tek query - probabilistic early refresh — TTL bitmeden bazı pod'lar yenilesin - stale-while-revalidate — eski değer döndür, arka planda yenile
Problem C — Hot spot#
Tek bir partition/shard tüm trafiği yiyor.
Çözümler: - Re-sharding (key prefix randomize) - Read replica per partition - Cache layer hot key'ler için - Rate limit per-key
🎓 Çalışma planı (4 hafta)#
| Hafta | Konu |
|---|---|
| 1 | SRE Book bölüm 1-5 (philosophy, SLO, incident) |
| 2 | SRE Workbook (pratik examples) |
| 3 | Production-like lab + chaos experiment |
| 4 | Mock interview (peer ya da Pramp/Interviewing.io) |
📚 Hazırlık kaynakları#
- Site Reliability Engineering — Google (ücretsiz online)
- The SRE Workbook — Google
- Building Secure & Reliable Systems — Google
- Database Reliability Engineering — Campbell & Majors
- SREcon talks YouTube
- Mock interview: Pramp, Interviewing.io