15 puan yazan whatsup 2024-08-12 | 1 yorum | WhatsApp'ta paylaş

Dağıtım anında yükselen API gecikmesini çözmek - Django + Gunicorn vakası

  • Backend sistemi Django + Gunicorn ile yapılandırılmıştı
  • Her dağıtım yapıldığında API gecikmesinin hızla arttığı bir sorun fark edildi
  • Gunicorn’un çalışma prensibi incelendiğinde Cold Start yaşanan bölümler olduğu görüldü
  • Django’nun iç kodu analiz edildiğinde, master worker process’te fork yapılırken preload seçeneği verilmiş olmasına rağmen bazı ön yükleme öğelerinin yüklenmediği keşfedildi ve sorun çözüldü

Öğrenilenler

  • Django gibi çok sayıda kullanıcının tercih ettiği web framework’lerinde çoğu davranış yüksek güvenilirliğe sahiptir; bu yüzden bunları fiilen kullananların da doğal olarak böyle varsayma eğilimi vardır
    • Ancak gerçek kod incelendiğinde soruna neden olan bir kod bulundu ve kullanılan framework’e körü körüne güvenilmemesi gerektiği öğrenildi
  • API gecikmesi sorununu çözme süreci; yeterli dokümantasyonun olmaması + iç yapı ve çalışma biçimi hakkında derinlemesine anlayış eksikliği + açık kaynak projenin codebase’ini derinlemesine incelemekten kaçınma gibi nedenlerle kolayca kavranabilecek bir süreç değildi
    • Bu süreçte birden fazla karmaşık sorunun iç içe geçmiş olması da işi zorlaştırdı
    • Sonunda Django’nun iç koduna bakarak çözüm bulunabildi
    • Bu süreçte, kullanılan Django araçlarına dair anlayışı artırmanın yanı sıra iç kodu incelemenin bazı zor problemlerin çözümünü bulmada yardımcı olabileceği de öğrenildi
  • Sorunun kök nedenini tespit etmek önemlidir
    • Health Check’in başarı koşullarını daha fazla tekrar ya da daha uzun süreye ayarlayarak API gecikmesinin görülme sıklığı azaltılabilirdi, ancak bu kökten bir çözüm olmayacaktı
  • Kolektif zekâ kullanıldığında, daha hızlı biçimde odaklanılması gereken noktalar ve çeşitli bilgiler edinilebilir
    • API gecikmesiyle ilgili sorun hızla organizasyonla paylaşıldı ve farklı mühendisler sorunun kaynağı olabileceğini düşündükleri görüşler sundu
    • Bu görüşler hızlıca derlenerek nerelere odaklanmanın iyi olacağına dair bilgi hızla edinilebildi
  • Sorunu çözmek için semptomları yeniden üretebilen bir ortam kurmak önemlidir
    • Aynı sorun lokal ortamda da başarıyla yeniden üretildi ve bunun sayesinde sorunun gerçekten çözülüp çözülmediği doğrulanabildi
    • Sorun çözümünde yeniden üretilebilirliğin önemi fark edildi

1 yorum

 
aer0700 2024-08-12

Bağlantıdan girip baktım; gönderinin içeriği gerçekten çok iyiymiş.