Uygulama performans izleme (APM): yavaşlığın kaynağını bulmak
Sözlük

Uygulama performans izleme (APM): yavaşlığın kaynağını bulmak

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 4 dk okuma

APM, uygulamanın yanıt süresini, hatalarını ve bağımlılıklarını canlı izler. İzleme verisi, dağıtık iz ve uyarı mantığını örnekle öğrenin.

APM nedir?

APM, Application Performance Monitoring ifadesinin kısaltmasıdır; Türkçede uygulama performans izleme denir. Çalışan bir yazılımın yanıt süresini, hata oranını, kaynak tüketimini ve diğer sistemlerle olan bağımlılıklarını sürekli ölçüp kayda alan yaklaşımdır.

Bir sunucunun ayakta olup olmadığını söyleyen altyapı izlemesinden farklı olarak APM, uygulamanın içine bakar: hangi istek yavaş, yavaşlık hangi kod satırında ya da hangi veritabanı sorgusunda oluşuyor sorusuna cevap arar. Bu yüzden amacı yalnızca alarm üretmek değil, sorunun kök nedenine ulaşma süresini kısaltmaktır.

APM nasıl çalışır?

Çoğu APM aracı uygulamaya bir ajan ya da kütüphane ekler. Bu ajan, uygulamanın istekleri nasıl işlediğini görmek için kodu enstrümante eder; yani gelen isteğin başladığı ve bittiği anı, çağrılan fonksiyonları, dış servis çağrılarını ve veritabanı sorgularını ölçer. Toplanan veri merkezi bir platforma gönderilir, orada saklanır ve panolara dönüştürülür.

Temel veri türleri şunlardır:

  • Metrikler: yanıt süresi, hata oranı, işlem hacmi gibi sayısal ölçümler.
  • İzler (traces): tek bir isteğin sistemde izlediği yolun adım adım kaydı.
  • Loglar: olay anında üretilen metin kayıtları.

Bunlar bir arada kullanıldığında, panoda görülen bir yavaşlığın hangi isteğe, hangi servise ve hangi log satırına bağlı olduğu eşleştirilebilir.

Dağıtık izleme ve servis haritası

Mikroservis mimarisinde tek bir kullanıcı isteği çok sayıda servisten geçebilir. Dağıtık izleme (distributed tracing), isteğe bir izleme kimliği verip bu kimliği tüm servislerde taşıyarak isteğin yolunu baştan sona bir araya getirir. Her adım bir span olarak kaydedilir ve her span'ın süresi görülür.

APM araçları bu verilerden bir servis haritası çıkarır: hangi servis hangisini çağırıyor, hangi bağlantıda gecikme ya da hata yoğunlaşıyor. Örneğin ödeme sayfası yavaşladığında harita, sorunun ödeme servisinin kendisinde değil, onun çağırdığı bir dış doğrulama servisinde olduğunu gösterebilir. Bu bilgi olmadan ekip, haftalarca yanlış servisi optimize edebilir.

Küçük bir örnek: yavaşlayan sipariş sayfası

Örneğin bir e-ticaret sitesinde kullanıcılar sipariş onay sayfasının geç açıldığından şikayet ediyor. Altyapı izlemesi sunucuların sağlıklı olduğunu söylüyor; CPU ve bellek normal.

APM panosunda ortalama yanıt süresine değil, yüksek yüzdelik dilimdeki isteklere bakılır, çünkü ortalama yavaş istekleri gizler. Yavaş bir isteğin izi açıldığında sürenin büyük kısmının stok kontrolü için çalışan bir veritabanı sorgusunda harcandığı görülür. Sorgu bir döngü içinde tekrar tekrar çağrılmaktadır. Bu bulgu, ekibe doğrudan düzeltilecek kodu gösterir. Düzeltme sonrasında aynı grafikte iyileşme izlenerek sonuç doğrulanır.

Uyarı ve hizmet düzeyi hedefleri

İzleme verisi, birisi bakmadığı sürece işe yaramaz; bu yüzden APM araçları eşik ve anomali tabanlı uyarılar tanımlamaya izin verir. İyi uyarı, kullanıcıyı etkileyen belirtiye bağlıdır: yanıt süresi hedefi aşıldığında ya da hata oranı yükseldiğinde alarm çalar. Sunucu CPU'su gibi nedensel ölçümler ise daha çok araştırma sırasında bakılan yardımcı veridir.

Birçok ekip APM metriklerini hizmet düzeyi göstergelerine (SLI) ve hedeflerine (SLO) bağlar. Böylece performans konuşması "hissediyoruz ki yavaş" yerine "hedef sürenin altında kalan isteklerin oranı düştü" diye somutlaşır. Uyarı gürültüsü, ekibin gerçek alarma duyarsızlaşmasına yol açtığı için eşikler düzenli gözden geçirilir.

