Neden Önemli?
- Production'daki hataları görmeden düzeltemezsin
- Kullanıcılar hata bildirmez, sadece uygulamayı siler
- Proaktif hata tespiti = daha az 1 yıldız yorum
- Crash + non-fatal error birlikte izlenmeli
- 2026 itibarıyla error monitoring, mobil uygulama geliştirmenin olmazsa olmazıdır
Crash vs Non-Fatal Error
Crash
- Uygulama kapanır (force close)
- Kullanıcı deneyimi tamamen bozulur
- Crashlytics/Sentry ile izlenir
- Acil müdahale gerektirir
Non-Fatal Error (Handled)
- Uygulama çalışmaya devam eder
- API hatası, timeout, parse error
- Kullanıcı deneyimi kısmen etkilenir
- Log ve alert ile izlenir
- Uzun vadede crash'e dönüşebilir (göz ardı edilmemeli)
ANR (Application Not Responding) - Android
- Main thread 5+ saniye bloke
- Kullanıcıya "Yanıt vermiyor" diyaloğu gösterilir
- Google Play Vitals'da ayrı izlenir
- Crash kadar ciddi (kullanıcı deneyimi bozulur)
Loglama Seviyeleri
| Seviye | Kullanım | Örnek |
|---|---|---|
| Error | Kritik hatalar, işlem başarısız | API 500, parse exception |
| Warn | Potansiyel sorunlar, beklenmeyen durum | Deprecated API, 3. retry |
| Info | Önemli iş olayları | Login, purchase, screen view |
| Debug | Geliştirme detayları (production'da kapalı) | State değişimi, cache hit/miss |
Araçlar
Sentry
- Crash + error + performance monitoring
- Breadcrumbs (hata öncesi kullanıcı aksiyonları)
- Source map desteği (okunabilir stack trace)
- Release tracking ve regression tespiti
- Alert kuralları (Slack, e-posta, PagerDuty entegrasyonu)
- Session replay (web, mobil sınırlı)
- Ücretsiz tier: 5K event/ay
- İssue assignment ve workflow
Datadog
- Full stack monitoring (APM + logs + metrics + dashboards)
- Mobil SDK: Real User Monitoring (RUM)
- Session replay
- Pahalı ama kapsamlı
- Enterprise odaklı, güçlü dashboard'lar
LogRocket
- Session replay (kullanıcının ne yaptığını video olarak izle)
- Error tracking
- Network request izleme
- React Native desteği
- UX sorunlarını bulma konusunda güçlü
Firebase Crashlytics
- Ücretsiz crash reporting (sınırsız)
- Google ekosistemi entegrasyonu
- Non-fatal error desteği
- Custom key ve log ekleme
- Velocity alerts (ani artış bildirimi)
Alert Stratejisi
Ne Zaman Alert?
- Crash rate %99 altına düştüğünde
- Yeni release sonrası crash spike (ilk 24 saat kritik)
- Kritik API endpoint'te hata artışı
- Payment işlemlerinde başarısızlık artışı
- ANR rate artışı (Android)
Alert Kanalları
- Slack/Discord entegrasyonu (en yaygın - anlık bildirim)
- E-posta (günlük/haftalık özet)
- PagerDuty/OpsGenie (acil durumlar, on-call rotasyonu)
- Dashboard (görsel izleme, TV monitör)
Alert Fatigue'den Kaçının
- Sadece aksiyon gerektiren alert'ler gönderin
- Severity seviyeleri: Critical (anında), Warning (günlük), Info (haftalık)
- Gruplandırma: Aynı hatanın tekrar eden alert'lerini birleştir
- Threshold ayarları: Tek bir hata değil, pattern olduğunda alert ver
Incident Yönetimi
Incident Akışı
- Tespit: Alert tetiklenir
- Triage: Severity belirlenir (P0-P3)
- Müdahale: Sorumlu atanır
- Çözüm: Hotfix veya feature flag ile devre dışı bırakma
- Postmortem: Kök neden analizi ve önleme
Severity Tanımları
- P0: Uygulama açılmıyor, ödeme çalışmıyor (acil)
- P1: Kritik özellik bozuk, çok sayıda kullanıcı etkileniyor
- P2: Önemli ama workaround var
- P3: Küçük sorun, düşük etki
Best Practices
- Her API çağrısının hata durumunu logla
- Kullanıcı ID'sini hata kaydına ekle (kullanıcı bazlı hata takibi)
- Breadcrumb ekle (hataya giden yolu gör)
- Release bazlı filtreleme kullan (hangi versiyon sorunlu?)
- Privacy: PII (kişisel veri) loglama (GDPR/KVKK uyumu)
- Log retention politikası belirle (30-90 gün)
- Non-fatal hataları da takip et (sadece crash yetmez)
- Source map ve dSYM dosyalarını CI/CD'den otomatik yükle
- Error budget tanımla (%99.5 crash-free rate hedefi)
"Production'da hata yok" demek "hataları görmüyoruz" demek olabilir. Doğru monitoring ile gerçeği görün.