Bulut Teknolojileri

Uygulama Çökmelerini Müşteriden Önce Öğrenin: Hangi Metrikler Gece Yarısı Sizi Uyandırmalı?

08 Oct 2026
10 dakika okuma
Ininia Teknoloji
2

Bir yazılım yöneticisi veya teknik kurucu olarak, sistem çökmesini müşteriden öğrenmek, hem itibar hem de iş sürekliliği açısından en istenmeyen senaryodur. Bu durumu engellemek için, kritik iş süreçlerini, kullanıcı deneyimini ve altyapı sağlığını doğrudan yansıtan, eşik değerleri iyi tanımlanmış metrikler sizi proaktif olarak uyarmalıdır. Özellikle hata oranları, yanıt süreleri ve temel kaynak kullanımı gibi göstergeler, potansiyel bir sorunun habercisi olarak gece yarısı sizi uyandıracak kadar önemli olmalıdır.

Kritik İş Süreçlerini Kesen Hataları İzlemek: Hata Oranları ve İstisnalar

Uygulamanızın temel işlevlerini yerine getiremediğini gösteren en doğrudan metrikler, hata oranları ve sistem tarafından fırlatılan istisnalardır. Herhangi bir uygulamanın birincil amacı, kullanıcılara beklenen değeri sunmaktır. Bu değerin sunulamaması, genellikle HTTP 5xx yanıt kodları, uygulama seviyesinde yakalanmayan istisnalar veya iş mantığı hataları olarak kendini gösterir. Örneğin, bir ödeme sisteminde `HTTP 500 Internal Server Error` yanıtlarının ani artışı veya yeni kullanıcı kaydı sırasında fırlatılan `DatabaseConnectionFailed` istisnaları, müşteriye ulaşmadan önce fark edilmesi gereken kritik durumlardır.

Alarm eşiklerini belirlerken, mutlak sayıların yanı sıra yüzde bazında artışları da göz önünde bulundurmalısınız. Örneğin, hata oranında ani bir artış veya kritik bir API endpoint'inde `HTTP 503 Service Unavailable` hatası, acil müdahale gerektiren bir durumun göstergesi olabilir. Eşiklerinizi belirlerken uygulamanızın normal davranış kalıplarını (baseline) iyi anlamanız önemlidir.

Ayrıca, belirli iş süreçleriyle doğrudan ilişkili hatalara odaklanın. Tüm 5xx hatalarını değil, örneğin `ödeme-işle` veya `sipariş-oluştur` gibi kritik API'lara gelen 5xx hatalarını ayrı ayrı ve daha hassas eşiklerle izleyin. Bu, alarm gürültüsünü azaltırken gerçek sorunları daha hızlı tespit etmenizi sağlar.

Özellikle dış sistemlerle entegrasyonlarda ortaya çıkan hatalar, uygulamanızın kendi içinde stabil olsa bile dış bağımlılıklar nedeniyle çökmesine yol açabilir. Örneğin, bir GİB e-Fatura entegrasyonunda veya bir açık bankacılık servisinde yaşanan kesintiler, sizin uygulamanızın da işlevsiz kalmasına neden olabilir. Bu tür senaryolarda, entegrasyon katmanında spesifik hata kodlarını veya zaman aşımlarını izlemek, sorunun kaynağını hızla belirlemenize yardımcı olur.

Kullanıcı Deneyimini Yansıtan Metrikler: Yanıt Süreleri ve İşlem Başarısızlıkları

Bir uygulamanın performansı, doğrudan kullanıcı deneyimini etkiler. Uygulama çökmesi olmasa bile, kabul edilemez derecede yavaş yanıt süreleri veya kritik işlemlerin tamamlanamaması, müşteriler için bir çökme kadar kötü bir deneyim yaratabilir. Bu nedenle, ortalama yanıt süreleri, p95/p99 gecikme değerleri ve kritik iş akışlarının başarı oranları, yakından izlenmesi gereken metriklerdir.

  1. API Yanıt Süreleri: Uygulamanızın dış dünyaya açılan veya dahili servisler arası iletişimi sağlayan API'larının ortalama ve persentil (p95, p99) yanıt süreleri. Örneğin, bir kullanıcı giriş API'sının 2 saniyenin üzerinde yanıt vermesi veya sipariş tamamlama API'sının p99 yanıt süresinin 5 saniyeyi aşması, hemen müdahale gerektiren bir durumdur.
  2. Kritik İşlem Başarı Oranları: Kullanıcıların tamamlaması beklenen temel iş akışlarının başarı yüzdesi. Örneğin, "ürün sepete ekle", "ödeme yap", "kayıt ol" gibi işlemlerin başarı oranları düştüğünde alarm tetiklenmelidir. Bu metrik, sadece teknik hataları değil, aynı zamanda iş mantığı hatalarını veya dış entegrasyon sorunlarını da yansıtabilir.
  3. Kaynak Yükleme Süreleri (Frontend): Özellikle web tabanlı uygulamalar için, sayfa yükleme süreleri, etkileşim zamanı (Time to Interactive) gibi metrikler, doğrudan kullanıcı algısını etkiler. (bkz. web.dev Web Vitals) Bu metrikler, sadece backend sorunlarını değil, aynı zamanda frontend optimizasyon eksikliklerini veya CDN sorunlarını da gösterebilir.

