AFAIK

CDN (Content Delivery Network) Nedir? Neden Kullanılır?

Güncelleme:
Bir web sayfası ve/ya uygulaması için arayüz bileşenleri olan CSS (Cascading Style Sheets), JS (JavaScript) gibi olmazsa olmaz bazı kaynaklar vardır. Bu kaynaklara ek olarak, ...
GÖRSEL

Bir web sayfası ve/ya uygulaması için arayüz bileşenleri olan CSS (Cascading Style Sheets), JS (JavaScript) gibi olmazsa olmaz bazı kaynaklar vardır. Bu kaynaklara ek olarak, arayüzün ve içeriğin bir parçası olan görseller de yine ardıl bir öneme sahiptir. Web sitesinin / uygulamasının yüklenme performansında bu kaynakların optimize edilmesi (Search Console) yine hem SEO (Search Engine Optimization) hem de Kullanıcı Deneyimi (User Experience) açısından oldukça kritiktir. Özellikle e-ticaret ve haber sitelerinde sayfanın yüklenme süresi hedeflerin de başarı oranını büyük oranda etkileyebilmektedir. Bu gibi amaçlarla pek çok çözüm üretilmiş ve üretilmektedir. jpegoptim ve optipng gibi araçlarla görseller sıkıştırılabilir, gulp ve grunt gibi task runner’lar veya webpack gibi modül paketleyiciler çözüm olarak değerlendirilebilecek seçeneklerden bazılarıdır. Elbette sadece bu seçeneklerle de sınırlı değiliz. Kullanılabilecek bir diğer seçeneğimiz de CDN (Content Delivery Network) ve bu yazıda CDN’e dair bazı detaylara değinmek istiyorum.

CDN (Content Delivery Network)

CDN (Content Delivery Network) Nedir?

CDN (Content Delivery Network / İçerik Dağıtım Ağı), web siteleri ve web uygulamalarında kullanılan kaynakların (js ve css dosyaları, görseller ve videolar gibi) istekte (request) bulunan istemciye (client) farklı konumlarda yer alan sunucular (PoP / Points of Presence) üzerinden cevap veren servis olarak tanımlanabilir. Günümüzde CDN sistemleri daha akıllı çözümler (görsel manipülasyonu, sıkıştırma, format değiştirme vb.) de üretebilmektedirler. Daha önce, farklı yazılar dahilinde Cloudinary servisinden bahsetmiştim. İlgili yazılara bahsi geçen servis bağlamında göz atabilirsiniz.

Genellikle CDN servisleri sıklıkla değişmeyen dosyalar (HTML, JS, CSS, font, medya (fotoğraf, video, müzik vb.)) için kullanılır; Content Acceleration, Media Acceleration, Dynamic Web Acceleration. CDN servisleri bu tür kaynakları origin olarak tanımlanan asıl sunucudan çeker ve belirli bir süre için önbelleğe (cache) alır. Kullanıcılar tarafından gerçekleştirilen isteklere önbelleğe alınan kopya üzerinden cevap verilir. Önbellek süresini dolduran dosya yeniden origin üzerinden önbelleğe alınır. Bu sayede, kullanıcı isteklerine daha hızlı cevap verilebilmekte ve web sitelerin yüklenme süresi iyileştirilebilmektedir. Bu süreç genellikle (sunucunun bulunduğu bölgeler, önbellek süresi, dosya türleri ve sıkıştırma yoğunlukları vb.) kullanıcı tarafından yönetilebilmektedir.

CDN (Content Delivery Network)

Amazon, Hepsiburada gibi e-ticaret siteleri, Facebook, Instagram ve Twitter gibi sosyal medya platformları halihazırda sıklıkla CDN servisleri kullanmaktadırlar. Elbette harici servislerden faydalanmanın yanı sıra, servisler kendi CDN yapılarını da oluşturabilmektedirler. Böylelikle, veri merkezleri isteği gerçekleştiren kullanıcıya en yakın coğrafi bölgeye (region) en yakın sunucu üzerinden (Edge Server) dönüş sağlar ve hızlı bir şekilde etkileşim gerçekleşir. İletim sistemleri ne kadar geniş tutulursa istemciye en yakın nokta sayesinde o kadar hızlı bir şekilde dönüş sağlanabilir.

CDN Nasıl Çalışır?

Bir web sayfasına veya web uygulamasına istekte bulunulduğunda, isteği gerçekleştiren istemciye hangi ağ sunucusu daha yakın ise o sunucudan dönüş sağlandığından daha önce bahsetmiştim. Bu prensip verinin önbelleğe alınması ve aynı verinin çoklu isteklerde tek bir sunucu yerine bir sunucu ağı tarafından yükün paylaştırılması amacını taşımakta. Böylelikle ziyaretçilerin en yakındaki sunucudan iletilen kaynağı görüntülemesi daha hızlı bir surfing deneyimi yaşamalarını sağlayacaktır. Elbette CDN’in sağladığı tek avantaj bu değil.

Trafik Yükünün Dengelenmesi

Varlık noktaları (PoP) çoğaltılarak trafik yükünü dağıtmak ve bant genişliğini efektif bir şekilde değerlendirmek mümkün hale gelir. Bu da erişim kolaylığı sağlayacaktır.

Hız Artırmak

First Contentful Paint süresi hemen çıkma oranına etkiyen en önemli kriterlerden biridir. Anlamlı bir içeriği görüntüleyeceğinden emin olan kullanıcı sayfanın yüklenme süresine daha sabırlı yaklaşacaktır. Diğer ihtimallerde ise oturum hızlıca sonlandırılabilir. Bu sürece etkiyen sebepler arasında;

  • Dış kaynaklar,
  • Yükse dosya boyutları,
  • Kompleks DOM ağacı,
  • Sunucu cevap süresine etkiyen sunucu temelli sorunlar,
  • Verinin taşınma hızı…
