CDN Nedir ve Nasıl Çalışır?

CDN (Content Delivery Network), web içeriğini farklı ağ ve bölgelerde bulunan dağıtılmış sunucular üzerinden kullanıcılara ulaştıran bir altyapıdır. Klasik yapıda asıl içerik origin’de (kaynak sunucuda) bulunur. CDN, web isteklerini ve yanıtlarını taşıyan HTTP üzerinden aldığı, yeniden kullanıma uygun yanıtları uç noktalarında önbelleğe alır. Böylece her istek için kaynak sunucuya kadar gidilmesi gerekmeyebilir.
CDN en çok görsel, yazı tipi, stil dosyası, JavaScript, video parçası ve indirilebilir dosya gibi tekrar kullanılan içeriklerde yarar sağlar. Her kullanıcı için aynı olan HTML sayfaları ve API yanıtları da güvenli bir önbellek politikasıyla dağıtılabilir. Oturuma, sepete veya kişisel yetkiye göre değişen içeriklerde ise kullanıcı ayrımı açıkça yapılmalıdır.
Bir CDN yalnızca “en yakın sunucuyu” seçmez. İsteğin hangi uç noktaya ulaşacağı, daha önce saklanan yanıtın yeniden kullanılıp kullanılamayacağı, kaynak sunucuya ne zaman başvurulacağı ve hata sırasında eski bir kopyanın sunulup sunulmayacağı ayrı kararlardır. Sonuç; ağ yolu, önbellek isabet oranı, içerik türü ve yapılandırmaya bağlıdır.
CDN'nin Temel Bileşenleri
Kaynak sunucu, sitenin asıl dosyalarını veya uygulamanın ürettiği yanıtları barındırır. Edge (uç nokta), CDN sağlayıcısının kullanıcı isteklerini karşılayan dağıtılmış sunucu konumudur. Önbellek ise daha önce alınmış HTTP yanıtlarının kurallara uygun kopyalarını tutan alandır. Bu bileşenlerin görevi aynı değildir.
| Bileşen | Temel görevi | Kritik nokta |
|---|---|---|
| Kaynak sunucu | Asıl dosyayı veya dinamik yanıtı üretir | Doğrudan erişim, kapasite ve güvenlik ayrı yönetilir |
| CDN uç noktası | Kullanıcı isteğini karşılar ve uygun kopyayı sunar | Seçim yalnız coğrafi uzaklığa dayanmayabilir |
| Cache key (önbellek anahtarı) | Bir isteği saklanan yanıtla eşleştirir | Yanlış ayrım içerik karışmasına, aşırı ayrım düşük isabete yol açar |
| Yönlendirme katmanı | Bağlantıyı erişilebilir bir uç noktaya taşır | DNS, anycast (aynı hizmet adresini birden fazla noktadan duyurma) veya ikisi birlikte kullanılabilir |
Bazı CDN'ler katmanlı önbellek kullanır. Kullanıcıya yakın uç noktada kopya yoksa istek doğrudan kaynağa gitmek yerine bölgesel bir üst önbelleğe yöneltilebilir. Bu yaklaşım, farklı uç noktaların aynı dosya için kaynak sunucuya ayrı ayrı başvurma sayısını azaltabilir; ancak kullanılan katmanlar CDN sağlayıcısına ve yapılandırmaya göre değişir.
Bir İstek CDN Üzerinden Nasıl İlerler?
- Tarayıcı, gerekli bilgi önbellekte yoksa hedef alan adının IP adresini öğrenmek için DNS sorgusu başlatır.
- DNS yanıtı hedef IP adresini bildirir; ağ yönlendirmesi bağlantıyı erişilebilir bir CDN uç noktasına ulaştırır.
- Uç nokta; istek yöntemi, hedef adres ve yapılandırmaya dahil edilen diğer özelliklerden oluşan önbellek anahtarını değerlendirir.
- Eşleşen taze kopyanın doğrulamasız kullanımına istek ve yanıt kuralları izin veriyorsa uç nokta kaynak sunucuya başvurmadan yanıt verir. Buna cache hit (önbellek isabeti) denir.
- Kopya yoksa, yeniden kullanılamıyorsa veya doğrulama gerekiyorsa istek kaynak sunucuya ya da üst önbelleğe iletilir. İsteğin eldeki kopyayla doğrudan karşılanamaması cache miss (önbellek kaçırması) olarak adlandırılır.
- Kaynak yanıtı saklama kurallarına uygunsa kopyalanır ve sonraki uygun isteklerde yeniden kullanılabilir.
Uç noktada bir dosyanın bulunması, o dosyanın koşulsuz sunulacağı anlamına gelmez. Saklama ve yeniden kullanma ayrı kararlardır. Kopyanın tazelik süresi dolmuş olabilir, istek farklı bir dil veya içerik biçimi istiyor olabilir ya da yanıt ortak önbellekte tutulamayacak kullanıcı bilgileri içerebilir.
Önbellek Anahtarı Neden Önemlidir?
HTTP önbellek anahtarı en azından istek yöntemi ile hedef adresi dikkate alır. CDN yapılandırması; protokolü, ana bilgisayar adını, yolu, sorgu parametrelerini, belirli başlıkları, çerezleri veya cihaz grubunu da anahtara katabilir. Her ayrıntıyı eklemek doğru değildir: Gereksiz değişkenler aynı içerik için çok sayıda ayrı önbellek kaydı oluşturur ve isabet oranını düşürür.
Tersi de tehlikelidir. Dil, yetki, para birimi veya kullanıcıya özel bir çerez yanıtı değiştiriyorsa fakat anahtarda ya da önbellek politikasında hesaba katılmıyorsa bir kullanıcı için üretilen içerik başka bir kullanıcıya gösterilebilir. HTTP Vary yanıt başlığı, hangi istek başlıklarının saklanan kopyanın seçiminde etkili olduğunu bildirir. CDN sağlayıcısının bu başlıkları gerçekten önbellek anahtarına kattığını sınayın; hizmete özgü anahtar kuralları veya ek ayarlar gerekebilir.
Sorgu parametrelerini topluca yok saymak yerine işlevlerine göre sınıflandırmak daha güvenlidir. Yalnız ölçüm amacı taşıyan bir parametre içeriği değiştirmeyebilir; arama, sayfa numarası veya ürün seçimi yapan bir parametre ise yanıtı değiştirebilir. Karar gerçek uygulama davranışı sınanarak verilmelidir.
Tazelik, Doğrulama ve Önbellek Başlıkları
Cache-Control, yanıtın önbelleklerde nasıl ele alınacağını belirleyen temel HTTP başlığıdır. max-age yanıtın taze sayılacağı süreyi saniye olarak belirtir. s-maxage ortak önbelleklerde max-age değerinin yerine geçen tazelik süresini belirler; tarayıcının özel önbelleğine uygulanmaz. private yanıtın ortak önbellekte tutulmaması gerektiğini, no-store ise yanıtın saklanmamasını bildirir. no-cache, adının düşündürdüğünün tersine, saklamayı her durumda yasaklamaz; yanıtın yeniden kullanılmadan önce doğrulanmasını gerektirir.
CDN önbelleğine tarayıcıdan farklı bir politika vermek gerektiğinde standart CDN-Cache-Control alanı veya CDN sağlayıcısına özgü kurallar kullanılabilir. Bu ayrım yararlıdır; örneğin tarayıcı kısa süreyle saklarken CDN daha uzun süre saklayabilir. Fakat öncelik sırası, destek ve temizleme davranışı kullanılan hizmette ayrıca doğrulanmalıdır. RFC 9213’ü uygulayan CDN, kendisine yönelik geçerli ve boş olmayan başlığı seçtiğinde genel Cache-Control yerine bu politikayı kullanır; bu nedenle genel başlıktaki no-store tek başına CDN’de saklamayı engellediğini kanıtlamaz.
Tazeliği biten bir kopya, ETag (varlık etiketi) veya Last-Modified (son değiştirilme zamanı) doğrulayıcılarıyla kaynak sunucuya sorulabilir. İçerik değişmediyse kaynak tam gövde yerine 304 Not Modified yanıtı verebilir. Böylece veri aktarımı azalır; yine de kaynakla bir ağ turu yapılmış olur. Doğrulayıcı bulunması tek başına kopyayı taze yapmaz, tazelik süresi bulunması da içeriğin mutlaka saklanacağını garanti etmez.
DNS, Anycast ve Uç Nokta Seçimi
CDN, kullanıcıyı bir uç noktaya ulaştırmak için tek bir yöntem kullanmak zorunda değildir. Recursive resolver (özyinelemeli DNS çözümleyicisi) istemci adına sorgu gönderir. Bazı yapılarda yetkili DNS sunucusu, recursive resolver konumu, hizmet sağlığı ve kapasite gibi sinyallere göre farklı adresler döndürür. Bu modelde DNS önbellek süresi ile recursive resolver hizmetinin ağ konumu seçimi etkileyebilir.
Anycast, aynı hizmet IP adresinin birden fazla ağ noktasından duyurulmasıdır. İnternet yönlendirmesi trafiği erişilebilir noktalardan birine taşır. Seçilen uç nokta her zaman haritadaki en yakın bina değildir; ağ topolojisi, ağlar arası bağlantılar, yönlendirme politikası ve arıza durumu daha belirleyici olabilir. CDN sağlayıcısı DNS tabanlı yönlendirme ile anycast'i birlikte de kullanabilir.
Bu nedenle “CDN kullanıcıyı kesin olarak en yakın sunucuya bağlar” ifadesi fazla kesindir. Daha doğru hedef, o anda erişilebilir ve ağ bakımından uygun bir noktayı seçmektir. Rota değişikliği veya uç nokta arızası, sonraki bağlantıların başka bir noktaya gitmesine yol açabilir.
Hangi İçerikler CDN Üzerinden Dağıtılabilir?
Statik ve sürümlenmiş dosyalar: Görseller, yazı tipleri, stil dosyaları ve JavaScript dosyaları genellikle yüksek önbellek verimi sağlar. Dosya içeriği değiştiğinde dosya adı veya sürüm kimliği de değişiyorsa uzun tazelik süreleri güvenle kullanılabilir. Eski kopya uç noktada kalsa bile yeni sayfa yeni adresi istediği için kullanıcı güncel dosyaya ulaşır.
HTML ve API yanıtları: Herkes için aynı olan HTML sayfaları, ürün listeleri veya bazı API yanıtları sınırlı süreyle önbelleğe alınabilir. Oturum açmış kullanıcıya, sepete, konuma, aboneliğe veya yetkiye göre değişen yanıtlar ortak önbelleğe alınmadan önce güvenli biçimde ayrılmalıdır. Yanıtın dosya uzantısı, tek başına önbelleğe uygunluğunu belirlemez.
Video ve büyük dosyalar: Video parçaları, yazılım paketleri ve büyük indirmeler CDN üzerinden dağıtılabilir. Dosyanın yalnız belirli baytlarını isteyen Range istekleri, içerik türü, saklama sınırları ve ilk isteğin kaynak üzerindeki etkisi ayrıca planlanır. Bir dosyanın büyük olması, tüm CDN sağlayıcılarının onu aynı süreyle veya aynı koşullarla saklayacağı anlamına gelmez.
CDN Siteyi Hangi Koşullarda Hızlandırır?
CDN; kullanıcı ile kaynak sunucu arasındaki ağ yolu uzun olduğunda, aynı içerik sık istendiğinde ve uç noktadaki kopyalar yüksek oranda yeniden kullanılabildiğinde daha belirgin yarar sağlar. Kaynağa giden isteklerin azalması uygulama işlem yükünü ve çıkış trafiğini de düşürebilir.
- Yüksek önbellek isabet oranı, tekrar kullanılan yanıtların uç noktadan teslim edildiğini gösterir.
- Uç noktanın kullanıcıya ağ bakımından yakın olması bağlantı kurma ve veri taşıma süresini azaltabilir.
- Sıkıştırma, güncel HTTP sürümleri ve bağlantı yeniden kullanımı doğru yapılandırılırsa teslimat verimi artabilir.
- Kaynak sunucu yavaşsa önbelleğe alınamayan istekler bu yavaşlıktan etkilenmeye devam eder.
- İçerik çok sık değişiyor veya her kullanıcıya özel üretiliyorsa ortak önbelleğin yararı sınırlı kalabilir.
CDN kullanmak tek başına hız garantisi değildir. Düşük isabet oranı, gereğinden fazla farklı kopya oluşturan önbellek anahtarı, uzaktaki bir uç nokta veya gereksiz yönlendirme katmanları bazı isteklerde ek gecikme oluşturabilir. Değerlendirme yalnız ana sayfanın tek bir ölçümüne değil, farklı bölgelerden tekrarlanan ölçümlere dayanmalıdır.
İçerik Güncellendiğinde Önbelleğin Yenilenmesi
İçerik değiştiğinde eski kopyanın ne kadar süre görünür kalabileceği önceden belirlenmelidir. Sürümlü dosya adları, hedefli önbellek temizleme ve koşullu doğrulama farklı ihtiyaçlara çözüm sunar. Çok geniş kapsamlı ve sık temizleme, önbellek isabetini bir anda düşürerek çok sayıda isteği kaynak sunucuya yöneltebilir; bu durum kaynak yükünde ani artış oluşturabilir.
Yayın planında “dosya güncellendi” ile “tüm uç noktalarda yeni dosya sunuluyor” aynı aşama değildir. Temizleme işleminin tamamlanma durumu, eski adresin kullanılıp kullanılmadığı ve tarayıcı önbelleği ayrı ayrı kontrol edilmelidir. CDN’deki temizleme, tarayıcıda önceden saklanmış kopyayı doğrudan silmez.
Tazeliği Dolan İçeriğin Yeniden Kullanılması
stale-while-revalidate yönergesi, tazelik süresi bittikten sonraki izin verilen aralıkta eski yanıt sunulurken arka planda doğrulama yapılabilmesini belirtir. stale-if-error ise belirlenen süre içinde kaynak veya bağlantı hatası sırasında eski yanıtın kullanılmasına izin verebilir. Bu davranışlar kesintinin etkisini azaltabilir fakat güncellik gereksinimi yüksek içeriklerde dikkatle seçilmelidir; CDN’nin ve ara önbelleklerin desteği de sınanmalıdır. Doğrulamayı zorunlu tutan diğer yönergeler eski yanıtın kullanılmasını engelleyebilir.
Kaynak Sunucu ve Kullanıcı Verisi Nasıl Korunur?
CDN bir reverse proxy (ters proxy) olarak çalıştığında ziyaretçi CDN ile, CDN de kaynak sunucuyla bağlantı kurar. Kullanıcı ile CDN arasındaki TLS bağlantısı ile CDN ve kaynak arasındaki TLS bağlantısı ayrı ayrı doğrulanmalıdır. Bu yapıda CDN, bağlantıyı kendi sunucusunda sonlandırdığı için içeriği açık biçimde işleyebilir; iki bağlantının şifreli olması CDN’nin veriyi göremediği anlamına gelmez. CDN kullanmak sertifika yönetiminin, uygulama güvenliğinin veya yazılım güncellemelerinin yerini tutmaz.
Kaynak sunucu herkese doğrudan açık kalırsa saldırgan CDN katmanını atlayabilir. Erişim, CDN sağlayıcısının doğrulanmış IP adresi aralıklarıyla sınırlandırılabilir; ancak bu aralıkları başka müşteriler de kullanıyorsa bağlantının sizin CDN yapılandırmanızdan geldiği kanıtlanmış olmaz. Gereken hesap veya alan adı ayrımı, size özel istemci sertifikası gibi bir kimlik doğrulamasıyla sağlanmalıdır. Yönetim, sağlık denetimi ve acil durum yolları kesilmeden tasarım yapılmalıdır. Eski DNS kayıtları, e-posta hizmetleri ve farklı alt alan adları kaynak IP adresini açığa çıkarabileceği için yalnız IP adresini gizlemeye güvenilmemelidir.
Kimlik doğrulama bilgisini taşıyan Authorization başlığı bulunan isteklere verilen yanıtların ortak önbellekte kullanılması açık izin gerektirir. Oturum çerezi veya Set-Cookie başlığı ise tek başına HTTP standardında saklama yasağı oluşturmaz; kişisel yanıtların korunması uygulamanın ve CDN’nin açık kurallarıyla sağlanmalıdır. Yanlış bir anahtar veya geniş bir önbellek kuralı veri sızıntısına dönüşebilir. Hassas yollar için önbelleği devre dışı bırakmak, beklenen başlıkları sınamak ve anonim kullanıcı ile farklı yetkilere sahip iki oturum açmış kullanıcıyı ayrı ayrı sınamak gerekir. Önbellek anahtarıyla ayrım yapmak, her istekte gereken erişim yetkisi kontrolünün yerini tutmaz.
CDN Çalışması Nasıl Ölçülür?
Önce yanıt başlıkları incelenir. Standart Age alanı, kaynak sunucunun yanıtı üretmesinden veya başarıyla doğrulamasından beri geçen tahmini süreyi saniye olarak gösterir; yalnız son CDN uç noktasında geçirilen süre değildir. Cache-Status alanı destekleniyorsa isteğin önbellekten karşılanıp karşılanmadığı veya neden kaynağa iletildiği hakkında bilgi verebilir. Birçok CDN sağlayıcısı ayrıca kendi isabet ve uç nokta başlıklarını kullanır; başlık adı ile değeri hizmetin belgesinden doğrulanmalıdır.
- Önbellek isabeti ve önbellek kaçırması oranları içerik türüne, yola ve duruma göre ayrılmalıdır.
- İlk bayta kadar geçen süre, aktarım süresi ve hata oranı farklı bölgelerden ölçülmelidir.
- Kaynak sunucu istek sayısı ile çıkış trafiğinin CDN öncesi ve sonrası değişimi izlenmelidir.
- Temizleme sonrasında eski ve yeni dosya adresleri doğrudan istenerek güncellik kontrol edilmelidir.
- Anonim isteklerle farklı yetkilere sahip iki kullanıcının istekleri karşılaştırılarak özel yanıtların karışmadığı doğrulanmalıdır.
İlk istek önbellek kaçırması, sonraki istek isabeti olabilir; bu yüzden tek ölçüm yeterli değildir. Önbellek anahtarını değiştiren sorgu veya başlıklar bilinmeden yapılan karşılaştırma da yanıltıcı olabilir. Test sırasında aynı isteği kontrollü biçimde tekrarlayın; hangi uç noktanın hangi önbellek durumuyla yanıt verdiğini kaydedin.
CDN Seçerken ve Yapılandırırken Nelere Bakılmalı?
Karar yalnız dünya üzerindeki sunucu sayısına göre verilmemelidir. Ziyaretçi bölgeleri, kaynak bağlantısı, önbellek kuralı esnekliği, temizleme süresi, günlük ve ölçüm olanakları, büyük dosya sınırları, desteklenen protokoller, kaynak koruması ve maliyet modeli birlikte değerlendirilmelidir.
Hizmeti değiştirme veya bırakma planında DNS kayıtlarının ne zaman değişeceğini, eski CDN erişiminin ne kadar korunacağını ve yeni hedefin sertifikasını önceden belirleyin. Kaynak sunucuya doğrudan dönülecekse erişim kısıtlarını ve önbelleksiz trafik yükünü de sınayın; DNS kaydını değiştirmek tek başına kesintisiz geri dönüş sağlamaz.







