System Design

CDN Mimarisini Çözümleme: Küresel İçerik Dağıtımının Arka Planında Nasıl Çalıştığı

İçerik Dağıtım Ağları (CDN), modern web'in görünmez omurgasıdır ve milyonlarca kullanıcının verileri minimum gecikmeyle erişmesini sağlar. Birçok geliştirici CDN'leri basit bir "tak ve çalıştır" hizmeti olarak görse de, temel mimarilerini anlamak, yüksek performanslı ve ölçeklenebilir uygulamalar geliştirmeyi hedefleyen sistem tasarımcıları için kritik öneme sahiptir. Bu yazı, DNS çözümlemesinden kenar önbellekleme ve kaynak ofload'a kadar bir CDN'in temel bileşenlerini parça parça inceliyor.

CDN'in Temel Bileşenleri

Tipik bir CDN mimarisi üç ana katmandan oluşur: Kenar Ağı (Edge Network), Kaynak Sunucusu (Origin Server) ve Kontrol Düzlemi (Control Plane).

1. Kenar Düğümleri (Varış Noktaları)

Büyülü olan şey kenarda gerçekleşir. Kenar Düğümleri, aynı zamanda Varış Noktaları (PoP) olarak da bilinir ve dünya genelinde stratejik olarak konumlandırılmış veri merkezleridir. Bir kullanıcı bir kaynağa istek attığında, istek gecikme ve ağ sağlığına göre en yakın kenar düğümüne yönlendirilir. Bu düğümler, kaynak sunucusundaki yükü azaltmak için statik varlıkları (görseller, CSS, JS) ve bazen dinamik yanıtları önbelleğe alır.

2. Kaynak Sunucusu

Kaynak, genellikle merkezi bir veri merkezinde veya bulut bölgesinde barındırılan birincil veri kaynağınızdır. İyi tasarlanmış bir CDN kurulumunda kaynak korunmalıdır. Kaynağa doğrudan trafik en aza indirilmeli veya engellenmeli; böylece DDoS saldırıları önlenir ve altyapı maliyetleri düşürülür. Kaynak, henüz kenarda önbelleğe alınmamış içerikler için yetkili kaynak olarak hizmet verir.

3. Anycast DNS ve Yük Dengeleme

CDN'ler büyük ölçüde Anycast yönlendirmesine dayanır. Her sunucuya benzersiz IP adresleri atamak yerine, dünya genelindeki birden fazla sunucu aynı IP adresini paylaşır. Bir kullanıcı bir istek gönderdiğinde, internetin Sınır Geçiş Protokolü (BGP), paketi o IP'yi duyuran en yakın kenar düğümüne yönlendirir.


// CDN destekli bir alan adı için örnek DNS Yanıtı
$ dig example.com

; <<>> DiG 9.18.13 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.com.			IN	A

;; ANSWER SECTION:
example.com.		300	IN	A	203.0.113.10
example.com.		300	IN	A	198.51.100.20
example.com.		300	IN	A	192.0.2.30
example.com.		300	IN	A	198.18.0.40

Önbellekleme Stratejileri ve Geçersiz Kılma

Etkili önbellekleme, bir CDN'in birincil değer önerisidir. Mimari, nesnelerin kenarda ne kadar süre saklanacağını belirlemek için çeşitli cache-control başlıklarını destekler.

  • TTL (Yaşam Süresi): Kenar düğümünün, kaynaktan taze bir kopya istemeden önce nesneyi ne kadar süre tutacağını belirler.
  • Önbellek Anahtarı: Genellikle URL yolu, sorgu dizesi ve User-Agent veya Accept-Language gibi başlıklardan oluşur.
  • Geçersiz Kılma: Kaynak içeriği değiştiğinde önbelleğe alınmış içeriği anında temizlemek için kullanılan bir mekanizmadır. Bu genellikle CDN sağlayıcısına API çağrıları yapılarak tetiklenir.

# Önbellek başlıklarını ayarlamak için .htaccess veya Nginx yapılandırması
AddHeader Cache-Control "max-age=31536000, public, immutable"

# Nginx için:
location /static/ {
    expires max;
    add_header Cache-Control "public, immutable";
}

Dinamik İçerik ve Kaynak Kalkanı

Tüm içerik statik değildir. Dinamik API yanıtları için CDN'ler "Kaynak Kalkanı" (Origin Shielding) kullanır. Bu modelde, ara kenar düğümleri katmanı, küresel kenar düğümleri için bir vekil olarak hareket eder. Sadece kalkan katmanı kaynağa istek yapar. Bu, kaynak sunucusuna giden eşzamanlı bağlantı sayısını önemli ölçüde azaltarak trafik sıçramaları sırasında darboğazları önler.

Güvenlik Hususları

CDN'ler, DDoS saldırılarına karşı ilk savunma hattıdır. Trafiği kenarda emerek hacimsel saldırıları (UDP taşkınları, ICMP taşkınları) ve 7. katman saldırılarını (HTTP taşkınları) hafifletirler. Ayrıca CDN'ler SSL/TLS sonlandırması sağlar; bu da şifreli el sıkışmanın kenarda gerçekleştiği ve kenar ile kaynak arasındaki trafiğin karşılıklı TLS (mTLS) kullanılarak şifrelenebileceği veya CDN'in özel ağı içinde kalabileceği anlamına gelir.

Sonuç

CDN mimarisini anlamak, geliştiricilerin önbellek politikaları, güvenlik yapılandırmaları ve altyapı ölçeklendirmesi konusunda bilinçli kararlar almasını sağlar. Kenar önbellekleme, Anycast yönlendirme ve kaynak kalkanını kullanarak CDN'ler, küresel web uygulamalarını hızlı, dayanıklı ve güvenli sistemlere dönüştürür. Kenar bilişim büyüdükçe, CDN ile uygulama katmanı arasındaki sınır bulanıklaşmaya devam edecek ve bu bilgi, modern sistem tasarımcıları için daha da hayati hale gelecektir.

Share: