Bir CDN tipik olarak sunucuları farklı ağlar arasındaki değişim noktalarına yerleştirir. Bu internet değişim noktaları (IXP’ler) , farklı ağlardaki kaynaklara birbirlerine erişim sağlamak için farklı internet sağlayıcılarının birbirine bağlandığı birincil konumlardır. IXP’lere ek olarak, bir CDN, trafiği mümkün olduğunca hızlı bir şekilde hareket ettirebilmek için dünya genelinde yüksek trafikli alanlarda ve stratejik konumlarda bulunan veri merkezlerine sunucular yerleştirecektir.
Bir CDN’nin birincil yararı, içeriği hızlı ve verimli bir şekilde sunma yeteneğidir. CDN performans optimizasyonları üç kategoriye ayrılabilir:
- Mesafe azaltma – bir müşteri ile istenen veriler arasındaki fiziksel mesafeyi azaltın
- Donanım/yazılım optimizasyonları – katı hal sabit diskler ve verimli yük dengeleme kullanmak gibi, sunucu tarafı altyapı performansını iyileştirin
- Azaltılmış veri aktarımı – ilk sayfa yüklemelerinin hızlı gerçekleşmesi için dosya boyutlarını küçültme teknikleri kullanın
Bir CDN kullanmanın faydalarını anlamak için, yerinde bir CDN olmadan normal bir istemci/sunucu veri aktarımının nasıl göründüğünü keşfedelim.
CDN’li ve CDN’siz yükleme süreleri arasındaki fark nedir?
New York’taki birinin Singapur’daki bir sunucuda barındırılan bir web sitesine erişmesi gerektiğini düşünelim. Bu konumlar arasındaki fiziksel ayrım, yaklaşık 9.520 mil fiziksel mesafe ile önemlidir.
Web sitesi içeriğini barındıran bir sunucu ( orijinal sunucu ) Singapur’da bulunuyorsa, her bir web sayfası varlığı için her istek New York’tan Singapur’a gitmeli ve tekrar geri dönmelidir. Yol boyunca birçok bağlantısı olan uluslararası bir uçuşa çok benzer şekilde, her istek, A noktasından B noktasına olan uzak yolculuğu boyunca bir dizi yönlendiriciden geçmelidir.
Bilgisayarınızın mevcut konumunuzdan belirli bir web hizmetine ulaşması için kaç farklı bağlantı (atlama) gerektiğinin gerçek bir örneğini görmek istiyorsanız, bir masaüstü bilgisayar kullanarak traceroute yardımcı programını keşfedin.
New York’tan Singapur’a yapılan isteğin yol boyunca her bir yönlendirici konumundan geçmesi gerektiğinden, süre (gecikme) hem toplam mesafeye hem de her yönlendiricinin isteği işlemesi için geçen süreye göre artar. Origin sunucusu, isteği işleme koyduğunda ve isteği yapan istemciye yanıt verdiğinde, New York’a dönmeden önce benzer bir dizi yönlendirici aracılığıyla bilgileri geri gönderir. Bu toplam gidiş-dönüş ölçümü telekomünikasyonda “gidiş dönüş süresi” için RTT olarak adlandırılır. Mevcut bant genişliğini ve olası ağ tıkanıklığını göz ardı ederek, gecikme faktörlerinin bir örneğini inceleyelim.
Örnekleme adına şunu söyleyelim:
- New York’tan Singapur’a gitmek için bir istek 250 ms sürer.
- Bir TCP/IP bağlantısı kurmak , 3 örnek 250 ms gecikme süresi ekleyecektir.
- Web sayfası, resimler, JavaScript dosyaları ve web sayfasının kendisinden oluşan 5 benzersiz varlık gerektirir.
Bu web sayfasının yüklenmesinin kabaca ne kadar süreceğini görelim:
- 750ms: TCP/IP bağlantısı New York’taki istemci ile Singapur’daki orijin sunucusu arasında yapılır.
- 250ms: Web sayfası için HTTP isteği New York’tan Singapur’a gider.
- 250 ms: New York’taki istek sahibi, Singapur’daki kaynak sunucudan 200 durum kodu ve gereken tüm ek varlıkları içeren web sayfasıyla bir yanıt alır.
- 250ms: 5 varlığın her biri müşteri tarafından New York’ta talep edilir.
- 1500 ms: Beş varlık, Singapur’daki kaynak sunucudan istemciye eşzamansız olarak teslim edilir.
Bu basit örnekte, bu web sayfasının yüklenmesi için toplam geçiş süresi yaklaşık 3000 ms’dir .
Gördüğünüz gibi, her istek yapıldığında ve yanıt gönderildiğinde, New York’taki müşteri ile Singapur’daki menşe arasındaki yolun tamamı geçilir. Web siteleri büyüdükçe ve daha fazla sayıda varlık gerektirdikçe, A noktası ile B noktası arasındaki gecikme artmaya devam ediyor.
Singapur’da barındırılan ve New York’taki bir web istemcisine sunulan içerik örneğini tekrar gözden geçirelim, ancak şimdi Singapur sitesi, Atlanta’da statik web sitesinin önbelleğe alınmış bir kopyasını içeren bir sunucuya sahip bir CDN kullanıyor:
- New York’tan Atlanta’ya gitmek için bir istek için 50ms sürer.
- Bir TCP/IP bağlantısı kurmak, 3 adet 50ms gecikme süresi ekleyecektir
- Web sayfası, resimler, JavaScript dosyaları ve web sayfasının kendisinden oluşan 5 benzersiz varlık gerektirir.
Bu web sayfasının CDN kullanılarak yüklenmesinin kabaca ne kadar süreceğini görelim:
- 150ms: TCP/IP bağlantısı New York’taki istemci ile Atlanta’daki uç sunucu arasında yapılır.
- 50ms: Web sayfası için HTTP GET isteği, istemciden uç sunucuya gider.
- 50ms: İstemci, hala gerekli olan tüm ek varlıkların bir listesini içeren web sayfasıyla birlikte uç sunucu önbelleğinden bir yanıt alır.
- 50ms: 5 varlığın her biri müşteri tarafından talep edilir.
- 800ms: Beş varlık, uç sunucudan istemciye eşzamansız olarak teslim edilir.
Bu web sayfasının yüklenmesi için toplam geçiş süresi yaklaşık 1100 ms’dir .
Bu örnekte, istemci ile içerik arasındaki mesafenin azaltılması, statik içerik için gecikme süresinde 1900 ms’lik bir iyileşme sağlar ve bu, yükleme süresinde yaklaşık 2 saniyelik bir iyileşmeyi temsil eder.
Tüm gerekli trafiğin geçmesi gereken toplam mesafeyi azaltarak, web sitesine gelen her kullanıcı bir miktar yükleme süresinden tasarruf ediyor. Bekleme süreleri arttıkça kullanıcılar siteyi çok hızlı bir şekilde terk etmeye (hemen çıkma) başladığından, bu iyileştirme hem daha iyi bir kullanıcı deneyimi hem de sayfada daha yüksek kullanıcı zamanı anlamına gelir.
Bir CDN içeriği nasıl yükler? önbelleğe alma nedir?
Daha önce de belirtildiği gibi, normalde bir istemci bir kaynak sunucudan bir dosya istediğinde, isteğin o sunucuya gidip tekrar geri dönmesi gerekir. CDN, önbelleğe alma adı verilen bir işlemde, kaynak sunucudan statik içerik dosyalarını dağıtılmış CDN ağına çekerek gecikmeyi iyileştirir. Bazı CDN’ler, dinamik içeriğin de seçici olarak önbelleğe alınmasına izin veren gelişmiş özelliklere sahip olacaktır. Veriler önbelleğe alındıktan sonra CDN, içeriği en yakın CDN veri merkezinden istemciye sunar.
Bir TCP anlaşması yapıldıktan sonra , istemci makine CDN’nin ağına bir HTTP isteğinde bulunur. İçerik henüz önbelleğe alınmadıysa, CDN önce kaynak sunucu ile CDN’nin uç sunucusu arasında ekstra bir istekte bulunarak içeriği kaynaktan indirir.
Tipik bir CDN önbelleğe alma sırasındaki 4 adım:
- Kullanıcı bir web sayfası istediğinde, kullanıcının isteği CDN’nin en yakın uç sunucusuna yönlendirilir .
- Ardından uç sunucu, kullanıcının istediği içerik için kaynak sunucuya bir istekte bulunur.
- Origin, uç sunucunun isteğine yanıt verir.
- Son olarak, uç sunucu istemciye yanıt verir.
Bir CDN’nin istemciye yakınlığının değeri, kaynak sunucuya yapılan ilk istek zaten yapıldıktan sonra ortaya çıkar. Veriler, kaynak sunucudan CDN’nin ağına önbelleğe alındıktan sonra, istemciden gelen her bir sonraki isteğin yalnızca en yakın uç sunucuya kadar gitmesi gerekir. Bu, en yakın uç sunucunun kaynak sunucudan daha yakın olması durumunda gecikmenin azaltılabileceği ve içeriğin çok daha hızlı sunulabileceği anlamına gelir.
Varlıkları indirmek ve istekleri ve yanıtları işlemek için gereken sürenin şu anda dahil edilmediğini akılda tutmak önemlidir; şimdiye kadar yalnızca bu iki konum arasında bilgi aktarımı için gereken geçiş süresi hesaplanıyor. Araştıracağımız diğer önemli gecikme faktörleri arasında veri azaltma, sabit disk hızı ve ağ tıkanıklığı sayılabilir.
Bir CDN, hızları artırmak için dosya boyutlarını nasıl azaltır?
Sayfa yükleme sürelerini iyileştirmek için CDN’ler, CDN’nin önbellek sunucuları ve istemci arasındaki genel veri aktarım miktarlarını azaltır. Aktarılan toplam veri miktarı düştüğünde hem gecikme hem de gerekli bant genişliği azalır. Sonuç, daha hızlı sayfa yüklemeleri ve daha düşük bant genişliği maliyetleridir. Bu azalmaya iki temel bileşen girer:
Küçültme – küçültme, insanların neler olduğunu anlamalarına yardımcı olan tüm bileşenleri kaldırarak kod bloklarının boyutunu küçültme işlemidir. Bir mühendisin kod bloklarını okunabilir ve bakımı yapılabilir hale getirmek için fikirleri mantıklı değişken isimlerine, boşluklara ve yorumlara ayırması gerekirken, bilgisayarlar bu karakterler kaldırılarak başarılı bir şekilde kod çalıştırabilir.
Küçültmeden önce ve sonra aynı kod bloğu:
Küçültme işleminden önce: sekiz satır kod
Küçültme işleminden sonra: tek bir kod satırına indirgendi
Artık kod parçacığı sekiz satırdan tek satıra indirildiğine göre, genel dosya boyutu da düşürüldü. Bu, gecikmeyi azaltan ve içeriğin daha hızlı yüklenmesine yardımcı olan dosyayı aktarmanın daha az zaman aldığı anlamına gelir.
Dosya sıkıştırma – dosya sıkıştırma, İnternet üzerinden veri aktarırken gereken gecikme ve bant genişliği tüketimini azaltmanın ayrılmaz bir bileşenidir. GZip, yaygın bir sıkıştırma yöntemidir ve web sayfalarını aktarırken kullanılacak en iyi uygulama olarak kabul edilir. Çoğu CDN sağlayıcısında varsayılan olarak GZip etkindir. GZip sıkıştırmasından elde edilen tasarruf ne kadar önemli? Tipik olarak sıkıştırılmış dosyalar, ilk dosya boyutunun yaklaşık %50 ila %70’i kadar küçültülür.
Bir CDN, hızları artırmak için hangi donanımı kullanabilir?
CDN donanım optimizasyonları söz konusu olduğunda, geleneksel sabit disk sürücüleri (HDD) yerine katı hal sabit sürücülerin (SSD) kullanılmasından önemli bir fayda elde edilir; yarıiletken sürücüler, dosyaları geleneksel sabit disk sürücüden %30’a kadar daha hızlı açabilir ve daha dayanıklı ve güvenilirdir.
Bir plak çalara benzer şekilde, geleneksel bir sabit disk sürücüsü, verileri depolayan manyetik bir kaplamaya sahip dönen dairesel bir metal diskten oluşur. Koldaki bir okuma/yazma kafası, disk altında döndüğünde bilgiye erişir. Bu işlem mekaniktir ve diskin ne kadar hızlı döndüğünden etkilenir. Katı hal sürücülerin ortaya çıkmasıyla, bugün hala üretilmelerine ve birçok bilgisayar sisteminde geniş dolaşımda olmalarına rağmen, eski sabit sürücü modeli daha az kullanılır hale geldi.
Katı hal sürücüsü (SSD) de bir kalıcı depolama biçimidir, ancak USB flaş sürücülere veya dijital kameralar gibi cihazlarda yaygın olarak bulunan bellek kartlarına çok benzer şekilde çalışır; hareketli parça yoktur. Normal bir sabit disk dönüyorsa ve sistem sarsılırsa, HDD atlayabilir, bu da okuma/yazma hatalarına ve olası arıza süresine neden olabilir. Bir diğer önemli SSD avantajı, parçalanmış dosyalara erişmektir. Dosya parçalanması, bir dosyanın bölümlerinin diskte farklı konumlarda olduğu ve bunun sonucunda HDD sürücülerine daha yavaş erişime neden olan bir durumdur. Bir SSD, bitişik olmayan bellek konumlarına verimli bir şekilde erişebildiğinden, parçalanma performans için bir tehdit oluşturmaz.
İlk CDN’lerde veriler sabit disk sürücülerinde saklanıyordu. Artık bazı CDN hizmetlerinde, tüm kenar tarafı önbelleğe alma, katı hal sürücülerinde gerçekleşebilir. SSD’lerin dezavantajı maliyetidir; SSD, geleneksel medyadan 5 kata kadar daha pahalı olabilir. Bu nedenle, bazı CDN hizmetleri genellikle SSD’leri kullanmaktan kaçınacak ve bunun yerine eski teknolojiyi tercih edecektir. Cloudflare CDN , yalnızca SSD’leri kullanır.