CDN Mimarisi ve Temel Bileşenler
CDN Nedir ve CDN’ler Nasıl Çalışır?
Her şeyin dijitale döndüğü günümüzde WWW (World Wide Web – Dünya Çapında Ağ) kullanımı her geçen gün hızla artmaktadır. Şu anda trafik yıldan yıla yaklaşık beş kat artıyor. 1990’ların başında İsviçre’de birkaç bilim insanının araştırma makalelerini paylaşmasıyla başlayan bu süreç, bugün yaklaşık 5 milyar kullanıcısı olan dünya çapında devasa bir ağa dönüşmüş durumdadır. Web siteleri, e-posta, ses ve video, mobil erişim, sosyal ağlar, e-ticaret ve çevrimiçi işler hayatımızın içine girmiş durumda ve milyarlarca kişiye içerik ve çözüm sunuyor.
Bu büyüme, internet üzerinden son kullanıcılara içerik dağıtımının performansını artıran ve az bilinen bir teknoloji olan İçerik Dağıtım Ağı (Content Delivery Network) geliştirilmeseydi imkansız olurdu.
CDN nedir?
İçerik Dağıtım Ağları (CDN’ler), internet performansını hızlandırmak için tasarlanmış coğrafi olarak dağıtılmış ve birbirine bağlı sunucu gruplarıdır. Bunu, web içeriğini web sitesinin kullanıcılarına yaklaştırarak başarırlar. Basitçe söylemek gerekirse, dünyadaki herkesin belirli bir web sitesi için tek bir sunucuya erişmesi yerine, web sitesi içeriği, beklenen kullanıcıların bulunduğu yere daha yakın olan dünyanın dört bir yanındaki sunucularda depolanır. Bu, ağ gecikmesini veya verilerin aktarılması için bekleme süresini azaltır ve web sayfaları ve uygulamaları için daha iyi performans sağlar.
Bunu hazır gıda dünyasına benzetecek olursak, Big Mac almak için McDonald’s’ın Chicago’daki merkezine gitmezsiniz, daha kısa mesafedeki yerel bir bayiye gidersiniz.
Bir CDN nasıl çalışır?
Bir web sitesinin içeriğinin depolandığı birincil konuma kaynak sunucu denir. Depolanan içerik türleri arasında statik web sayfaları (resimler, metin, kod), yazılım indirmeleri, zengin medya (ses ve video) ve uygulamalar tarafından oluşturulan dinamik içerik yer alır. Kaynak sunucu içeriğinin kopyaları, Varlık Noktaları (PoP’lar) adı verilen veri merkezlerindeki coğrafi olarak dağıtılmış önbellek sunucularında saklanır. Bu sunucular, ağın “kenarı” olarak adlandırılan kullanıcı isteklerinin beklendiği yerlerin yakınında bulunur. Bu sunuculara “uç sunucular” da denir.
Bir kullanıcı bir web bağlantısına tıkladığında, istek o etki alanının web sunucusu tarafından karşılanır. Bir CDN stratejisi kullanıldığında, söz konusu alan adının web sunucusunun DNS (internet adresi) kaydı uygun CDN sunucularına yönlendirilir. Bu sunucular istekleri akıllı bir şekilde uygun uç sunucuya yönlendirir. Önbelleğe alınan içerik, uç sunucudan istemciye daha kısa bir mesafeden iletilir. CDN istenen dosyaya sahip değilse, dosyayı kaynak sunucudan alır ve istemciye teslim eder ve sonraki istemci istekleri çok daha hızlı yerine getirilir. CDN yönetim yazılımı, içerik taleplerini tahmin etmek, içeriği ihtiyaç duyulmadan önce CDN’ye almak, kaynak sunucudaki değişen içerikle senkronizasyonu korumak ve algılanan performansı artırmak için akıllı algoritmalar ve makine öğrenimi kullanır.
İçeriğin çoğaltılması ve dağıtılmasının ek avantajları vardır: Birden fazla dağıtılmış sunucu ile aynı anda daha fazla kullanıcı desteklenebilir, yerel ağ tıkanıklığı azaltılır, yoğun sunucu trafiği yük dengeleme için başka bir sunucuya yönlendirilebilir ve tek sunucu hatası noktaları ortadan kaldırılır. Tüm bunlar, daha hızlı sayfa yükleme süreleri dışında, son kullanıcı için şeffaf bir şekilde gerçekleşir.
CDN’leri kimler kullanır?
Karmaşık web sitelerini uluslararası olarak sunmak veya kullanıcılarının çevrim içi deneyimini iyileştirmek isteyen kuruluşlar, web mimarilerinin bir parçası olarak bir CDN kullanmalıdır.
CDN teknolojisi 1990’ların sonunda kullanılmaya başlandığında, öncelikle yalnızca en büyük kurumsal web siteleri ve iş uygulamaları tarafından kullanılıyordu. O zamanlar bu teknoloji yeniydi, pahalıydı ve statik içerik yayınlamakla sınırlıydı.
Geçtiğimiz on yıl içinde işler gelişti. Ticari CDN’lerin maliyeti daha uygun hale geldi, hatta bazen web barındırma paketleriyle birlikte sunulmaya başlandı. Statik ve dinamik içeriğin her ikisi de artık akıllı bir şekilde sunulabiliyor ve CDN’ler, özellikle daha geniş coğrafi konumlarda zengin medya akışı için çok önemlidir.
CDN’lerin Avantajları
Optimize edilmiş bant genişliği: İçeriğin CDN’ler aracılığıyla dağıtılması ağ yolu mesafelerini kısaltır ve yerel ağ darboğazlarını azaltır veya ortadan kaldırır, bant genişliği gereksinimlerini azaltır ve daha iyi ağ kullanımı sağlar.
Daha fazla eşzamanlı kullanıcı: Uç sunuculara dağıtım yaparak, yüksek ölçekli merkezi bir çözümle bile mümkün olandan daha fazla eşzamanlı kullanıcı desteklenebilir.
Geliştirilmiş güvenlik ve kullanılabilirlik: Dağıtılmış Hizmet Engelleme (DDoS) saldırıları genellikle bir kuruluşun savunmasını taciz etmeye veya delmeye çalışan siber suçlular tarafından kullanılır. CDN’ler, erişim noktalarının sayısını çoğaltarak DDoS korumasını doğal olarak sunar ve daha güvenilir ve kullanılabilir bir web çözümü sağlar.
Farklı bölgelerde erişim ve performans kontrolü:Kuruluşunuzun içerik dağıtımını belirli coğrafyalara odaklamak istemesi söz konusu olabilir. Uygun CDN sunucularının bu bölgelere akıllıca yerleştirilmesi, buralardaki web performansınızı artırabilir ve CDN yönetim yazılımı, talepteki ani artışlara verilen yanıtları otomatikleştirebilir. Tersine, diğer alanlarda erişimin sınırlandırılması istenebilir. Bir CDN platformu da bu konuda yardımcı olacak şekilde yapılandırılabilir.
CDN’lerin Dezavantajları
CDN kullanımının birçok avantajı olsa da bazı kuruluşlar için dezavantajları da olabilir. Bunlar şunları içerir:
Maliyet: Önemsiz olmayan web çözümleri için hem başlangıç maliyetleri hem de veri aktarım hacmine bağlı olarak devam eden operasyon maliyetleri olmak üzere CDN sunucusuna ödenen gerçek maliyetler olacaktır. Planlanmadığı takdirde bu maliyetler beklenmedik seviyelere çıkabilir.
Coğrafya: CDN altyapınızı kullanıcılarınızın bulunduğu coğrafya ile eşleştirmeniz kritik önem taşır. Kötü bir coğrafi uyum daha düşük performansla sonuçlanacaktır.
Karmaşıklık ve Destek: Üçüncü taraf CDN kullanımı, web çözümlerinizi dağıtma ve yönetmede ek karmaşıklığın yanı sıra sistem sorunlarını çözmeyi potansiyel olarak zorlaştırabilecek ek bir destek katmanı getirir.
CDN Mimarisi ve Temel Bileşenler
İçerik Sağlayıcı: İçeriği sağlayan kuruluş
Yetkilendirme: İçerik Sağlayıcı, CDN Sağlayıcıya içerik sunma izni verir
Raporlama: İçerik Sağlayıcı, CDN Sağlayıcının hizmetinin kalitesini değerlendirmek ve diğer ilgili verilere erişmek için CDN Sağlayıcıdan performans analizleri talep eder
Kaynak: İçerik Sağlayıcı içeriğin bir kopyasını gönderir
İçerik: Dağıtım için oluşturulan ve/veya lisanslanan dijital bilgi
İstek: Kullanıcı İçerik Sağlayıcıdan verileri (içerik) görüntülemesini veya yerel olarak depolamasını talep eder
Teslim et: CDN içeriği kullanıcıya ulaştırır
Kullanıcı: İçerik Sağlayıcıdan veri (içerik) talep eden varlık
Çoğu CDN mimarisi bu temel bileşenler kullanılarak tasarlanmıştır:
Teslimat Düğümleri: Birincil amaç içeriği son kullanıcıya ulaştırmaktır.
Teslim Düğümleri, bir veya daha fazla içerik teslim uygulaması çalıştıran önbellekleri içeren sunuculardır. Genellikle son kullanıcıya mümkün olduğunca yakın konumlandırılırlar. İçerik bu düğümlere manuel olarak depolanabilir.
Push CDN’lerin avantajı, içeriğin talep eden kullanıcılar için anında kullanılabilir olmasıdır. Ana dezavantajı, İçerik Sağlayıcının içeriği her güncellendiğinde proaktif olarak “itmek” zorunda olmasıdır. Pull CDN’lerin avantajı, içeriği içerik sağlayıcıdan otomatik olarak talep etmeleridir. Ana dezavantajı ilk içerik teslim hızıdır: kullanıcı içeriği ilk kez talep ettiğinde, teslim hızı içerik sağlayıcının CDN kullanmadığı durumla aynı olacaktır. Ancak bu ilk talepten sonra, aynı coğrafi konumda bulunan veya talebi yapan asıl kullanıcıya yakın olan diğer tüm kullanıcılar içeriğe anında erişebilecektir çünkü içerik teslimat düğümünün içinde önbelleğe alınacaktır.
Kontrol Düğümü: Birincil amaç, bir CDN’nin yönetim, yönlendirme ve izleme bileşenlerini barındırmaktır.
Faydaları arasında bant genişliği maliyetlerini azaltmak, sayfa yükleme sürelerini iyileştirmek veya içeriğin küresel kullanılabilirliğini artırmak yer alır.
2 Ana İçerik Türü Vardır:
Dinamik içerik: PHP, Ruby veya Java gibi çeşitli yaygın web programlama dillerinden herhangi biri kullanılarak web sunucusu tarafından anında oluşturulan içerik.
Statik içerik: Genellikle çok sık değişmeyen ve üretim gerektirmeyen içerik. Görüntüler, CSS ve JavaScript vb.