Production'da bir API aniden yavaşladı ve hata oranı arttı. Sorunu nasıl teşhis eder ve çözersiniz?
Cevap
Bu bir davranışsal/senaryo sorusudur; mülakatçı sistematik düşünmenizi ve önceliklerinizi görmek ister. Öncelik her zaman: önce etkiyi azalt, sonra kök nedeni bul.
1. Etkiyi ve kapsamı belirle
- Tüm endpoint'ler mi, yalnızca biri mi? Tüm kullanıcılar mı, bir bölge veya müşteri mi?
- Dashboard'da RED metrikleri: istek hızı, hata oranı, p95/p99 gecikme. Sorun ne zaman başladı?
- Incident kanalını açın, durumu paydaşlarla paylaşın.
2. Son değişiklikleri kontrol et
Sorunların büyük kısmı bir değişiklikle başlar: deploy, konfigürasyon değişikliği, feature flag, migration, trafik artışı, bağımlı servisin deploy'u. Zaman çizelgesi eşleşiyorsa önce rollback, sonra araştırma.
3. Darboğazı daralt
- Trace'ler: yavaş isteklerde zaman hangi span'da harcanıyor? DB, dış API, cache?
- Kaynaklar: CPU, bellek, GC pause, thread/connection pool doluluğu, pod restart'ları (OOMKilled), CPU throttling.
- Veritabanı: yavaş sorgu logları, aktif sorgular ve kilitler (
pg_stat_activity), connection sayısı, replication lag. - Bağımlılıklar: downstream servisin gecikmesi arttıysa timeout'larınız ve retry'larınız yükü katlıyor olabilir.
- Log'lar: yeni hata tipleri, stack trace'ler.
4. Kısa vadeli önlemler
Rollback, replica/pod sayısını artırmak, sorunlu feature flag'i kapatmak, rate limiting, bozuk bağımlılık için circuit breaker açmak, pahalı bir endpoint'i geçici olarak devre dışı bırakmak.
5. Kalıcı çözüm ve postmortem
- Kök nedeni düzeltin (ör. eksik index, N+1, connection leak).
- Blameless postmortem yazın: zaman çizelgesi, kök neden, neden daha önce yakalanmadı, aksiyonlar (alarm, test, yük testi).
Örnek kök neden zinciri
Yeni deploy -> listeleme endpoint'ine eklenen filtre index kullanmıyor
-> sorgu 20ms'den 2sn'ye çıkıyor -> connection pool doluyor
-> diğer endpoint'ler de bağlantı bekleyip timeout oluyor -> hata oranı artıyorİlgili Sistem Tasarımı soruları
- Mesaj kuyruğu (RabbitMQ, Kafka) ne zaman kullanılır?
- Monolith ile mikroservis mimarisi arasındaki fark nedir? Mikroservislere ne zaman geçilmeli?
- CAP teoremi nedir? Gerçek sistemlerde nasıl yorumlanır?
- Dikey ve yatay ölçekleme arasındaki fark nedir?
- Hangi cache stratejilerini biliyorsunuz?
- REST ile GraphQL arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.