İçeriğe atla
Makale

CDN Nedir, Nasıl Çalışır? İçerik Dağıtım Ağı

Kenar sunucusu ile önbelleğin işleyişini, Cache-Control kurallarını, purge'ü, güvenlik katkısını, kesinti riskini ve seçim ölçütlerini anlattık.

Oğuzhan Gerçek··7 dk okuma
CDN Nedir, Nasıl Çalışır? İçerik Dağıtım Ağı

Kısa cevap: CDN (content delivery network, içerik dağıtım ağı), bir sitenin içeriğini kullanıcılara yakın kenar sunucularında önbelleğe alıp oradan sunan, coğrafi olarak dağıtık sunucu ağıdır. Kullanıcı DNS ya da anycast ile yakındaki bir kenar sunucusuna yönlendirilir; içerik önbellekte varsa oradan, yoksa asıl sunucudan (origin) gelir. Böylece gecikme ve origin'in yükü azalır, saldırı trafiği de origin'e varmadan karşılanır. İçeriğin önbellekte ne kadar kalacağını HTTP'nin Cache-Control kuralları belirler.

CDN nedir?

IETF'in RFC 6707 (Eylül 2012) belgesi CDN'i, içeriği kullanıcılara daha verimli ulaştırmak için ağ öğelerinin 4. ile 7. katmanlar arasında birlikte çalıştığı altyapı olarak tanımlıyor. Belgeye göre tipik bir CDN; kullanıcıyı uygun sunucuya yönlendiren bir istek yönlendirme sisteminden, içeriği önbelleğe alan vekil sunucuları (surrogate) içeren bir dağıtım sisteminden, bir kayıt (logging) sisteminden ve bir denetim sisteminden oluşur. Cloudflare'in belirttiği gibi CDN içeriği barındırmaz ve web barındırmanın yerini tutmaz: asıl kopya web sunucusunda kalır. Kısa tanımı sözlüğümüzde var.

CDN nasıl çalışır?

AWS CloudFront belgesindeki akış, tipik işleyişi gösteriyor:

  1. Kullanıcı bir nesne, örneğin bir görsel ya da HTML sayfası ister.
  2. DNS, isteği hizmet vermeye en uygun kenar sunucusuna (PoP, edge location) yönlendirir; bu genellikle gecikme açısından en yakın PoP'tur.
  3. Nesne PoP'un önbelleğindeyse kullanıcıya oradan döner (cache hit).
  4. Değilse (cache miss) PoP isteği origin'e iletir, yanıtı kullanıcıya aktarırken nesneyi önbelleğe de ekler.

CloudFront, PoP'lar ile origin arasına daha büyük bölgesel önbellekler (regional edge cache) koyuyor; bölgedeki PoP'lar ortak bir önbelleği paylaşınca origin'e giden tekrar istekler azalıyor. Başarının ölçüsü önbellek isabet oranı (cache hit ratio), yani isabetlerin bütün isteklere oranı. Cloudflare'e göre çoğunlukla statik içerikten oluşan bir sitede bu oran %95-99 aralığında olabilir. %95'lik oranda 100 istekten 5'i önbellekte bulunamaz ve üst katmana ya da origin'e gider.

Önbellek kuralları: Cache-Control ve TTL

HTTP önbelleğinin standardı RFC 9111 (Haziran 2022), yanıtları birden fazla kullanıcı için saklayan önbelleğe paylaşılan önbellek (shared cache) diyor; CDN önbelleği bu türdendir, tarayıcının önbelleği ise tek kullanıcıya aittir. Yanıtın ne kadar süre taze (fresh) kalacağını, yani TTL'sini, origin Cache-Control başlığıyla bildirir:

  • max-age: Yanıt, belirtilen saniye dolunca bayat (stale) sayılır.
  • s-maxage: Yalnızca paylaşılan önbelleklerde geçerlidir; CDN'e tarayıcıdan farklı bir süre verir.
  • private: Paylaşılan önbellek yanıtı saklayamaz.
  • no-store: Hiçbir önbellek isteği ya da yanıtı saklayamaz.