Bu metrikler için eşik değerlerini belirlerken, kullanıcıların beklentilerini ve işinizin kritikliğini göz önünde bulundurun. Örneğin, bir finans uygulamasındaki gecikmeler, bir haber sitesindeki gecikmelerden çok daha kritik olabilir. Belirlenen eşiklerin üzerinde sürekli veya ani artışlar, bir performans darboğazı veya altyapısal bir sorunun habercisi olabilir.

Altyapı Sağlığını Gösteren Temel Metrikler: Kaynak Kullanımı ve Bağımlılık Durumları

Uygulamanızın üzerinde çalıştığı altyapının sağlığı, genel sistemin stabilitesi için hayati öneme sahiptir. Çoğu zaman uygulama çökmeleri, altyapı kaynaklarının tükenmesi veya bağımlı servislerdeki sorunlardan kaynaklanır. Bu nedenle, sunucu kaynak kullanımı ve bağımlı servislerin durumu yakından izlenmelidir.

  • CPU Kullanımı: Sunucularınızdaki CPU kullanımının ani veya sürekli artışı. Belirli bir eşik değerinin aşılması, uygulamanızın işlem gücü sıkıntısı çektiğini veya sonsuz döngü gibi bir hata içerdiğini gösterebilir.
  • Bellek (RAM) Kullanımı: Bellek tüketiminin beklenenin üzerine çıkması, bellek sızıntısı veya yanlış yapılandırılmış önbellekleme mekanizmaları gibi sorunlara işaret edebilir. Bellek eşikleri genellikle belirli bir seviyede belirlenir.
  • Disk G/Ç (I/O) ve Alan Kullanımı: Özellikle veritabanı sunucuları veya loglama servisleri için disk I/O hızları kritik olabilir. Disk alanının tükenmesi (dijital hizmet kesintilerinin yaygın nedenlerinden biridir) ise uygulamanın log yazamamasına veya geçici dosyaları oluşturamamasına yol açarak çökmesine neden olabilir.
  • Ağ Trafiği ve Bağlantıları: Ağ arayüzlerindeki trafik artışı veya açık bağlantı sayılarındaki anormal yükselişler, DDoS saldırısı, yanlış yapılandırma veya bir servis mesh'indeki sorunlar gibi durumlara işaret edebilir.
  • Veritabanı Metrikleri: Veritabanı bağlantı havuzu doluluğu, yavaş sorgular, kilitlenmeler ve replikasyon gecikmeleri gibi metrikler, veritabanı katmanındaki potansiyel sorunları gösterir.
  • Harici Bağımlılıkların Sağlığı: Kendi kontrolünüz dışındaki üçüncü taraf API'lar, mikroservisler veya mesaj kuyrukları gibi bağımlılıkların durumunu izlemek. Basit bir HTTP health check veya sentetik işlemlerle bu bağımlılıkların ulaşılabilirliğini ve yanıt sürelerini kontrol etmek önemlidir.

Bu metrikler için eşik değerleri, genellikle uygulamanızın ve altyapınızın normal çalışma yükü altında elde edilen baseline değerlerine göre belirlenir. Ani ve keskin yükselişler veya düşüşler (örneğin, trafik aniden sıfıra düşerse), bir sorunun habercisi olabilir.

Alarm Tasarımının Püf Noktaları: Gürültüyü Azaltmak ve Doğru Kişiyi Uyandırmak

Doğru metrikleri izlemek kadar, doğru alarm tasarımını yapmak da önemlidir. Aşırı duyarlı veya yanlış yapılandırılmış alarmlar, "alarm yorgunluğuna" (alert fatigue) yol açar ve gerçek kritik durumlarda ekibinizin tepki verme yeteneğini azaltır. Hedef, yalnızca gerçekten müdahale gerektiren durumlarda uyarı almak ve bu uyarıların ilgili kişilere ulaşmasını sağlamaktır.

Alarm Tipi Açıklama Kullanım Alanı Tuzaklar
Statik Eşikler Metriğin belirli bir değeri aştığında veya altına düştüğünde tetiklenir. CPU kullanımında artış, Hata oranında artış. Uygulamanın dinamik yükünü göz ardı edebilir, alarm yorgunluğuna yol açabilir.
Anomali Tespiti Metriğin normal davranış kalıbından sapma gösterdiğinde tetiklenir. Makine öğrenimi tabanlıdır. Beklenmedik trafik düşüşleri, anormal yanıt süresi artışları. Başlangıçta yanlış pozitifler verebilir, eğitim süreci gerektirir.
Trend Tabanlı Metriğin belirli bir süre içinde sürekli olarak kötüleştiği durumlarda tetiklenir. Hata oranlarının son 30 dakikada sürekli artması. Ani çöküşleri kaçırabilir, daha yavaş gelişen sorunlar için idealdir.

