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

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.

Image for post
Image for post

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.

Image for post
Image for post

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.

Written by

MSc. Computer Engineer. Founder of @noteducom and @image4io, co-organizer in @serverlesstr, Community Builder of @awscloud

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store