CDN, bir web uygulamasının performansını ne kadar fark ettirir?

İren Saltalı
2 min readAug 14, 2018

Geçenlerde güncellemem ve hatalarını düzeltmek için yeni web sitesi geldi. Bu site geçen sene bir kaç gün içinde milyonlarca isteği karşılamak için tasarlanmış. Bu çok zor bir görev gibi görünmese de sitenin geliştiricisi bir şekilde bu işi başaramamış ve milyonlarca istek gelmeye başlanyınca site de hatalar vermeye ve sunucu çökmeye başlamış.

Benim burada görevim sitenin halihazırdaki kodunda gerekli güncellemeler ile bir kaç saat içinde milyonlarca isteği kaldırabilecek seviye getirmekti.

Uygulama sadece .NET MVC ile yaratılmış. Başka bir yapı kullanılmamış.

Uygulama kodlarında herhangi bir değişiklik yapmadan önce problemin nereden kaynaklanabileceğini tespit etmek için kodları genel olarak inceledim. İlk fark ettiğim tüm statik içeriklerin solution içerisinde tutulduğu ve site yayına alındığında tüm bu içeriklerin web sunucusu üzerinden servis edildiğidir. Ana sayfada 53 tane JS dosyası (çoğunlukla minimize edilmemiş), 20 CSS dosyası (çoğunlukla minimize edilmemiş), 77 resim, 5 medya dosyası ve 6 adet font dosyası bulunmaktadır. Toplam sayfa boyutu 5.9MB. Bu sayfa boyutu ve dosya adedi aytı bir fiyasko.

Kod üzerinde herhangibir 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 resimde olduğu gibidir.

Resimde de görüldüğü üzere 1.471.257 isteği %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 aktararak tekrar bir test yapmaya karar verdim. Sonuçlar aslında beklediğim gibiydi.

Bu sefer test uygulaması toplam 2.173.109 istek gönderdi ve %87'si başarı ile sonuçlandı.

Sanırım burada daha fazla kelimeler ile anlatmaya gerekli bir durum yok. Web uygulamaları için CDN ve web sunucusundan ayrı bir depolama kullanmak oldukça hayati bir öneme sahip.

Bu kadar basit.

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

Originally published at irensaltali.com on August 14, 2018.

--

--

İren Saltalı

MSc. Computer Engineer ( @itu1773 -DHO). CTO of @wopehq , co-organizer in @serverlesstr , Community Builder of @awscloud