RUM, sentetik izleme ve APM farkı

APM sunucu tarafını ölçer. Gerçek kullanıcı izleme (RUM), tarayıcıda ya da mobil uygulamada kullanıcının deneyimlediği yükleme süresini ve etkileşim gecikmesini ölçer. Sentetik izleme ise kontrollü senaryoları belirli aralıklarla kendi çalıştırır ve gerçek kullanıcı olmasa bile sorunu fark eder.

Bu yaklaşımlar birbirini tamamlar: APM sorunun uygulamanın hangi kısmında olduğunu, RUM kullanıcıyı gerçekten etkileyip etkilemediğini, sentetik izleme ise sorunun kullanıcıdan önce yakalanıp yakalanmadığını gösterir. Model izleme (model monitoring) ise makine öğrenmesi modellerinin veri kaymasını ve doğruluğunu ölçen ayrı bir alandır; APM'in ilkeleri ona benzer ancak ölçülen şey farklıdır.

APM'de dikkat edilecek noktalar

Her şeyi ölçmek hem maliyeti hem veri gürültüsünü artırır. Hangi servislerin kritik olduğu, hangi isteklerin örnekleneceği ve hangi verinin ne kadar saklanacağı baştan düşünülür. Kişisel veri içeren parametrelerin izlere ve loglara yazılmaması, veri koruma açısından ayrıca kontrol edilir.

Bir diğer tuzak, izleme aracının kendisini performans yükü yapmasıdır; ajan ayarları ve örnekleme oranı bu yüzden test ortamında denenir. Son olarak izleme verisi dağıtım sürecine bağlanırsa, yeni sürüm sonrası gerileme hemen görülür ve geri alma kararı hızlanır.

Mindset programlarında nerede çalışılır?

Datadog ile Uygulama Performans İzleme (APM) programı, izleme stratejisi ve platform mimarisinden başlayarak APM enstrümantasyonu, performans analizi, gösterge paneli ve raporlama, monitör ve uyarı tasarımı ile log korelasyonu konularını işler. Altyapı, SRE ve geliştirme ekiplerinin ortak kullandığı bir izleme dili kurmak isteyen kurumlar için uygundur.

Synthetic Monitoring ve Gerçek Kullanıcı İzleme (RUM) programı ise kullanıcı tarafını tamamlar. Model Monitoring ve Drift Tespiti programı, aynı izleme mantığını makine öğrenmesi modellerine taşımak isteyen veri ekiplerine yöneliktir.

İlgili Mindset programı

Datadog ile Uygulama Performans İzleme (APM)

Sık sorulanlar

Sık sorulan sorular

APM ile altyapı izleme arasındaki fark nedir?

Altyapı izleme sunucu, ağ ve depolama gibi kaynakların sağlığına bakar. APM ise uygulamanın içindeki istekleri, fonksiyon çağrılarını ve veritabanı sorgularını izler. Sunucu sağlıklı görünürken uygulama yavaş olabilir; bu durumu yalnızca APM açıklar. Bu yüzden bu izleme türleri birbirinin yerine değil, birlikte kullanılır.

APM yalnızca büyük sistemler için mi gereklidir?

Hayır. Küçük bir uygulamada bile yavaşlığın kaynağı bilinmeden tahminle düzeltme yapmak zaman kaybıdır. Ancak ölçek büyüdükçe, özellikle mikroservis mimarisinde, izleme olmadan kök neden bulmak neredeyse imkânsız hale gelir. Küçük ekipler hafif kurulumla başlayıp ihtiyaç doğdukça kapsamı genişletebilir.

Ortalama yanıt süresi neden yanıltıcıdır?

Ortalama, az sayıdaki çok yavaş isteği çoğunluğun hızlı isteği içinde eritir. Kullanıcıların bir kısmı çok kötü bir deneyim yaşarken ortalama iyi görünebilir. Bu nedenle APM panolarında yüksek yüzdelik dilimler ve istek dağılımı da takip edilir; yavaş kuyruk ayrı bir hedefe bağlanır.

APM'de örnekleme neden yapılır?

Her isteğin tam izini saklamak ciddi depolama ve maliyet doğurur. Örnekleme ile istekler arasından temsili bir kısmı, hata ve yavaşlık içerenler ise öncelikle saklanır. Böylece analiz için yeterli veri korunur, maliyet kontrol altında tutulur. Örnekleme kuralları yanlış kurulursa nadir hatalar gözden kaçabilir.

APM Nedir? Uygulama Performans İzleme Rehberi