RFC 9213 (Haziran 2022) yalnızca CDN önbelleklerine hitap eden CDN-Cache-Control başlığını tanımladı: origin, örneğin CDN'e 600, tarayıcıya 60 saniye diyebilir. Origin süre bildirmezse sağlayıcının varsayılanı geçerli olur ve varsayılanlar farklı: CloudFront'ta önbellek politikası kullanılmazsa 24 saat, Google Cloud CDN'de 1 saat.

Kullanıcı en yakın sunucuya nasıl ulaşır?

Kullanıcıyı kenar sunucusuna yönlendirmenin iki yolu şunlar:

  • DNS tabanlı yönlendirme: DNS, isteği uygun PoP'a gönderir. AWS'ye göre CloudFront'ta kendi alan adınızı kullanmak için bir CNAME kaydıyla adı CDN'in verdiği adrese yönlendirmeniz ve bu adı kapsayan geçerli bir TLS sertifikası eklemeniz gerekir. Kayıt türlerini DNS yazımızda anlattık.
  • Anycast: Cloudflare'in anlatımıyla tek bir IP adresine gelen istekler farklı konumlara yönlendirilebilir; seçim genellikle istemciye en yakın veri merkezine göre yapılır. Trafik en uygun yolu bulduğu için bir veri merkezi tamamen devreden çıkarılabilir, istekler yakındaki bir başkasına akar.

Statik ve dinamik içerik

Google Cloud CDN'in varsayılan modu (CACHE_ALL_STATIC), başlık verilmemiş olsa bile CSS, JavaScript, font, görsel, video ve PDF gibi statik türleri önbelleğe alıyor. HTML ve JSON'u ise genellikle kullanıcıya özel (dinamik) oldukları için varsayılan olarak almıyor; Set-Cookie başlıklı ya da private veya no-store işaretli yanıtlar da önbelleğe girmiyor. Her şeyi koşulsuz önbelleğe alan mod için Google'ın uyarısı açık: kullanıcıya özel içerik sunan bir sistemde uygun olmayabilir. Paylaşılan önbelleğe giren kişisel bir sayfa, aynı adresi isteyen başka kullanıcılara da sunulabilir. CloudFront'ta dinamik istekler bölgesel önbelleklere uğramadan doğrudan origin'e gidiyor.

Önbellek temizleme (purge) ve sürümleme

İçerik değiştiğinde süre dolmadan eski kopyayı silmek gerekir; buna purge, CloudFront'ta invalidation deniyor. AWS'ye göre geçersiz kılınan dosya bir sonraki istekte origin'den yeniden alınır. Ama purge yalnızca CDN'i temizler: kullanıcının tarayıcısında ya da kurumsal bir proxy'de duran kopya, süresi dolana kadar eski sürümü göstermeye devam edebilir. AWS bu yüzden sık güncellenen dosyalarda öncelikle sürümlemeyi öneriyor: image_1.jpg yerine image_2.jpg gibi sürümlü bir ad, hangi isteğin hangi dosyayı alacağını belirler ve geri dönüşü kolaylaştırır.

CDN ve güvenlik: TLS, WAF, DDoS ve origin

Cloudflare'e göre CDN, DDoS azaltma ve sertifika iyileştirmeleriyle güvenliği de artırabilir. Burada dört konu öne çıkıyor:

  • TLS: HTTPS trafiği kenar sunucusunda açılır (SSL yazımız). CDN ile origin arası da şifrelenmeli: Cloudflare'in Flexible modunda kullanıcı ile CDN arası şifreliyken CDN ile origin arası şifresiz kalır; Full modu origin sertifikasını doğrulamaz, Full (strict) doğrular.
  • WAF ve bot yönetimi: İstek kenarda çözüldüğü için WAF kuralları da orada çalışabilir (WAF yazımız).
  • DDoS: Hacimsel saldırı origin'e varmadan dağıtık ağda karşılanır; savunma katmanlarını DDoS yazımızda anlattık.
  • Origin'in korunması: Saldırgan CDN'i atlayıp origin'e giderse bu katmanlar devreye girmez. AWS, origin'deki load balancer'ın yalnızca CDN'in eklediği özel bir başlığı taşıyan istekleri kabul etmesini ve güvenlik grubunun CDN'in adres listesiyle sınırlanmasını öneriyor.