Alarmın tetiklenme sıklığı ve gecikmesi de önemlidir. Anlık bir spike için hemen alarm üretmek yerine, "son 5 dakikadır eşik değerinin üzerinde" gibi koşullar belirlemek, geçici dalgalanmalar için gereksiz uyarıları engeller. Ayrıca, alarmlarınıza bir ciddiyet seviyesi (uyarı, kritik) atayın ve bu seviyelere göre farklı bildirim kanalları (e-posta, SMS, çağrı) ve eskalasyon politikaları tanımlayın.

Örneğin, `uyarı` seviyesindeki bir alarm mesai saatlerinde Slack'e düşerken, `kritik` seviyesindeki bir alarm gece yarısı ilgili ekibi telefonla uyandırmalıdır. Her alarm için bir runbook veya müdahale kılavuzu hazırlamak, soruna hızlı ve tutarlı bir şekilde yanıt verilmesini sağlar. Bu kılavuzlar, sorunun ne olduğunu, nasıl doğrulanacağını ve ilk müdahale adımlarını içermelidir.

Metriklerin Ötesi: Loglama ve İzleme (Tracing) ile Kök Nedeni Bulmak

Metrikler, "ne oldu?" sorusuna hızlı bir yanıt verirken, "neden oldu?" sorusunun cevabını bulmak için genellikle daha derinlemesine bilgilere ihtiyaç duyarız. İşte bu noktada loglama ve dağıtık izleme (distributed tracing) devreye girer. Yalnızca metriklerle sınırlı kalmak, sorunun semptomlarını görmek ancak kök nedenini belirlemekte zorlanmak anlamına gelir.

  1. Yapılandırılmış Loglama: Uygulamanızın ürettiği logları yapılandırılmış bir formatta (JSON gibi) toplamak, merkezi bir log yönetim sistemi (ELK Stack, Grafana Loki vb.) kullanarak aranabilir ve analiz edilebilir hale getirmek kritik öneme sahiptir. Her bir log kaydında, hata kodu, işlem kimliği, kullanıcı kimliği, modül adı gibi bağlamsal bilgilerin bulunması, hata ayıklama sürecini hızlandırır. (bkz. OWASP Top 10)
  2. Dağıtık İzleme (Distributed Tracing): Mikroservis mimarilerinde, tek bir kullanıcı isteğinin birden fazla servis üzerinden geçmesi yaygındır. Dağıtık izleme, bu isteğin yaşam döngüsünü baştan sona takip etmenizi sağlar. Her servisin isteğe ne kadar sürede yanıt verdiğini, hangi hataların oluştuğunu ve darboğazın nerede olduğunu görselleştirebilirsiniz. Bu, bir performans düşüşünün veya hatanın hangi serviste başladığını anlamak için vazgeçilmezdir. OpenTelemetry gibi standartlar, farklı servisler ve diller arasında izleme verilerini toplamak için iyi bir temel sunar.
  3. Profilleme ve Hata Ayıklama Araçları: Üretim ortamında kod seviyesinde performans darboğazlarını veya bellek sızıntılarını tespit etmek için sürekli profilleme (continuous profiling) araçları kullanılabilir. Ayrıca, hata yakalama servisleri (Sentry, Bugsnag) istisnaları otomatik olarak toplayıp gruplandırarak size kod seviyesinde detaylı bilgi sunar.

Bir alarm tetiklendiğinde, ilk yapılması gereken loglara ve izleme verilerine bakmaktır. Metriklerin gösterdiği anormalliğin detaylarını bu verilerde aramalısınız. Örneğin, bir API'nin yanıt süresi artışı alarmı tetiklediğinde, dağıtık izleme ile hangi iç servisin yavaşladığını veya hangi veritabanı sorgusunun zaman aşımına uğradığını hızlıca tespit edebilirsiniz.

Bu bütüncül yaklaşım, müşteriyi uyandırmadan önce sorunu tespit etme ve çözme yeteneğinizi önemli ölçüde artırır. Eğer bu yetkinlikleri kendi ekibinizle kurmakta zorlanıyorsanız, dışarıdan bu alanda uzmanlaşmış bir ekiple çalışmak, sistemlerinizin güvenilirliğini artırmanın doğru bir adımı olabilir.

Bu konuda bir yazılım projesi mi planlıyorsunuz?

Projenizi birlikte analiz edip teknik yol haritasını çıkarabiliriz. Ücretsiz keşif görüşmesi için hemen yazın.

İlgili Hizmetlerimiz

Ininia Teknoloji

İstanbul Teknik Üniversitesi ARI Teknokent'te kurulu Ininia Teknoloji, 12+ yıllık deneyimle AR/VR, yapay zeka ve mobil uygulama alanlarında yenilikçi çözümler sunmaktadır.

Projeniz için profesyonel destek mi arıyorsunuz?

12+ yıllık deneyimimizle dijital dönüşümünüzü hızlandıralım.

Ücretsiz Görüşme Talep Et