Sunucu Performasında CDN Etkisi

, İçerik Dağıtım Ağı

Sunucu Performasında CDN Etkisi

Geçenlerde, güncellenmesi ve sistem hatalarının düzeltilmesi gereken bir web sitesi üzerine çalıştım. Bu web sitesi milyonlarca ziyaretçinin aynı anda kullanımını karşılamak için tasarlanmış. Site problemleri çok zor görünmese de, sitenin geliştiricisi bir şekilde bu problemi çözememiş ve sunucuya aynı anda milyonlarca istek gelmeye başlanyınca sunucu çökmeye başlamış.

Bu projedeki misyonum; kodlarda gerekli güncellemeleri yaparak, bir kaç saat içinde milyonlarca isteği karşılayabilecek seviyeye getirmekti.

Yazılım sadece .NET MVC ile yaratılmış, ekstra başka bir yazılım yapısı kullanılmamıştı.

Herhangi bir değişiklik yapmadan önce, problemin nereden kaynaklanabileceğini tespit etmek için kodları inceledim. İlk fark ettiğim şey; bu web sitesinin tüm statik içerik dosyaları web sitesinin yayın yaptığı web sunucusunda tutuluyordu. Ana sayfada 53 tane JS dosyası (çoğunlukla minimize edilmemiş), 20 CSS dosyası (çoğunlukla minimize edilmemiş), 77 görsel, 5 medya dosyası ve 6 adet font dosyası bulunmaktaydı. Böylece toplam sayfa boyutu 5.9MB olmuştu. Bu sayfa boyutu ve dosya adedi malesef tam bir fiyaskoydu.

Kod üzerinde herhangi bir değişiklik yapmadan önce siteyi Azure Web App (S1) üzerinde yayına aldım ve bir yük testi yaptım. Siteye 5 dakika içerisinde eş zamanlı toplam 20.000 ziyaretçi gönderdim. Test sonuçları aşağıdaki raporda yer alıyor.

Test 1 sonucu

Raporda görüldüğü üzere; 1.471.257 isteğin %97'si hata ile sonuçlandı. Test sonuçlarını incelediğimde; hataların çoğunluğunun statik içerik için gelen isteklerde olduğunu gördüm. Bu statik içeriği; ayrı bir depolama ve CDN'e taşıyarak yeni bir test yapmaya karar verdim. Sonuçlar aslında tam da beklediğim gibiydi...

Test 2 sonucu

Yeni testte, toplam 2.173.109 istek gönderildi ve %87'si başarı ile sonuçlandı.

Sonuç olarak; web projelerinde "CDN" kullanmak ve statik içerikleri web yayını yapan sunucudan ayrı bir depolama alanında tutmak, hem sunucu hem de web performansı üzerinde oldukça kritik bir etkiye sahip.

Umarım bu yazı size faydalı olmuştur.