gibi maddeleri değerlendirmek mümkün. Bölgesel olarak dağıtılmış sunucular sayesinde bu süreç kontrol altında tutulabilir.

Güvenlik

Bütün kaynaklar (HTML, JS, CSS dosyaları, görseller, videolar, fontlar vb.) tek bir sunucudan (origin) sağlandığında hizmet engelleme (denial-of-service) gibi kötü niyetli etkinliklere karşı da bir zaafiyet durumu ortaya çıkacaktır. Sunucuyu aşırı trafik yüklenmesiyle ortaya çıkabilecek bu tür durumlarda CDN’ler trafiği saptırabilirler. Diğer yandan, CDN’ler TLS/SSL sertifikalarını sürekli daha güncel tutarlar.

Aksaklıkların Kontrol Altına Alınması

Olası donanım arızalarında yük sunucu ağı üzerine yayılmış olacağı için bir diğer sunucu isteklere cevap vermeye devam edebilecektir. Hem sunucuya daha az yük binmesi ve hem de olası aksaklıklarda bir diğer yakın sunucunun isteklere cevap vermesi ile ziyaretçiler aksaklık yaşamadan içeriklere erişebileceklerdir.

Bir CDN servisinden faydalanmak istediğinizde şu temel kriterleri göz önünde bulundurabilirsiniz:

  • Memory cache (Pull), Storage cache (Push),
  • Origin shield,
  • Coğrafi filtreleme,
  • Log tutma,
  • Caching,
  • DDoS (Distributed Denial of Service) koruması,
  • HTTP/2 desteği,
  • Diagnostics, analiz ve bildirimler.

Bu kriterlerin yanı sıra sağlanan ek özellikler de (format dönüştürme, sıkıştırma, görsel manipülasyonu vb.) seçimlerinize etkiyebilir.

CDN Nasıl Kullanılır?

CDN kullanımı için bir takım düzenlemeler yapılması gerekmektedir. Öncelikle kullanmak istenen CDN servisine kayıt olunması gerekmektedir. Bir sonraki kritik işlem ise CNAME tanımlaması olacaktır. Kimi servisler sağladıkları eklentiler ile bu süreci daha pratik bir şekilde yönetebilmektedirler ya da herhangi bir entegrasyon olmaksızın, servis üzerinden upload edilen kaynaklar doğrudan içerik içerisinde sunulabilirler. Bu durumda, sadece ilgili kaynaklar CDN aracılığıyla sunulur. Aşağıda bazı popüler servislere dair bağlantılar iletiyorum, ayrıca inceleyebilirsiniz.

Peki, değerlendirme aşamasında nelere dikkat etmek gerekir?

Öncelikle ihtiyaçlarımızı net bir şekilde belirlemeliyiz. Eğer amacımız sadece statik kaynakları CDN aracılığıyla kullanmak ise işimiz oldukça kolay. Fakat, sunucu tarafında gerçekleştirilen işlemler ve/ya API işlemleri söz konusu ise bazı ek düzenlemeler gerekli olacaktır.

  1. Sadece web sitesinin ve/ya uygulamasının belirli sayfaları (anasayfa gibi) ve isteklere origin ile cevap verip CSS, JS, görseller, fontlar gibi kaynakları CDN aracılığıyla sunabiliriz. Bu işlem için farklı bir subdomain veya apex domain (zone apex ya da naked domain olarak da ifade edilebilir)’den faylanabiliriz. Origin üzerinden ise web isteklerine ve API işlemlerine cevap verilebilir. Bu durumda, DNS kaydında CDN servisi tarafından sunulan IP adresi yer alacaktır.
  2. Bir diğer yöntemde sayfalar da (anasayfa gibi) CDN üzerinden sunulur. Dinamik alanlar mevcut ise bu alanlar dinamik bir şekilde (bkz. HTTP Request) origin’den istenebilir.
  3. Son olarak, tüm dosyalar CDN aracılığıyla sağlanır. Bu sayede CDN tüm kaynakları önbelleğe alacak ve bu şekilde sunacaktır. Önbelleğe alınması mümkün olmayan, dinamik alanlar ve API istekleri ise doğrudan origin ile sağlanır.

Özet olarak, CDN servisleri aynı sunucu üzerinden farklı web siteleri ve web uygulamaları için ayrı kaynaklar sunabilmektedirler. Bu durum da maliyetleri oldukça düşürmektedir. Diğer yandan, donanım olarak büyük yatırımlar gerektirmeksizin çözümler üretilebilir. Bir web sitesi veya uygulaması bağlamında bakıldığında, CDN kullanımı ile barındırma maliyetleri daha efektif hale gelecektir. Tercih aşamasında, en temel kriterlerin benzeştiği durumlarda sunulan ve kullanılabilecek ek hizmetleri de bu maliyet çerçevesinde değerlendirmek gerekir. Örneğin, Transformations için ayrı bir hesaplama kullanmakta ve bunu belirli sınırlar dahilinde maliyet olarak yansıtabilmektedir. Cloudflare ise oldukça yaygın kullanımının da sağladığı avantaj ile pek çok işbirliği imkanı sunabilmekte ve ücretsiz özellikler sunabilmektedir.

Ceyhun Enki Aksan

Kullanıcı Davranışları Analizi (User Behavior Analysis) ve Kullanıcı Deneyim Tasarımı (UX Design) üzerine çalışmalar yürütmekte, bu süreçte edindiğim teknik ve pratik bilgileri fayda sağlamak motivasyonuyla (afaik / as far as i know) paylaşmaktayım.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.