Crash Analytics Nedir, Uygulama Hataları Nasıl İzlenir?
Crash Analytics, mobil uygulamalardaki çökme olaylarını gerçek zamanlı izleyen ve raporlayan analiz sistemidir. SDK entegrasyonu ile hataların kök nedeni bulunur ve çözülür.

İÇİNDEKİLER
%0 okundu
- Crash Analytics (Çökme Analizi) Nedir?
- Uygulama Çökmeleri Kurumsal İtibar ve Gelirleri Nasıl Etkiler?
- Crash Analytics Sistemleri Teknik Olarak Nasıl Çalışır?
- En Sık Karşılaşılan Mobil Uygulama Hata Türleri
- Uygulama Hataları Nasıl İzlenir ve Yönetilir? (Adım Adım İzleme Stratejisi)
- Kurumsal Ölçekte En Güvenilir Crash Analytics Araçları
- Hedeflenmesi Gereken İdeal "Crash-Free" Oranı Nedir?
- Proaktif Hata İzleme ile İş Sürekliliğini Sağlama
Crash Analytics, mobil uygulamalarda meydana gelen beklenmedik sonlanma (crash), donma (ANR) ve istisna (exception) olaylarını istemci tarafında yakalayan, analiz eden ve teknik ekiplere eyleme dönüştürülebilir kök neden raporları sunan izleme altyapısıdır. Mobil ürün yöneticileri, yazılım mimarları ve karar vericiler için hazırlanan bu rehberde, "Crash Analytics Nedir, Uygulama Hataları Nasıl İzlenir?" sorusunu teknik katmanları, entegrasyon süreçleri, mağaza görünürlüğüne etkileri ve kurumsal izleme stratejileriyle inceliyoruz.
Crash Analytics (Çökme Analizi) Nedir?
Crash Analytics, yerel (native) veya platformlar arası (cross-platform) mobil uygulamaların son kullanıcı cihazlarında çalışırken karşılaştığı beklenmedik çökmeleri, çalışma zamanı istisnalarını (runtime exceptions) ve donma problemlerini gerçek zamanlı olarak izleyen bir telemetri sistemidir. Uygulama kodunda yakalanmamış (unhandled) bir istisna fırlatıldığında, işletim sistemi çekirdeği (kernel) süreci sonlandırır. Crash analytics altyapısı tam bu kırılma anında devreye girerek bellek dökümünü, cihaz durumunu ve hata yığın izini (stack trace) kaydedip uzak sunuculara iletir.
Geleneksel web izleme araçlarından farklı olarak mobil çökme analizi, heterojen bir donanım ve işletim sistemi ekosisteminde çalışmak zorundadır. Kullanıcıların binlerce farklı cihaz modeli, özel üretici arayüzleri (OEM OS katmanları), değişken ağ bant genişlikleri ve kısıtlı bellek koşullarında uygulamayı çalıştırması, hataların yerel ortamlarda simüle edilmesini güçleştirir. Crash Analytics, bu çeşitlilik içinde oluşan hataları merkezi bir panelde kümeleyerek (clustering) yazılım ekiplerinin en yüksek etkiye sahip sorunlara odaklanmasını sağlar.
+-------------------------------------------------------------+
| Mobil Cihaz (Runtime Ortamı) |
| - Kullanıcı Etkileşimi -> [Unhandled Exception / Signal] |
| - Crash SDK Devreye Girer -> Stack Trace + Log Kaydı |
+------------------------------+------------------------------+
|
v (Şifreli JSON / Telemetri)
+-------------------------------------------------------------+
| Crash Analytics Bulut Altyapısı |
| - Sembolik Çözümleme (dSYM / ProGuard / R8 / Source Maps) |
| - Hata Kümeleme (Issue Grouping) & Etki Skorlama |
+------------------------------+------------------------------+
|
v
+-------------------------------------------------------------+
| Mühendislik & Ürün Yönetimi |
| - Gerçek Zamanlı Alarmlar (Slack / PagerDuty / Jira) |
| - Triage (Önceliklendirme) -> Hotfix & Sürüm Güncellemesi |
+-------------------------------------------------------------+Tanımı ve Temel Amacı
Crash Analytics sistemlerinin birincil amacı, üretim (production) ortamındaki kullanıcı deneyimi kesintilerini görünür kılmak ve hata ayıklama (debugging) sürecini dakikalara indirmektir. Bir mobil uygulamanın çökmesi, kullanıcının o anki oturumunun (session) zorla sonlandırılması anlamına gelir; bu da doğrudan işlem yarıda kalmasına (drop-off) ve gelir kaybına yol açar.
Sistemin sunduğu temel çıktılar şunlardır:
Hata İzi (Stack Trace): Çökmenin hangi sınıfta, hangi metodda ve hangi satır numarasında gerçekleştiğini gösteren fonksiyon çağrı zinciri.
Olay Öncesi İzler (Breadcrumbs): Kullanıcının çökmeden önceki son 10-20 aksiyonunu (ekran geçişleri, ağ istekleri, buton tıklamaları) içeren kronolojik log listesi.
Cihaz ve Oturum Metadata'sı: İşletim sistemi sürümü, boş RAM miktarı, disk alanı, batarya seviyesi, ağ türü (Wi-Fi/Hücresel) ve cihazın root/jailbreak durumu.
Etki Analizi: Hatanın kaç tekil kullanıcıyı (impacted users) ve toplam kaç oturumu etkilediğini gösteren sayısal metrikler.
Neden Kullanılmalıdır?
Geliştirme aşamasında yapılan birim (unit), entegrasyon ve kullanıcı kabul testleri (UAT), üretim ortamındaki tüm uç durumları (edge cases) kapsayamaz. Farklı ekran çözünürlükleri, arka plan kısıtlamaları, düşük bellek (low memory killer) müdahaleleri ve beklenmedik API yanıt formatları yalnızca canlı kullanımda açığa çıkar. Crash Analytics olmadan bir mobil uygulamayı yönetmek, arıza göstergesi olmayan bir aracı sürmeye benzer.
Karar vericiler açısından bu araçlar, yazılım kalitesini soyut bir kavramdan çıkarıp ölçülebilir bir SLA (Hizmet Seviyesi Anlaşması) metriğine dönüştürür. Yeni bir sürüm dağıtıldığında (phased rollout), çökme oranlarının anlık takibi sayesinde hatalı derlemeler hızla geri çekilebilir veya durdurulabilir; böylece potansiyel krizler tüm kullanıcı tabanına yayılmadan kontrol altına alınır.
Uygulama Çökmeleri Kurumsal İtibar ve Gelirleri Nasıl Etkiler?
Mobil uygulamalar, modern işletmeler için yalnızca bir iletişim kanalı değil; doğrudan gelir üreten, müşteri sadakati oluşturan ve marka kimliğini temsil eden temel dijital ürünlerdir. Bir e-ticaret, fintech, SaaS veya lojistik uygulamasında yaşanan çökme, müşterinin fiziksel bir mağazadan güvenlik görevlisi tarafından dışarı çıkarılmasıyla eşdeğer bir algı yaratır. Araştırmalar, kullanıcıların %50'den fazlasının sürekli çöken bir uygulamayı ilk 24 saat içinde kaldırdığını (uninstall) göstermektedir.
Kurumsal ölçekte çökme maliyetleri yalnızca doğrudan işlem kayıplarıyla sınırlı değildir. Müşteri destek merkezlerine gelen çağrı hacminin artması, operasyonel destek maliyetlerini yukarı çeker. Aynı zamanda, teknik ekiplerin planlı ürün yol haritasını (roadmap) bırakıp acil durum yangın söndürme (firefighting) moduna geçmesi, yeni özelliklerin pazara çıkış süresini (time-to-market) ciddi biçimde geciktirir.
Kullanıcı Deneyimi ve Sadakat Kaybı (Churn)
Kullanıcı deneyimi (UX) açısından mobil çökme, en yüksek sürtünme (friction) noktasıdır. Kullanıcının sepeti onaylama, para transferi yapma veya kritik bir formu doldurma aşamasında uygulamanın kapanması, güven duygusunu zedeler. Özellikle finansal teknolojiler (Fintech) ve sağlık uygulamalarında bu durum doğrudan güven kaybına ve kullanıcının alternatif platformlara geçmesine (churn) neden olur.
Müşteri Edinme Maliyeti (CAC - Customer Acquisition Cost) her geçen dönem artarken, çökmeler sebebiyle kaybedilen kullanıcıları yeniden kazanmak (re-engagement) organik büyüme bütçelerini verimsizleştirir. Crash Analytics, dönüşüm hunilerindeki (conversion funnel) teknik kırılmaları tespit ederek pazarlama bütçelerinin boşa harcanmasını engeller.
Uygulama Mağazası Sıralamalarındaki Negatif Etkiler
Apple App Store ve Google Play Store algoritmaları, mağaza sıralamalarında ve öne çıkarma (featuring) süreçlerinde teknik kalite metriklerini doğrudan bir sıralama faktörü olarak kullanır.
Google Play Vitals: Google Play Console, uygulamaları "Kullanıcı Tarafından Algılanan Çökme Oranı" ve "ANR Oranı" metriklerine göre değerlendirir. Kötü davranış eşiğini (%1,09 çökme oranı veya %0,47 ANR oranı) aşan uygulamalar, arama sonuçlarında alt sıralara itilir ve "Benzer Uygulamalar" öneri listelerinden çıkarılır.
App Store Değerlendirmeleri: Sık çöken uygulamalar, kullanıcılar tarafından doğrudan 1 yıldızlı değerlendirmeler ve olumsuz yorumlarla cezalandırılır. Mağaza puanı 4.0'ın altına düşen uygulamaların organik indirme dönüşüm oranı %50'nin üzerinde kayba uğrar.
Crash Analytics Sistemleri Teknik Olarak Nasıl Çalışır?
Crash Analytics altyapısının arkasındaki mühendislik, işletim sisteminin sinyal yakalama mekanizmaları, bellek yönetimi ve asenkron ağ transferi protokolleri üzerine kuruludur. İstemci tarafındaki SDK, uygulamanın yaşam döngüsüne (lifecycle) entegre olarak işletim sisteminin çökme yakalayıcılarına (exception handlers) kendi kancalarını (hook) yerleştirir. Bu yapı üç ana aşamadan oluşan bir boru hattı (pipeline) üzerinde çalışır.
1. SDK Entegrasyonu ve Veri Toplama
Entegrasyon süreci, uygulamanın başlatılma (initialization) koduna hafif bir SDK kütüphanesinin eklenmesiyle başlar. SDK, Android tarafında Thread.setDefaultUncaughtExceptionHandler, iOS tarafında ise NSSetUncaughtExceptionHandler ve Mach/POSIX sinyal işleyicilerini (SIGSEGV, SIGABRT, SIGBUS, SIGILL) dinlemeye alır.
Çökme gerçekleştiği mikro saniyede, işletim sistemi süreci tamamen öldürmeden önce SDK araya girer. Bu aşamada SDK:
Çökmenin yaşandığı thread'i dondurur.
Çağrı yığınındaki (call stack) bellek işaretçilerini (memory pointers) toplar.
Cihazın anlık durumunu (kullanılabilir RAM, disk alanı, batarya durumu, oryantasyon) yerel bir dosyaya (crash dump/payload) yazar.
Çökme sonrasında uygulama yeniden başlatıldığında, bu yerel dosyayı arka planda şifreli (TLS 1.3) bir HTTP isteği ile analitik sunucusuna gönderir.
2. Stack Trace (Yığın İzleme) ve Log Oluşturma
İstemci tarafından gönderilen ham çökme raporu, insanlar tarafından doğrudan okunamaz. Çünkü üretim ortamındaki uygulamalar boyut optimizasyonu ve güvenlik amacıyla küçültülür (minify), karıştırılır (obfuscate) ve derlenmiş makine koduna dönüştürülür. Örneğin, Android'de ProGuard veya R8, iOS'te ise LLVM derleyicisi değişken ve metod isimlerini a.b.c() gibi anlamsız karakterlere dönüştürür.
Bu ham bellek adreslerinin okunabilir kaynak koduna dönüştürülmesi işlemine Sembolik Çözümleme (Symbolication / De-obfuscation) denir:
iOS (dSYM): Xcode derleme sırasında hata ayıklama sembollerini içeren
dSYM(Debug Symbol) dosyaları üretir. Crash Analytics sunucusu, ham crash adreslerini dSYM ile eşleştirerek çökmenin hangi Swift/Objective-C dosyası ve satırında olduğunu bulur.Android (Mapping.txt): R8/ProGuard tarafından üretilen
mapping.txtdosyası analitik paneline yüklenir. Sunucu,a.b()çağrısınıOrderController.processPayment()şekline geri dönüştürür.
3. Kök Neden (Root Cause) Analizi ve Raporlama
Sembolik çözümleme tamamlandıktan sonra, analitik platformunun büyük veri işleme motoru devreye girer. Platform, binlerce farklı cihazdan gelen milyonlarca çökme kaydını analiz ederek aynı kök nedenden kaynaklanan olayları tek bir başlık altında kümeler (issue grouping/clustering).
Kümeleme algoritması, stack trace'in en üstündeki kritik fonksiyon imzalarını inceler. Bu sayede yazılım ekipleri 10.000 ayrı çökme kaydı yerine, "Ödeme ekranında NullPointerException (10.000 kullanıcı etkilendi)" şeklinde tek bir eyleme dönüştürülebilir hata başlığı görür. Platform ayrıca hatanın ilk hangi sürümde ortaya çıktığını, hangi işletim sistemi sürümlerinde yoğunlaştığını ve kullanıcı breadcrumb'larını birleştirerek kök neden analizini tamamlar.
En Sık Karşılaşılan Mobil Uygulama Hata Türleri
Mobil uygulama ekosisteminde hata izleme, yalnızca uygulamanın aniden kapanmasıyla sınırlı değildir. Hatalar, kullanıcının hissettiği etki derecesine ve sistem kaynaklarına verdikleri zarara göre farklı kategorilere ayrılır. Karar vericilerin ve teknik liderlerin bu ayrımı netleştirmesi, doğru SLA ve iyileştirme hedefleri koyabilmeleri için şarttır.
Fatal Exceptions (Kritik Çökmeler)
Fatal Exception, uygulamanın çalışmasını sürdürmesini imkansız kılan ve işletim sistemi tarafından uygulamanın anında sonlandırılmasına yol açan yakalanmamış (unhandled) hatalardır. Bu hatalar, doğrudan Crash-Free Session metriğini düşürür.
Yaygın fatal exception örnekleri:
NullPointerException / Fatal Nil Pointer: Bellekte var olmayan (null/nil) bir referansa veya nesne özelliğine erişilmeye çalışıldığında meydana gelir. Mobil dünyada en sık görülen çökme türüdür.
IndexOutOfBoundsException: Bir listenin veya dizinin mevcut eleman sınırlarının dışındaki bir indekse erişim sağlandığında tetiklenir (örneğin 5 elemanlı bir diziden 6. elemanı istemek).
OutOfMemoryError (OOM): Uygulamanın talep ettiği bellek miktarının, işletim sisteminin o uygulamaya ayırdığı RAM sınırını (heap limit) aşması durumudur. Genellikle yüksek çözünürlüklü görsellerin optimize edilmeden belleğe yüklenmesiyle oluşur.
EXCBADACCESS / SIGSEGV (iOS): Uygulamanın daha önce serbest bırakılmış (deallocated) veya kendisine ait olmayan bir bellek adresine erişmeye çalışması sonucu işletim sistemi tarafından fırlatılan çekirdek sinyalidir.
Non-Fatal Exceptions (Arka Plan Hataları)
Non-fatal exception'lar, uygulamanın çökmesine yol açmayan ancak belirli bir işlevin doğru çalışmasını engelleyen, kod içinde try-catch blokları ile yakalanmış durumlardır. Uygulama kapanmaz ancak kullanıcı bir hata mesajı ile karşılaşabilir veya buton işlevsiz kalabilir.
Örnek senaryolar:
Bir REST API'nin
500 Internal Server Errorveya503 Service Unavailabledönmesi.Yerel veritabanına (SQLite/Realm) yazma işlemi sırasında kilitlenme (deadlock) yaşanması.
JSON parsing hatası nedeniyle dinamik arayüz bileşeninin ekrana çizilememesi.
Modern crash analytics araçları, bu yakalanmış istisnaların da özel loglar (handled exceptions) olarak kaydedilmesine olanak tanır. Böylece kullanıcı fark etmese bile arka planda başarısız olan API çağrıları veya bozuk veri akışları izlenebilir.
ANR (Application Not Responding) ve Bellek Sızıntıları (Memory Leaks)
Özellikle Android platformunda kritik olan ANR (Application Not Responding), uygulamanın ana iş parçacığının (Main/UI Thread) 5 saniyeden uzun süre kilitlenmesi durumunda ortaya çıkar. Kullanıcı ekrana dokunduğunda sistem tepki vermez ve işletim sistemi kullanıcıya "Uygulama Yanıt Vermiyor: Kapat / Bekle" uyarısı gösterir.
ANR'ların temel nedenleri:
Ana iş parçacığı üzerinde ağır veritabanı okuma/yazma veya I/O işlemleri yapmak.
UI Thread üzerinde senkron ağ istekleri çalıştırmak.
UI Thread üzerinde karmaşık algoritmalar veya görsel işleme operasyonları yürütmek.
Bellek Sızıntıları (Memory Leaks) ise, artık ihtiyaç duyulmayan nesnelerin çöp toplayıcı (Garbage Collector) veya ARC (Automatic Reference Counting) tarafından bellekten temizlenememesi durumudur. Zamanla biriken sızıntılar uygulamanın yavaşlamasına, cihazın ısınmasına ve nihayetinde OOM (Out of Memory) çökmesine yol açar.
Uygulama Hataları Nasıl İzlenir ve Yönetilir? (Adım Adım İzleme Stratejisi)
Uygulama hatalarını başarıyla izlemek, yalnızca bir SDK yükleyip paneli izlemekten ibaret değildir. Sürecin, geliştirme yaşam döngüsüne (SDLC) ve sürekli entegrasyon/sürekli dağıtım (CI/CD) hatlarına entegre edilmiş kurumsal bir disipline dönüştürülmesi gerekir. Proaktif bir hata yönetim süreci dört temel aşamadan oluşur.
Mobil uygulama kararlılığını sağlamak için uygulanması gereken operasyonel adımlar. Platform ve bütçe gereksinimlerine uygun analitik SDK'sını seçip uygulamanın başlangıç döngüsüne entegre edin. Her yeni sürüm derlemesinde sembol dosyalarını analitik sunucusuna otomatik olarak yükleyen pipeline kurun. Slack, PagerDuty veya e-posta entegrasyonları ile çökme fırlamalarında (spike) anlık tetiklenen alarmlar oluşturun. Gelen hataları kullanıcı etki hacmine göre sınıflandırıp Jira/GitHub Issues üzerinden ilgili sprint'e atayın.Adım Adım Hata İzleme Stratejisi
İhtiyaca Uygun SDK'nın Belirlenmesi ve Entegrasyonu
Derleme Sembollerinin (dSYM / Mapping.txt) CI/CD'ye Bağlanması
Akıllı Alarm ve Bildirim Eşiklerinin Tanımlanması
Triyaj (Önceliklendirme) ve SLA Süreçlerinin Yürütülmesi
Doğru Crash Analytics Aracının Seçilmesi
Araç seçimi; uygulamanın mimarisine (Native, Flutter, React Native, Unity), veri gizliliği politikalarına (GDPR/KVKK) ve şirketin bütçesine göre yapılmalıdır. Ücretsiz çözümler temel çökme izleme için yeterli olabilirken, karmaşık dağıtık sistemlerde performans izleme (APM) ve distributed tracing sunan gelişmiş platformlara ihtiyaç duyulur.
Seçim kriterleri arasında:
SDK'nın uygulama başlatma süresine (cold start time) ve ikili dosya boyutuna (binary size/IPA-APK size) etkisi,
NDK / C++ (native crash) çökme desteği,
Ağ çağrıları ve kullanıcı etkileşim izleri (breadcrumbs) toplama kabiliyeti,
Canlı oturum tekrarı (session replay) yetenekleri yer almalıdır.
ProGuard/R8 ve dSYM Yapılandırması ile Kod Çözümleme
En sık yapılan operasyonel hata, uygulamanın yayınlanması ancak sembol dosyalarının analitik sunucusuna iletilmemesidir. Bu durum panellerde Unknown Source:12 şeklinde çözümlenemeyen, kök nedeni anlaşılamayan çökme kayıtlarına yol açar.
Bu sorunu kalıcı olarak çözmek için CI/CD (GitHub Actions, GitLab CI, Fastlane, Bitrise) süreçlerine otomatik sembol yükleme adımı eklenmelidir:
Fastlane Entegrasyonu:
download_dsymsveyaupload_symbols_to_crashlyticseylemleri derleme sonrası otomatik tetiklenmelidir.Gradle Otomasyonu: Android tarafında
firebaseCrashlytics { mappingFileUploadEnabled true }yapılandırması release derlemelerinde zorunlu tutulmalıdır.
Gerçek Zamanlı Alarm (Alert) Sistemlerinin Kurulması
Her çökmeye aynı derecede acil müdahale edilemez. Ekiplerin alarm yorgunluğu (alert fatigue) yaşamasını engellemek için kurallar doğru kurgulanmalıdır:
Hız Eşiği (Velocity Alerts): Bir saat içinde aynı hatanın 500'den fazla kullanıcıyı etkilemesi durumunda nöbetçi mühendise (On-Call) PagerDuty çağrısı düşmelidir.
Yeni Çökme Bildirimi: Yeni yayınlanan bir sürümde daha önce hiç görülmemiş bir fatal exception tetiklendiğinde ilgili ürün ekibinin Slack kanalına anlık mesaj iletilmelidir.
Regresyon Bildirimi: Önceki sürümlerde çözülmüş ("Resolved") olarak işaretlenen bir hatanın yeni sürümde tekrar ortaya çıkması durumunda otomatik olarak kritik öncelikli görev açılmalıdır.
Hata Önceliklendirme (Triage) Süreci
Analitik paneline düşen yüzlerce hata kaydı belirli bir iş akışıyla yönetilmelidir. Triyaj süreci şu adımlarla yürütülür:
[Yeni Hata Algılandı]
|
v
[Etki Analizi] ---> Etkilenen Kullanıcı Oranı > %1 veya Satış Hunisinde mi?
|
+---> EVET: [P0 / Blocker] -> Acil Hotfix Süreci -> Kademeli Dağıtımı Durdur
|
+---> HAYIR: [P1 / P2] -> Jira Backlog'una Ekle -> Gelecek Sprint Planına AlKurumsal Ölçekte En Güvenilir Crash Analytics Araçları
Mobil uygulama hata izleme pazarında farklı kullanım senaryolarına, bütçelere ve teknik gereksinimlere hitap eden güçlü araçlar bulunmaktadır. Doğru aracı seçmek, ekibin hata çözme hızını ve toplam sahip olma maliyetini (TCO) doğrudan etkiler.
Firebase Crashlytics
Google ekosisteminin bir parçası olan Firebase Crashlytics, mobil uygulama pazarında en yaygın kullanılan ücretsiz ve hafif (lightweight) çökme analitiği aracıdır.
Avantajları: Google Analytics, BigQuery ve Google Play Console ile yerel entegrasyon. Ücretsiz kullanım modeli. Hızlı ve kolay SDK kurulumu.
Kısıtlamaları: Gelişmiş APM (Application Performance Monitoring) metriklerinin sınırlı olması, derin backend distributed tracing eksikliği ve özelleştirilmiş dashboard yeteneklerinin kısıtlılığı.
Uygunluk: Başlangıç seviyesinden büyük ölçekli projelere kadar temel çökme izleme ihtiyacı duyan tüm mobil ekipler.
Sentry
Açık kaynak kökenli Sentry hem mobil hem web hem de sunucu taraflı (full-stack) hata izleme konusunda endüstri standardı haline gelmiş bir platformdur.
Avantajları: Uçtan uca izlenebilirlik (frontend çökmesi ile buna sebep olan backend API hatasını ilişkilendirebilme), zengin breadcrumb desteği, gelişmiş hata etiketleme (tagging) ve oturum tekrarı (Session Replay). Hem bulut (SaaS) hem de şirket içi (on-premise) kurulum seçeneği.
Kısıtlamaları: Büyük ölçekli veri hacimlerinde kullanım bazlı ücretlendirme maliyetleri artabilir.
Uygunluk: Full-stack çalışan, mikroservis mimarisine sahip ve derin teknik analiz talep eden orta ve büyük ölçekli mühendislik organizasyonları.
Instabug ve Datadog
Instabug: Özellikle mobil odaklı hata izleme, kullanıcı geri bildirim yönetimi (in-app bug reporting) ve uygulama performans izleme (APM) alanında uzmanlaşmıştır. Kullanıcının cihazı sallayarak ekran görüntüsüyle hata bildirmesini sağlayan modülüyle test ve canlı süreçlerde çok güçlüdür.
Datadog: Kurumsal düzeyde tüm bulut altyapısını, sunucuları ve mobil istemcileri tek bir merkezi gözlemleme (observability) platformunda birleştirmek isteyen büyük işletmeler için uygundur. Maliyeti yüksektir ancak kurumsal güvenlik, uyumluluk ve özelleştirme imkanları en üst düzeydedir.
Karşılaştırma Tablosu
Kriter bazında avantajlar ve dezavantajları karşılaştırın.
Fiyatlandırma Modeli
Avantaj
Ücretsiz
Dezavantaj
Freemium / Kullanım Bazlı
Full-Stack Tracing
Avantaj
Sınırlı
Dezavantaj
Çok Güçlü
Session Replay
Avantaj
Yok
Dezavantaj
Var
In-App Bug Reporting
Avantaj
Yok
Dezavantaj
Yok
On-Premise Kurulum
Avantaj
Yok
Dezavantaj
Var (Self-Hosted)
Hedeflenmesi Gereken İdeal "Crash-Free" Oranı Nedir?
Mobil uygulama kalitesini değerlendirirken kullanılan en kritik iki KPI: Crash-Free Sessions (Çökmesiz Oturum Oranı) ve Crash-Free Users (Çökmesiz Kullanıcı Oranı)'dır. Karar vericilerin bu iki metrik arasındaki farkı anlaması, ürün kalitesini doğru okuyabilmeleri adına elzemdir.
Crash-Free Sessions: Başlatılan toplam oturumların yüzde kaçının çökme olmadan tamamlandığını gösterir.
(1 - (Çöken Oturum Sayısı / Toplam Oturum Sayısı)) * 100formülüyle hesaplanır.Crash-Free Users: Belirli bir zaman diliminde uygulamayı kullanan toplam tekil kullanıcıların yüzde kaçının hiç çökme yaşamadığını belirtir.
Endüstri Standartları ve Beklentiler
Mobil yazılım sektöründe kabul gören kararlılık eşikleri şu şekildedir:
%99,9 ve Üzeri (Altın Standart / Elite): Finans, bankacılık ve lider e-ticaret uygulamalarının hedeflediği seviyedir. Her 1.000 oturumdan en fazla 1'inde çökme görülür. Üst düzey kullanıcı deneyimi ve kusursuz mağaza puanı sağlar.
%99,5 - %99,8 (Kabul Edilebilir / Sağlıklı): Çoğu kurumsal B2C ve B2B mobil uygulama için endüstri standardı kabul edilir. Uygulama mağazası algoritmaları bu seviyedeki uygulamaları cezalandırmaz.
%99,0 - %99,4 (İyileştirme Gerektiren / Riskli): Kullanıcı deneyiminde hissedilir problemler vardır. Mağaza puanlarında 1 yıldızlı yorumların artmaya başladığı eşiktir. Teknik borç temizliği planlanmalıdır.
< %99,0 (Kritik / Kabul Edilemez): Uygulamanın her 100 oturumundan en az birinin çöktüğü anlamına gelir. Google Play Vitals cezalarına, yüksek churn oranına ve ciddi gelir kaybına neden olur. Acil müdahale (P0) gerektirir.
Proaktif Hata İzleme ile İş Sürekliliğini Sağlama
Mobil uygulama geliştirme döngüsü, ürünün mağazada yayınlanmasıyla sona ermez; aksine gerçek sınav o anda başlar. Kullanıcıların karşılaştığı hataları sosyal medyadan veya mağaza yorumlarından öğrenen reaktif organizasyonlar, hem marka prestijini hem de pazar payını hızla kaybeder. Crash Analytics altyapısı, şirketleri bu reaktif sarmaldan çıkarıp hataları kullanıcı fark etmeden çözen proaktif bir yapıya kavuşturur.
Teknik mükemmeliyet, yalnızca kod yazma kalitesiyle değil; canlıya alınan kodun nasıl izlendiği ve beklenmedik durumlara ne kadar hızlı yanıt verildiğiyle ölçülür. Kademeli dağıtım (staged rollout) stratejileri, otomatik alarm kurguları, sembolik çözümleme pipeline'ları ve disiplinli bir triyaj kültürü ile desteklenen bir hata izleme mekanizması, dijital ürünlerin uzun vadeli başarısının ve iş sürekliliğinin temel garantisidir.
Sıkça Sorulan Sorular
Crash Analytics SDK'ları mobil uygulamanın performansını ve açılış hızını olumsuz etkiler mi?
Kaliteli Crash Analytics SDK'ları asenkron ve hafif (lightweight) mimaride tasarlanır; bu nedenle uygulamanın açılış hızına (cold start) etkisi genellikle 5-15 milisaniye gibi ihmal edilebilir düzeydedir. Çökme anında toplanan veriler yerel diskte tutulup uygulama bir sonraki başlatıldığında arka planda gönderildiği için ağ trafiği veya pil tüketimi üzerinde hissedilir bir yük oluşturmaz.
Android'deki ANR (Application Not Responding) hatası ile normal çökme (Crash) arasındaki temel fark nedir?
Normal çökme (crash), kodda yakalanmayan bir istisna nedeniyle uygulamanın işletim sistemi tarafından anında sonlandırılmasıdır. ANR ise uygulamanın ana iş parçacığının (UI thread) 5 saniyeden uzun süre kilitlenmesi durumunda işletim sisteminin kullanıcıya uygulamayı kapatma veya bekleme seçeneği sunmasıdır; yani uygulama doğrudan kapanmaz ancak kullanıcı etkileşimine tamamen yanıt veremez hale gelir.
Çökme raporlarında görülen dSYM veya ProGuard/R8 mapping dosyası ne işe yarar?
Üretim ortamında derlenen uygulamalar güvenlik ve boyut optimizasyonu amacıyla karıştırılır (obfuscation) ve makine koduna dönüştürülür. dSYM (iOS) ve mapping.txt (Android) dosyaları, bu karıştırılmış bellek adreslerini ve anlamsız fonksiyon adlarını orijinal kaynak kodundaki dosya adı, metod ve satır numarası haline geri dönüştürerek (sembolik çözümleme) hatanın yerini okunabilir kılar.
Crash Analytics loglarında kişisel verilerin (PII) saklanması KVKK ve GDPR açısından risk oluşturur mu?
Evet, çökme loglarına, özel anahtarlara (custom keys) veya breadcrumb kayıtlarına kullanıcıların e-posta, parola, kredi kartı veya T.C. kimlik numarası gibi kişisel verilerinin (PII) yazılması ciddi yasal ihlal oluşturur. Ekiplerin loglama mekanizmalarında veri maskeleme (data sanitization) uygulaması ve kullanıcı tanımlayıcısı olarak yalnızca anonimleştirilmiş tekil ID'ler (UUID) kullanması zorunludur.
Mobil uygulamalar için hedeflenmesi gereken kabul edilebilir minimum Crash-Free Session oranı kaçtır?
Kurumsal ve ticari mobil uygulamalar için sektör standardı kabul edilen alt sınır %99,5 Crash-Free Session oranıdır. Finans, bankacılık ve yüksek hacimli e-ticaret uygulamalarında ise bu hedefin %99,9 ve üzerinde (altın standart) tutulması, mağaza algoritmalarında geriye düşmemek ve müşteri kaybını önlemek için kritik kabul edilir.
Sentry ile Firebase Crashlytics arasındaki en belirgin mimari fark nedir?
Firebase Crashlytics tamamen mobil odaklı, ücretsiz ve temel çökme izleme süreçleri için hızlı kurulan bir çözüm sunarken; Sentry, mobil istemciden backend API ve veritabanı sorgularına kadar uçtan uca (full-stack) dağıtık izleme (distributed tracing) ve canlı oturum tekrarı (session replay) yetenekleri sunan daha kapsamlı bir gözlemleme (observability) platformudur.
Yeni bir uygulama sürümü yayınlandığında çökme artışlarını (crash spike) önlemek için nasıl bir dağıtım stratejisi izlenmelidir?
Yeni sürümler doğrudan tüm kullanıcılara açılmamalı; Google Play ve App Store üzerinde kademeli dağıtım (phased/staged rollout) stratejisiyle önce %1, %5, %20 gibi küçük kullanıcı gruplarına sunulmalıdır. Her aşamada Crash Analytics panellerinden çökme oranları ve yeni ölümcül hatalar izlenmeli, olağandışı bir fırlama tespit edilirse dağıtım anında durdurularak hotfix hazırlanmalıdır.
Non-fatal (yakalanmış) istisnalar neden Crash Analytics paneline gönderilmelidir?
Try-catch blokları ile yakalanan non-fatal hatalar uygulamayı doğrudan çökertmese de arka planda başarısız olan API istekleri, bozuk veritabanı yazımları veya çalışmayan butonlar gibi işlevsel aksaklıklara yol açar. Bu istisnaların analitik paneline özel log olarak iletilmesi, kullanıcının hissettiği ancak uygulamanın kapanmadığı gizli sürtünme noktalarının tespit edilmesini sağlar.