İçeriğe atla
Makale

APM Nedir? Uygulama Performans İzleme Nasıl Çalışır, Observability'den Farkı

APM, uygulamanın kullanıcı gözünden nasıl çalıştığını ölçer: gecikme, hata, trafik, doygunluk. Nasıl çalıştığı, trace, observability farkı ve araç seçimi.

Oğuzhan Gerçek··4 dk okuma
APM Nedir? Uygulama Performans İzleme Nasıl Çalışır, Observability'den Farkı

Kısa cevap: APM (application performance monitoring, uygulama performans izleme), bir uygulamanın kullanıcının gördüğü hâliyle nasıl çalıştığını sürekli ölçen disiplin ve araç sınıfıdır: istekler ne kadar sürede dönüyor, hangi oranda hata veriyor, yük ne kadar, hangi bileşen sıkışıyor. Sunucu izlemenin "CPU yüzde 40" demesiyle yetinmez; "ödeme sayfası son on dakikada yüzde 3 hata veriyor ve gecikme veri tabanı sorgusunda" der. Bugünkü APM araçları metrik, log ve trace'i birlikte toplar; bu birleşime observability deniyor ve APM onun uygulama katmanına bakan parçası.

APM nedir?

Klasik izleme altyapıya bakar: sunucu ayakta mı, disk dolu mu, ağ gecikmesi ne. APM ise uygulamanın içine bakar: her isteğin kod yolunu, dış servis çağrılarını, veri tabanı sorgularını ve bunların sürelerini kaydeder. Bunu, uygulamaya eklenen bir ajan ya da kütüphane (instrumentation) ile yapar; ajan istekleri işaretler, süreleri ölçer ve merkezi bir sisteme gönderir. Sonuçta ortaya çıkan şey kullanıcı deneyiminin sayısal karşılığıdır: hangi işlemin yavaş olduğu, kimin etkilendiği ve nedenin hangi katmanda olduğu.

Dört altın sinyal

Neyin ölçüleceği sorusunun en bilinen cevabı Google'ın SRE kitabından. Monitoring Distributed Systems bölümüne göre izlemenin dört altın sinyali gecikme, trafik, hata ve doygunluktur ve kullanıcıya dönük bir sistemde yalnız dört şey ölçülecekse bunlar ölçülmelidir:

  • Gecikme (latency): Bir isteğin karşılanma süresi; başarılı ve hatalı isteklerin gecikmesi ayrı izlenir.
  • Trafik (traffic): Sisteme binen talep; web uygulamasında saniyedeki istek sayısı.
  • Hata (errors): Başarısız isteklerin oranı; açık hatalar (HTTP 500) ve yanlış içerik dönen "başarılı" istekler.
  • Doygunluk (saturation): Hizmetin ne kadar "dolu" olduğu; en kısıtlı kaynağın kullanım oranı.

İyi bir APM panosu bu dördünü hizmet bazında, yüzdelik dilimlerle (p50, p95, p99) gösterir; ortalama gecikme çoğu sorunu gizler.

APM nasıl çalışır: metrik, log ve trace

Modern APM üç veri türüne dayanır. Metrik, zaman serisi hâlinde sayılardır (istek sayısı, gecikme, hata oranı). Log, olay kayıtlarıdır; ne olduğunu anlatır, ayrıntısı log yazısında. Trace ise bir isteğin uygulama içinde izlediği yoldur: OpenTelemetry'nin tanımıyla "bir isteğin uygulamanızdan geçerken izlediği yol". Trace, ön yüzden API'ye, oradan veri tabanına kadar her adımı (span) süresiyle birlikte gösterir; bir isteğin 2 saniyesinin 1,8'inin tek bir sorguda geçtiğini ancak trace söyler.

Veri toplama tarafında OpenTelemetry sektör standardı hâline geldi: uygulama bir kez enstrümante edilir, veri istenen araca gönderilir, araç değiştiğinde kod değişmez. Dağıtık izleme ve metrik toplamanın Prometheus ve Grafana ile nasıl kurulduğunu observability yazısında anlattık.

APM ile observability arasındaki fark

APM uygulama performansına odaklanır; observability, metrik, log ve trace'i bütün yığın için birleştirip "bu sistem neden böyle davranıyor" sorusuna cevap verir. Pratikte APM, observability'nin uygulama katmanıdır; altyapı metrikleri, ağ ve güvenlik logları onun dışında kalır. Üçünü birlikte kurmanın yöntemi observability hizmetimizde.

APM ne sağlar?

  • Hızlı kök neden: Sorunun hangi serviste, hangi sorguda ya da hangi dış çağrıda olduğu dakikalar içinde görünür.
  • Hizmet seviyesi göstergeleri: Gecikme ve hata oranı SLO'ya bağlanır; uyarı "CPU yüksek" yerine "hata bütçesi tükeniyor" der.
  • Kapasite kararı: Doygunluk verisi, hangi bileşenin ne zaman büyütüleceğini gösterir.
  • Dağıtım doğrulama: Yeni sürüm sonrası gecikme ve hata eğrisi, geri alma kararını veriye dayandırır.
  • Maliyet: Gereksiz çağrılar ve yavaş sorgular ortaya çıkınca bulut faturası da düşer.

APM aracı seçerken nelere bakılır?

  • Dil ve çerçeve desteği: Kullandığınız dillerde otomatik enstrümantasyon var mı, OpenTelemetry'yi yerel destekliyor mu?
  • Veri hacmi ve maliyet: Fiyat ajan sayısına mı, veri hacmine mi bağlı; örnekleme (sampling) ayarlanabiliyor mu?
  • Saklama süresi: Trace'lerin kaç gün tutulduğu; sorun geçmişe dönük incelenebiliyor mu?
  • Kurulum modeli: SaaS mı, kendi ortamınızda mı; verinin nerede durduğu KVKK açısından önemli olabilir.
  • Uyarı kalitesi: Gürültülü uyarı, uyarısızlıkla aynı sonuca varır; SLO tabanlı uyarı kurulabiliyor mu?
  • Yapay zekâ destekli korelasyon: Olayları birbirine bağlayan AIOps katmanı var mı?

Sık sorulan sorular

APM ne demek? Application performance monitoring, uygulama performans izleme: uygulamanın gecikmesini, hata oranını, trafiğini ve doygunluğunu kullanıcı gözüyle ölçen araç ve yöntem.

APM ile izleme (monitoring) arasındaki fark nedir? Klasik izleme altyapıya bakar (sunucu, disk, ağ); APM uygulamanın içine bakar (istek, sorgu, dış çağrı). İkisi birbirini tamamlar.

APM ile observability aynı şey mi? Değil. Observability metrik, log ve trace'i bütün yığın için birleştirir; APM onun uygulama katmanına odaklanan parçasıdır.

Trace nedir? Bir isteğin uygulama içinde izlediği yol; her adımın (span) süresiyle birlikte. Yavaşlığın hangi adımda olduğunu gösterir.

APM için kodu değiştirmek gerekir mi? Çoğu dilde otomatik enstrümantasyon kodu değiştirmeden çalışır; iş mantığına özel ölçümler için birkaç satır eklenir. OpenTelemetry ile bu iş araçtan bağımsız yapılır.

APM hangi uygulamalar için gerekli? Kullanıcıya dönük, geliri ya da operasyonu taşıyan her uygulama için: e-ticaret, mobil arka uç, ERP entegrasyonları, API'ler. Küçük iç araçlarda altın sinyallerin metrikle izlenmesi yeterli olabilir.

Kaynaklar