Günümüzün hızla gelişen dijital hizmetlerinde, sistemlerin sadece çalışır durumda olması yeterli değil — performansının, güvenilirliğinin ve kullanıcı deneyiminin sürekli izlenmesi gerekiyor. GBIM projesi, bu ihtiyacı karşılamak üzere gözlemlenebilirliğini temelden yeniden yapılandırdı. Yeni yaklaşım, üç ana bileşen üzerine odaklanıyor: iş odaklı metrikler, uçtan uca correlation ID izleme ve otomatik k6 smoke testleri. Bu yenilikler, sadece teknik performansı değil, aynı zamanda iş süreçlerindeki başarıyı da ölçülebilir kılıyor.
İş Odaklı Metriklerle Veriye Dayalı Kararlar
GBIM’in mevcut Prometheus ve Grafana yığını, teknik metriklere odaklanıyordu. Ancak bu metriklere bakarak iş süreçlerindeki performansı anlamak mümkün değildi. Proje ekibi, bu boşluğu doldurmak için özel Prometheus metrikleri geliştirmeye karar verdi. Bu metrikler, yalnızca HTTP isteklerini değil, aynı zamanda iş akışlarının sonuçlarını da yakalayacak şekilde tasarlandı.
Backend tarafında monitoring/metrics.py dosyasında tanımlanan metrikler, kritik iş akışlarını doğrudan ölçmeye olanak tanıyor. Örneğin, kullanıcı kayıt işlemleri için gbm_auth_register_total{role,outcome} metriği geliştirildi. Bu metrik, kayıt başarısını rol ve sonuç durumuna göre sınıflandırıyor. Benzer şekilde, gbm_auth_activation_total{outcome} metriği, hesap aktivasyon süreçlerinin başarısını veya başarısızlığını kaydediyor.
Grafana dashboard’larında bu metrikler, iş süreçlerindeki sorunları hızlıca tespit etmek için kullanılıyor. Örneğin:
- Kayıt başarısızlıklarının hangi aşamada yoğunlaştığını analiz etmek.
- Aktivasyon token’larının süresinin dolması veya geçersiz olmasının sıklığını ölçmek.
- Yönetici doğrulama işlemlerinde hangi adımların daha fazla hata aldığını belirlemek.
Bu sayede, teknik ekipler sadece sistem performansını değil, aynı zamanda iş hedeflerine ulaşma durumunu da izleyebiliyor.
Uçtan Uca Correlation ID ile Hata Takibi Kolaylaşıyor
Sistemlerdeki hataların kaynağını bulmak, özellikle dağıtık mimarilerde zorlu bir süreç olabiliyor. GBIM ekibi, bu sorunu çözmek için correlation ID’yi standartlaştırdı. Frontend ve backend arasındaki tüm isteklerde, benzersiz bir kimlik taşıyan X-Correlation-ID başlığı kullanılıyor.
Frontend tarafında, lib/api.ts dosyasında yer alan sendRequest fonksiyonu, her API isteğine otomatik olarak bu başlığı ekliyor. Yenileme token’ları için de aynı işlem uygulanıyor. Backend tarafında ise CorrelationIdMiddleware adlı bir ara yazılım, gelen istekteki correlation ID’yi doğruluyor:
- Eğer başlık mevcut ve geçerli bir UUID formatındaysa, aynısını kullanıyor.
- Eğer başlık yoksa veya geçersizse, yeni bir UUID oluşturuyor.
Bu ID, hem log kayıtlarında hem de yanıt başlığında korunuyor. Böylece, frontend’te oluşan bir hata durumunda, alınan correlation ID kullanılarak backend log’larında ilgili istek kolayca bulunabiliyor. Backend log’ları, CorrelationIdFilter adı verilen bir filtre ile corr_id alanını içeriyor. Bu sayede, loglar üzerinde hızlıca arama yapmak mümkün hale geliyor.
k6 Smoke Testleri ile Sürekli Performans İzleme
GBIM projesi, performans testlerini otomatikleştirmek ve sonuçlarını doğrudan izleme sistemine entegre etmek için k6’yı kullandı. Bu yaklaşım, sistemdeki kritik endpoint’lerin düzenli olarak kontrol edilmesini ve performans düşüşlerinin anında tespit edilmesini sağlıyor.
Projenin k6 smoke test senaryoları, k6/monitoring-smoke.js dosyasında tanımlanıyor. Bu script, aşağıdaki endpoint’leri hedef alıyor:
/api/monitoring/health/— sistem sağlık durumunu kontrol eden endpoint./api/metrics— Prometheus metriklerini sunan endpoint./api/auth/activation/?token=...— hesap aktivasyon token’larının geçerliliğini test eden endpoint.
Smoke testler, Kubernetes ortamında k8s/job/k6-monitoring-smoke.yaml dosyasıyla çalıştırılıyor. Test sonuçları, experimental-prometheus-rw modülü aracılığıyla Prometheus’a gönderiliyor. Prometheus’un bu verileri alabilmesi için --web.enable-remote-write-receiver bayrağıyla çalıştırılması gerekiyor. Test ID’leri, testid=monitoring-smoke etiketiyle etiketleniyor, böylece Grafana dashboard’larında kolayca filtrelenebiliyor.
Bu yaklaşımın en önemli avantajı, performans testlerinin otomatikleştirilmesi ve sonuçlarının sürekli izlenebilir olması. Böylece, sistemdeki herhangi bir performans düşüşü veya hata anında tespit edilebiliyor.
Frontend Analytics ile Kullanıcı Davranışlarını Anlamak
GBIM projesi, kullanıcı davranışlarını daha iyi anlamak ve iş süreçlerini optimize etmek için Google Analytics 4 (GA4) entegrasyonunu da gerçekleştirdi. Frontend tarafında yer alan lib/analytics.ts dosyası, kullanıcı etkileşimlerini kaydetmek için kullanılıyor.
Analytics yardımcı fonksiyonu, yalnızca belirli koşullar altında etkinleştiriliyor:
NEXT_PUBLIC_GA_MEASUREMENT_IDortam değişkeni tanımlı olmalı.NEXT_PUBLIC_APP_ENVortamıstagingveyaproductionolmalı.- Çalışılan host, izin verilenler listesinde yer almalı.
Bu sayede, yanlışlıkla geliştirme ortamlarında analytics verileri gönderilmiyor. Kaydedilen olaylar arasında şunlar yer alıyor:
- Kullanıcı kayıt işlemleri (başarılı, başarısız).
- Hesap aktivasyon durumları (token süresi dolmuş, geçersiz, oran sınırı aşılmış).
- Yönetici doğrulama işlemleri (liste görüntüleme, detay tıklama, durum güncelleme).
- Başvuru durum güncellemeleri.
Ancak, bu entegrasyonun başarılı olması için, Next.js uygulamasında NEXT_PUBLIC_* ön ekli ortam değişkenlerinin Docker build aşamasında tanımlanması gerekiyor. Aksi takdirde, staging ortamında bile analytics etiketleri yüklenmiyor.
Geleceğe Yönelik Hedefler ve Sürekli İyileştirme
GBIM’in gözlemlenebilirlik yolculuğu, yalnızca teknik altyapının iyileştirilmesiyle sınırlı değil. Proje ekibi, sürekli olarak yeni metrikler ve izleme yöntemleri geliştirmeyi hedefliyor. Örneğin, daha fazla iş akışının ölçümlenmesi ve kullanıcı yolculuklarının derinlemesine analiz edilmesi planlanıyor.
Ayrıca, smoke testlerin kapsamının genişletilmesi ve performans metriklerinin daha detaylı hale getirilmesi de gündemde. Bu sayede, sistemlerin sadece çalışır durumda olması değil, aynı zamanda kullanıcılara en iyi deneyimi sunması da sağlanacak. Gözlemlenebilirlik, artık GBIM’in sadece bir araç değil, aynı zamanda stratejik bir rekabet avantajı haline geldi.
Yapay zeka özeti
GBIM projesi, Prometheus özel metrikleri, uçtan uca correlation ID ve k6 smoke testleriyle gözlemlenebilirliği nasıl güçlendirdi? İş odaklı metriklere nasıl ulaşıldı ve performans izleme nasıl otomatikleştirildi?