13 puan yazan toughrogrammer 2025-08-28 | 2 yorum | WhatsApp'ta paylaş
  • Sorunun tespiti
    • Airbridge kimlik doğrulama sunucusunda aralıklı yanıt gecikmeleri meydana geldi.
    • API isteklerinden önce kimlik doğrulama/yetkilendirme yapıldığından, kimlik doğrulama sunucusundaki gecikme tüm hizmetin kararlılığını doğrudan etkiliyordu.
    • İzleme sonuçlarında 1 saniyeyi aşan yanıt gecikmesi uyarılarının giderek sıklaştığı görüldü → neden analizi ve optimizasyon çalışması başlatıldı.
  • Neden analizi
    • (1) Aşırı DB Query: Yetki kontrolü sürecinde her istekte çok fazla DB Query oluşuyordu, bu da DB Connection Pool'un hızla tükenmesine yol açıyor → yanıt gecikmesi oluşuyordu.
    • (2) HikariCP Connection Pool doygunluğu: DB Query'lerin aşırı çalıştırılması sırasında HikariCP havuzu doyuma ulaşıyor → thread'lerin 30 saniyeden uzun süre beklediği doğrulandı.
    • (3) Düşük cache verimliliği: TTL'in 30 saniye gibi kısa bir değere ayarlanması + verimsiz cache mantığı → DB Query'lerin yeniden oluşma olasılığı yüksekti.
  • İyileştirme stratejisi
    • (1) Yetki kontrolü ve cache yapısının iyileştirilmesi
      • Toplu DB sorgulama (findAllBy~) yöntemi devreye alındı → DB Query sayısı 134'ten 4'e indi (-97%).
      • Uygulama belleği tabanlı mutableMap cache uygulandı.
      • Tek sorumluluk ilkesi (SRP) uygulandı → metotlar ayrıştırıldı ve alt mantık bazında cache stratejileri tanımlandı.
    • (2) 2 katmanlı cache yapısının devreye alınması
      • Local Cache (Caffeine, L1) + Remote Cache (Redis, L2) karma yapısı uygulandı.
      • Cache stratejileri L1-Only, L2-Only ve Hybrid olarak ayrıştırılarak operasyonel verimlilik artırıldı.
      • Cache bellek kullanımı analiz edildi → 500 bin Redis anahtarı öngörüldü, yaklaşık 190MB bellek gereksinimi hesaplandı ve güvenli tampon alan sağlandı.
    • (3) Redis Pub/Sub tabanlı cache geçersizleştirme
      • TTL bağımlılığından çıkılarak, yetki bilgisinde değişiklik olduğunda cache'in gerçek zamanlı senkronizasyonu sağlandı.
      • Bir sunucuda değişiklik olduğunda, Redis kanalı üzerinden tüm sunucuların Local Cache'i eşzamanlı olarak geçersizleştirildi.
    • (4) HikariCP connection pool ayarı
      • maximum-pool-size 10'dan 30'a çıkarıldı.
      • Connection Timeout, Idle Timeout, Max Lifetime gibi ayrıntılı seçenekler optimize edildi → DB I/O çekişmesi azaltıldı.
  • Performans testleri ve sonuçlar: Büyük ölçekli trafikte de kararlı performans korundu.
  • Üretim ortamındaki iyileştirme etkisi
    • Dağıtımdan sonra yanıt gecikmesi uyarıları ortadan kalktı, genel yanıt süreleri dengelendi.
    • Hizmet güvenilirliği ve operasyonel kararlılık önemli ölçüde arttı.
  • Ek optimizasyon: JVM Warm-Up
    • Dağıtımdan hemen sonra JIT derleme gecikmesinin ilk isteklerde yanıt gecikmesine yol açtığı tespit edildi.
    • Warm-Up Runner devreye alındı:
      • Uygulama başlatılırken önceden dummy istekler çalıştırıldı.
      • K8s Pod değişiminde JIT tamamlandıktan sonra trafik işlendi → ilk yanıt süresi 1.07s'den 94ms'ye düşürüldü.
  • Sonuç ve etkiler
    • Yanıt gecikmesi sorunu çözüldü + trafik ani artışlarına dayanıklı bir yapı oluşturuldu.
    • Airbridge genelinde hizmet kararlılığı ve güvenilirliği artırıldı.
    • Kimlik doğrulama sunucusunun kullanım değeri yükseltilerek domain hizmet geliştirme verimliliği artırıldı.

2 yorum

 
anona 2025-08-29

Son dönemde Google derin bağlantı hizmetinin sona ermesiyle bu hizmeti kullanan şirketlerin sayısı artmış gibi görünüyor.
İstikrarlı bir hizmet bekliyorum!

 
daumkakao 2025-08-28

Şey... bizim şirket de kısa süre önce burada sözleşme imzaladı, performans iyileştirmesi için çok sıkı çalışıyorsunuz anlaşılan!!!