Ağ tarafını ağ koruması, uygulama tarafını uygulama güvenliği (WAF) hizmetimizde ele alıyoruz.

Kenar sunucular yurt dışındaysa: kişisel veri

CDN'de istekler, TLS'in açıldığı ve kaydın tutulduğu kenar sunucularından geçer. Örneğin CloudFront'un standart loglarına isteği yapanın IP adresi, User-Agent bilgisi ve açılırsa çerezleri yazılıyor; her satır isteği karşılayan kenar konumunu da gösteriyor. Kenar sunucuları ve loglar yurt dışındaysa verinin nerede işlendiği sorusu doğar. Bazı sağlayıcılar bunu sınırlamaya izin veriyor: Cloudflare'in Regional Services özelliğinde trafik her veri merkezine girebiliyor, ama TLS'in açılması ve önbellek, WAF gibi uygulama katmanı işlemleri yalnızca seçilen bölgede yapılıyor. Hukuki çerçeveyi KVKK ve yurt dışına aktarım yazımızda ele aldık.

CDN kesintisi ve seçim ölçütleri

CDN sitenin önünde durduğu için onun arızası, origin sağlam olsa bile sitenin arızasıdır. Fastly'nin olay özetine göre 12 Mayıs 2021'de başlayan bir yazılım dağıtımı, belirli bir müşteri yapılandırmasıyla tetiklenebilen bir hata taşıyordu. 8 Haziran'da bir müşterinin geçerli bir yapılandırma değişikliği hatayı tetikledi ve ağın %85'i hata döndürdü; Fastly sorunu bir dakika içinde fark etti, 49 dakikada ağın %95'i normale döndü. Cloudflare'in 18 Kasım 2025 kesintisini üçüncü taraf kesintileri yazımızda anlattık. Platformun kendisi de kapanabilir: Microsoft, Edgio platformunun 15 Ocak 2025'te hizmeti sonlandıracağını duyurmuştu; Azure CDN from Edgio kullanıcıları iş yüklerini bu tarihten önce taşımak zorundaydı. Seçimde şu sorular yol gösterir:

  • Yakınlık: Kullanıcılarınıza yakın PoP var mı? Gecikmeyi ve TTFB'yi kullanıcılarınızın bulunduğu yerlerden ölçün.
  • Önbellek: Cache-Control ve CDN-Cache-Control'e uyuyor mu, purge ne kadar sürüyor?
  • TLS ve güvenlik: Origin bağlantısı sertifika doğrulamasıyla şifrelenebiliyor mu; WAF, bot yönetimi ve DDoS koruması aynı katmanda mı?
  • Veri: TLS hangi ülkelerde açılıyor, loglar nerede tutuluyor?
  • Çıkış planı: Kesintide trafiği ikinci bir CDN'e ya da origin'e çevirebiliyor musunuz? Origin'i yalnızca CDN'e açtıysanız bu yolu önceden hazırlayın.

Bu katmanın tasarımını ağ ve trafik mühendisliği hizmetimizde ele alıyoruz.

Sık sorulan sorular

CDN ne demek? Content delivery network, yani içerik dağıtım ağı demek: içeriği kullanıcılara yakın sunuculardan sunan, coğrafi olarak dağıtık sunucu ağı.

CDN ne işe yarar? Sayfaların daha hızlı yüklenmesini sağlar, origin'in yükünü ve bant genişliği maliyetini azaltır, saldırı trafiğini origin'e ulaşmadan karşılar.

CDN ile hosting arasındaki fark nedir? Hosting sitenin asıl kopyasını barındırır. CDN ise bu içeriğin kopyalarını kenar sunucularında önbelleğe alır; hosting'in yerini tutmaz.

CDN'de TTL nedir? Bir nesnenin önbellekte taze sayılacağı süredir. Origin bunu Cache-Control başlığıyla bildirir; bildirmezse sağlayıcının varsayılanı geçerli olur.

CDN önbelleği nasıl temizlenir? Sağlayıcıdan purge (CloudFront'ta invalidation) istenir; dosya bir sonraki istekte origin'den yeniden alınır. Sık değişen dosyalarda dosya adına sürüm eklemek daha güvenilirdir, çünkü tarayıcıdaki eski kopyaya takılmaz.

Kaynaklar