Dağıtılmış izleme Nedir?
Dağıtılmış izleme, dağıtılmış bir sistemden geçen veri isteklerinin gözlemlenmesidir. Modern mikro hizmetler mimarisi genellikle birden fazla küçük bağımsız bileşene sahiptir; bu bileşenler karmaşık işler yapmak için API'leri kullanarak sürekli iletişim kurar ve veri alışverişi yapar. Dağıtılmış izleme sayesinde geliştiriciler, farklı mikro hizmetler arasındaki istek yolunu izleyebilir veya görsel olarak takip edebilir. Bu görünürlük, hataların giderilmesine veya hataların ve performans sorunlarının düzeltilmesine yardımcı olur.
Dağıtılmış izlemenin faydaları nelerdir?
Yazılım geliştiricileri, dağıtılmış izleme sistemlerini hemen hemen tüm bulut temelli ortamlarda uygulayabilir ve bulut uygulamalarının ürettiği dağıtılmış izleri kaydedebilir. Ayrıca izleme araçları çok sayıda programlama dilini ve yazılım yığınını destekleyerek yazılım ekiplerinin aynı platformdaki farklı uygulamalar için performans verilerini izlemesine ve toplamasına olanak tanır.
Geliştirme ekipleri, gözlemlenebilirliği iyileştirmenin yanı sıra geleneksel yazılım hata ayıklama ve izleme araçlarının yardımcı olamayacağı performans sorunlarını çözmek için dağıtılmış izlemeyi kullanır.
Aşağıdakiler dağıtılmış izlemenin diğer avantajlarıdır.
Yazılım sorunlarını gidermeyi hızlandırın
Modern uygulamalar, veri alışverişi yapmak ve dağıtılmış sistemlerde hizmet isteklerini yerine getirmek için çok sayıda mikro hizmete güvenir. Mikro hizmet tabanlı bir mimaride performans sorunlarını gidermek, monolitik bir yazılım uygulamasından çok daha zordur. Monolitik bir uygulamanın aksine, belirli bir yazılım sorununun temel nedeni belirgin olmayabilir. Birden fazla yazılım modülü arasında örtüşen ve karmaşık etkileşimler, sorunları teşhis etmeyi zorlaştırabilir.
Dağıtılmış izleme ile yazılım ekipleri, çeşitli mikro hizmetleri ve veri depolamayı birbirine bağlayan karmaşık yollardan geçen verileri izleyebilir. Yazılım ekipleri dağıtılmış izleme araçlarını kullanarak istekleri izler ve veri yayılma yollarını hassas bir şekilde görselleştirir. Yazılım ekipleri performans sorunlarını anında çözebilir ve hizmet kesintilerini en aza indirebilir.
Geliştirici iş birliğini iyileştirin
Birkaç geliştirici genellikle bir bulut uygulaması oluşturma sürecine katılır ve bunların her biri, bir veya birkaç mikro hizmetten sorumludur. Geliştiriciler, mikro hizmetlerin paylaştığı verileri izleyemezse yazılım geliştirme süreci sekteye uğrar. Dağıtılmış izleme sistemleri ile geliştiriciler, mikro hizmetin yaptığı her bir hizmet talebi için günlükler ve izler gibi telemetri verileri sunarak birlikte çalışabilirler. Geliştiriciler, test ve üretim sırasında bulunan hatalara ve diğer yazılım sorunlarına doğru bir şekilde yanıt verebilir.
Pazara ulaşma hızını artırın
Dağıtılmış izleme platformlarını dağıtan kuruluşlar, son kullanıcılar için yazılım uygulamaları yayınlama çalışmalarını kolaylaştırabilir ve hızlandırabilir. Yazılım ekipleri, yazılım geliştirmeyi hızlandıran, geliştirme maliyetlerini en aza indiren, kullanıcı davranışlarını anlayan ve pazara hazır olma durumunu geliştiren öngörüler elde etmek için dağıtılmış izleri inceler.
Farklı dağıtılmış izleme türleri nelerdir?
Yazılım ekipleri uygulamaları izlemek, analiz etmek ve optimize etmek için dağıtılmış izleme araçlarını kullanır.
Kod izleme
Kod izleme, belirli bir işlevi yerine getirirken bir uygulamadaki kaynak kodlarının akışını denetleyen bir yazılım sürecidir. Geliştiricilerin kodun mantıksal akışını anlamalarına ve bilinmeyen sorunları tanımlamalarına yardımcı olur. Örneğin; geliştiriciler, hizmet isteğinin bir veri tabanını sorgulamak için adımları çağırdığını doğrulamak için kod izlemeyi kullanır. Bazı yazılım işlevleri yanıt vermezse izleme sistemi uygun hata durumunu toplar ve yanıt süresine dikkat çeker.
Program izleme
Program izleme, geliştiricilerin etkin bir uygulamanın çağırdığı talimatların ve değişkenlerin adreslerini inceleyebilecekleri bir yöntemdir. Bir yazılım uygulaması çalıştığında, belirli bir ayrılmış bellek alanında bulunan her kod satırını işler. Uygulama ayrıca makine belleğinde saklanan değişkenleri işler. Otomatik bir araç olmadan program ve veri belleklerindeki değişiklikleri incelemek zordur. Program izleme ile yazılım ekipleri bellek fazlalığı, aşırı kaynak tüketimi ve engelleme mantığı işlemleri gibi köklü performans sorunlarını teşhis edebilir.
Uçtan uca izleme
Uçtan uca izleme ile geliştirme ekipleri, hizmet isteği yolu boyunca veri dönüşümünü izleyebilir. Bir uygulama bir istek başlattığında, daha fazla işlem için diğer yazılım bileşenlerine veri gönderir. Geliştiriciler, kritik verilerin uçtan uca uğradığı değişiklikleri izlemek ve derlemek için izleme araçlarını kullanır. Uygulama üzerinden akan isteklerin uygulama merkezli bir görünümünü verir.
Mikro hizmetler mimarisinde uçtan uca dağıtılmış izleme nasıl çalışır?
Uygulamaları kullanırken, kullanıcılar hizmet istekleri başlatır ve farklı uygulama bileşenleri isteği işler.
Çevrimiçi film rezervasyon uygulamasında bilet rezervasyonu yapan bir kullanıcıyı düşünün. Kullanıcı iletişim bilgilerini, film ayrıntılarını ve ödeme bilgilerini girer ve Şimdi Rezervasyon Yap'ı seçer. Şuna giden bir istek oluşturulur:
- Kullanıcı tarafından girilen verileri doğrulayan A mikro hizmeti.
- Verileri A'dan alan ve müşteri veri tabanında bir kayıt oluşturan B mikro hizmeti.
- Verileri B'den alan ve ödemeyi doğrulayan C mikro hizmeti.
- Verileri C'den alan, koltuk atayan ve sinema bileti verileri üreten D mikro hizmeti.
- Verileri D'den alan ve biçimlendirilmiş bir bilet PDF dosyası oluşturan E mikro hizmeti.
Bilet PDF dosyasını içeren bir yanıt daha sonra, E'den D'ye, C'den B'ye ve oradan da A'ya kadar mikro hizmetler zincirine geri döner ve son olarak kullanıcıya ulaşır. Yukarıda basit bir örnek verilmiştir. Bir istek genellikle birkaç düzine mikro hizmetten ve hatta uygulama dışındaki üçüncü taraf yazılım bileşenleri zincirlerinden geçer. Bu da süreci gittikçe daha karmaşık hâle getirir.
Dağıtılmış izleme sistemleri, dağıtılmış işleme ortamındaki diğer mikro hizmetler ve yazılım bileşenleri ile hizmet isteklerinin bu etkileşimlerini izler. Dağıtılmış bir izleme, zaman çizelgesini ve istek oluşturma ile yanıt alımı arasında gerçekleşen tüm eylemleri temsil eder. Yazılım ekipleri, ilk isteğin etkileşime girdiği birden fazla mikro hizmet aracılığıyla veri hareketini takip etmek için izlemeyi kullanır.
Ölçüm aralığı
Bir uygulama, bir hizmet isteğini işlerken birkaç işlem gerçekleştirebilir. Bu eylemler, dağıtılmış izlemede ölçüm aralıkları olarak temsil edilir. Örneğin ölçüm aralığı bir API çağrısı, kullanıcı kimlik doğrulaması veya depolama erişimi olabilir. Tek bir istek birkaç eylemle sonuçlanırsa ilk (veya ana) ölçüm aralığı birkaç alt aralığa ayrılabilir. Ana ve alt ölçüm aralıklarının bu iç içe geçmiş katmanları, hizmet isteğini gerçekleştirmek için atılan adımların sürekli bir mantıksal temsilini oluşturur.
İzleme Kimliği
Dağıtılmış izleme sistemi, talebi izleme için her bir talebe benzersiz bir kimlik atar. Her bir ölçüm aralığı, ait olduğu asıl istekten aynı izleme kimliğini devralır. Ölçüm aralıkları ayrıca izleme sisteminin topladığı meta verileri, günlükleri ve metrikleri birleştirmesine yardımcı olan benzersiz bir aralık kimliği ile etiketlenir.
Metrik toplama
Her bir ölçüm aralığı, farklı mikro hizmetlerden geçerken geliştiricilere yazılım davranışı hakkında derin ve kesin bilgiler sağlayan metrikleri ekler. Ölçüm aralıklarıyla hata oranını, zaman damgasını, yanıt süresini ve diğer meta verileri toplayabilirsiniz. İzleme bütün bir döngüyü tamamladıktan sonra dağıtılmış izleme aracı, toplanan tüm verileri birleştirir.
Örneğin bir API çağrısı yanıt süresi, hata durumu ve birden fazla üçüncü taraf hizmetinin yerine getirdiği ikincil işlevlerin dökümü ile değerlendirilir. İzleme aracı, temel göstergelere ve performans özetlerine dikkat çekerek verileri görsel formlara dönüştürür. Bu şekilde, site güvenilirliği mühendisleri hataları hızla belirleyebilir, kritik veri unsurlarını inceleyebilir ve performans sorunlarını düzeltmek ve Hizmet Düzeyi Sözleşmeleri (SLA'lar) ile uyumluluğu temin etmek için geliştirme ekipleriyle iş birliği yapabilir.
Dağıtılmış izleme standartları nelerdir?
Dağıtılmış izleme standartları, geliştiriciler için ortak bir çerçeve ve yazılım araçları sağlar. Bu standartlar, modern uygulama ortamlarında hizmet isteklerini izler, görselleştirir ve analiz eder. Dağıtılmış izleme iş akışını standardize ederek yazılım ekipleri, satıcı taahhüdüne maruz kalmadan istek izlemeyi düzenleyebilir.
Aşağıdaki bölümlerde, dağıtılmış izleme yapılırken birlikte çalışabilirliği sağlamak için uygulamaya geçirilen standartlar açıklanmıştır.
OpenTracing
OpenTracing, Cloud Native Computing Foundation (CNCF) tarafından geliştirilen açık kaynaklı bir dağıtılmış izleme standardıdır. OpenTracing, geliştiricilerin bir enstrümantasyon API'si ile izler oluşturmasına olanak sağlamaya odaklanır. Bu da geliştiricilerin kod tabanının, kitaplığın veya diğer bağımlılıkların farklı bölümlerinden dağıtılmış izler oluşturmasına olanak tanır.
OpenCensus
OpenCensus, yazılım metriklerini ayıklayabilen ve analiz için arka uç sistemlerine gönderebilen çok dilli kitaplıklardan oluşur. Geliştiriciler, izlerin nasıl oluşturulduğunu ve toplandığını yönetmek için sağlanan API'yi kullanabilir. OpenTracing'in aksine, geliştiriciler OpenCensus ile bireysel kod tabanları ve kitaplıklar yerine tek bir proje havuzundan çalışır.
OpenTelemetry
OpenTelemetry, OpenTracing ve OpenCensus'u bir araya getirir. Kapsamlı bir dağıtılmış izleme çerçevesi sağlamak için her iki standardın en iyi özelliklerini bir araya getirir. OpenTelemetry, dağıtılmış izlemeyi daha rahat uygulamak için kapsamlı yazılım geliştirme setleri, API'ler, kitaplıklar ve diğer enstrümantasyon araçlarını sağlar.
Dağıtılmış izleme ve günlük kaydı arasındaki fark nedir?
Günlük kaydı, bir uygulama çalıştığında meydana gelen belirli olayları kaydetme işlemidir. Günlük kaydı araçları, geliştirme ekiplerinin sistem anormalliklerini tespit etmesine yardımcı olmak için sistem hataları, kullanıcı etkileşimleri, iletişim durumları ve diğer metrikler gibi zaman damgalı olayları toplar. Genel olarak, iki tür günlük kaydı vardır:
- Merkezi günlük kaydı, kaydedilen tüm etkinlikleri toplar ve bunları tek bir yerde saklar.
- Dağıtılmış günlük kaydı, günlük dosyalarını bulut üzerinde ayrı konumlarda depolar.
Her iki günlük kaydı yöntemi de geliştiricilere uygulamada neler olduğunu gösteren olaylara statik bir genel bakış sunar. Buna karşılık, dağıtılmış izleme, bir hizmet isteği süresi boyunca toplanan çeşitli telemetri verilerini ilişkilendirerek bir olayın neden meydana geldiğini açıklayan bir denetim izi sağlar. Dağıtılmış izleme, belirli bir hizmet isteğini izlemek için günlük kaydı ve diğer veri toplama yöntemlerini kullanabilir.
Dağıtılmış izlemenin zorlukları nelerdir?
Dağıtılmış izleme, geliştiricilerin yazılım sorunlarını teşhis etme, hata ayıklama ve düzeltme çabalarını basitleştirdi. Buna rağmen, izleme araçlarını seçerken yazılım ekiplerinin dikkat etmesi gereken aşağıdaki zorluklar devam eder.
Manuel kullanım
Bazı izleme araçları, yazılım ekiplerinin gerekli izleri oluşturmak için kodlarını manuel olarak almasını gerektirir. Geliştiriciler istekleri izlemek için kodları değiştirdiğinde, üretim sürümlerini etkileyen kodlama hatalarıyla ilgili risk söz konusudur. Üstelik, otomasyon yetersizliği izlemeyi zorlaştırarak gecikmelere ve muhtemelen yanlış veri toplamaya neden olur.
Sınırlı ön uç kapsamı
İzleme araçları arka uç analizi ile sınırlı kalırsa geliştiriciler performans sorunlarını tam olarak yönetemeyebilir. Bazı durumlarda, dağıtılmış izleme sistemi yalnızca ilk arka uç hizmeti isteği aldığında veri toplamaya başlar. Bunun sonucunda geliştiriciler, ilgili kullanıcı oturumu sırasında ön uç hizmetlerinden kaynaklanan sorunları tespit edemez ve denetleyemez.
Rastgele örnekleme
Bazı araçlar, yazılım ekiplerinin izlemeye öncelik vermesine izin vermez ve gözlemlenebilirliği rastgele örneklenen izlerle sınırlar. Sınırlı örnek verilerine sahip kuruluşlar, izleme aracının kaçırdığı önemli sorunları yakalamak için ek yazılım sorun giderme yaklaşımlarına ihtiyaç duyar.
AWS, dağıtılmış izleme gereksinimlerinize nasıl yardımcı olabilir?
AWS X-Ray, yazılım geliştiricilerin kullanıcı isteklerini takip etmesine ve bulut uygulamalarındaki darboğazları belirlemesine yardımcı olan dağıtılmış bir izleme platformudur. Kuruluşlar, uygulama metriklerini görselleştirmek ve iş yükü uygunluğunu iyileştirmek için X-Ray'i kullanır. AWS X-Ray ile şunları yapabilirsiniz:
- Amazon Esnek İşlem Bulutu (EC2), Amazon EC2 Container Hizmeti (Amazon ECS), AWS Lambda ve AWS Elastic Beanstalk üzerinde çalışan tüm uygulamaları entegre etme.
- İzleme kayıtlarına ilişkin uçtan uca görünürlük sağlamak için uygun örnekleme hızını ayarlama.
- Gecikme ve hata oranları gibi temel metrikleri gösteren bir hizmet haritası ile toplu verileri görselleştirme.
Hemen bir hesap oluşturarak AWS'de dağıtılmış izlemeyi kullanmaya başlayın.