Merhabalar bu yazımda IT Kavramları arasında ele alıp üzerine fikirlerimi paylaşmak istediğim konu CDN olacak.
Şimdi bir web projesi geliştirdiğinizi düşünün. Bunu canlı ortama aldınız ve bir sunucu üzerinden internet erişimi olan herkesin kullanımına açtınız diyelim.
Bir web sayfası nasıl servis edilir sorusunun cevabı için aşağıdaki yazıma göz atabilirsiniz.
Bir web projesi klasörü içinde servis edilen dosyalar içinde neler olabilir?
Html, css, js, image, audio, video ve kodların olduğun BackEnd dosyaları olabilir. Bir kullanıcı, web sayfamızı açmak için istek gönderdiğinde, sunucuda projenin bir paketi oluşturulur ve kullanıcıya gönderilir. Projemizin örneğin ana sayfasını açmak istediğimizde yüklenmesi gereken dosyalar 2 MB olsun. Bu dosyaları Client talep eder ve onun bilgisayarına iner kullandığı tarayıcı bunu çalıştırır. Ekranda bizim sayfamızı görmeye başlar.
Burada anlattığımız süreç bir dosya transferini içine alır. Bu dosya transferi elektrik ile sağlandığı için aslında ışık hızında gerçekleşir. Yani dosyanın(veri) fiziksel olarak bir mesafeyi kat etme durumu ile gerçekleşir. Yani kabaca zaman = yol / hız formülü işler.
Bu kısmı anladıysak şimdi olayı indirgeyelim.
Amerika’da Jone isminde biri abc.com diye bir site yaptı ve bunu Amerika’da bulunan sunucularından herkesin erişimine açtı. Siz İstanbul’dasınız, bilgisayarınızın başına oturdunuz tarayıcıya abc.com yazıp arattınız. Aradaki bir takım işleyen protokolleri es geçersek isteğiniz çözümlenir ve Amerika’da siteyi servis eden sunucuya iletilir. Sunucu üzerinde web servisleri sayfanın bir paketini oluşturur ve Amerika’daki sunucudan paket yola çıkar ve oradan İstanbul’a gelir. Katettiği mesafeyi az çok kestirebilmişinizdir. Işık hızında bir yolculuk gerçekleşiyor olsa da bir mesafe katediliyor.
abc.com 5 saniyedir ekranda dönüyor ve hala bir sonuç göremedim. Doğal bir kullanıcı refleksiyle eğer bu çözümü bulabileceğim başka sayfalar var ise abc.com’u kapattım ve başka sitelere bakmaya başladım bile.
Jone bir müşteri kaybetti. Halbuki Jone’un kullanıcıları dünyanın her yerinden insanlarsa bu sorunu çözmesi ve sayfanın yanıt verme süresini düşürmesi gerekirdi.
Aklımıza gelen çözümlerden biri şu noktada ne olacaktır? Jone Türkiye’de bir sunucu kiralasa ve projesini buradan da servis etse?
Müthiş olurdu değil mi?
Peki İtalya’dan ulaşmak isteyen kullanıcısı içinde İtalya’dan bir sunucu kiralamalı ve diğer ülkeler. Her defasında projesinin bir kopyasını bu sunucular üzerinde ayağa kaldıracak, DevOps süreçlerinin masrafları gittikçe artmaya başlayacaktı. Projesinde bir değişiklik yaptığında tüm sunucularını güncellemesi gerekirdi. Bakım ve yeniden release maliyetleri de gördüğünüz gibi çok fazla olacaktı.
Burada bir fırsat var gibi duruyor. Ben bu fırsatı gördüm ve Brainy Tech CDN diye bir firma kurdum. Dünyada ilk etapta 50 noktaya sunucular kurdum. Kullanıcılarıma dedim ki, sen projeni benim ana sunucularım üzerimden servis et, ben senin için projeyi 50 farklı bölgedeki sunucularım üzerine dağıtacak, kullanıcılarının isteklerini gelen bölgeye göre en yakın sunucuya yönlendirip en hızlı şekilde transferin tamamlanmasını sağlayacağım.
CDN sistemi doğdu az önce.
Şimdi biraz teknik bilgilerle ilerleyelim.
İçerik dağıtım ağı anlamına gelen Content Delivery Network (CDN); bir web sitesine erişmek isteyen kullanıcıları, coğrafi olarak kendilerine en yakın yerde konumlanmış sunuculara yönlendiren ve bu sunucular üzerinden hizmet almalarını sağlayan bir sunucu ağı sistemidir. Bulut bilişim platformu olan CDN; bir web sitesinde yer alan görselleri, videoları, kod satırlarını ve içerikleri statik olarak bünyesinde barındırır, optimize eder ve ziyaretçiye en hızlı sürede ulaştırılmasını sağlar.
Jone artık Brainy Tech CDN firmasıyla çalışıyor ve projesini Original Server’ımıza bir kere koydu. Bundan sonraki süreci yönetmek bizim işimiz. Original Server’dan dünyanın 50 bölgesinde bulunan sunuculara bir kopya gönderilir. Projenin kopyası bu sunucularda hazır bulundurulur. Bu kopya dosyalar belirlenen süreler boyunca Cache’de tutulur. Süreleri dolunca Origin Server’a yeniden istek atılır ve güncel dosyalar alınır. Bu süreç bu şekilde devam eder.
İstek Denver’dan gelirse, sistem San Jose’daki sunucuya yönlendirir. Seoul’den gelirse Singapore’daki sunucularımıza yönlendirir. Böylelikle sayfalar kendilerine en yakın yerden servis alırlar ve yanıt verme süreleri en az 2 3 kat hızlanır.
Content Delivery Network Kullanmanın Avantajları Nelerdir?
- Content delivery network servis sağlayıcısının lokasyon, sıkıştırma ve optimize etme teknolojisi sayesinde web site hızınız artar.
- CDN, SEO çalışmalarında önemli bir kriter olan web site hızınızı arttırdığı için arama motoru sıralama sonuçlarında görünürlük ve ilk sıralarda yer alma başarınızı arttırır.
- Web sitenizin ziyaretçi trafik yükü azalarak verilerin işlenmesinde sunucu kaynaklı gecikmeleri engeller. Bu sayede hem hosting giderleriniz azalır hem de sunucunuz ziyaretçi isteklerine daha hızlı cevap verir.
- CDN, ileri güvenlik seçenekleri ile spam gönderimlerin ve DDoS saldırılarının web sitenize ulaşmasını engelleyerek sitenizi koruma altına alır.
- Hızlı ve verimli bir CDN sağlayıcısı, özellikle farklı konumlardan yüksek trafik alan e-ticaret sitelerinin, rekabet üstünlüğü elde etmesini sağlar.
- Büyük Cuma gibi özel günlerde ortaya çıkan ani trafik yükselmelerini optimize ederek hizmetin aksamadan devam etmesini sağlar.
İhtiyaçlarınıza göre Pull CDN, Push CDN, VoD Push veya VoD Pull CDN çeşitlerinden birini tercih edebilirsiniz. Dünyada en çok tercih edilen CDN şirketlerine; Akamai, Amazon CloudFront, Broadpeak, CacheFly, CDN77, CDN.NET, CloudFlare, Fastly, GoGrid, MaxCDN, Microsoft Azure ve XCDN örnek verilebilir. Ülke bazlı CDN servis sağlayıcı performanslarını buraya tıklayarak görüntüleyebilirsiniz.
Content Delivery Network sağlayıcısı seçerken DDoS koruması, özelleştirme kabiliyeti, coğrafik filtreleme, önbellek kontrolü, günlük tutma (log), origin shield, memory cache (pull) fonksiyonu, storage cache (push) fonksiyonu, HTTP/2 desteği, hata tespiti (diagnostics), analiz ve bildirim özelliklerini göz önüne almalısınız.
Tercih Edebileceğiniz 3 Ücretsiz CDN Servisi
CDN hizmeti ücretleri web sitenizin elde ettiği trafiğin büyüklüğüne, hizmet verdiğiniz sektöre ve barındırmak istediğiniz dosya türüne göre farklılıklar göstermektedir.
1 CloudFlare
2009 yılında Amerika’da kurulan CloudFlare, CDN kullanımı için en çok tercih edilen firmaların başında yer almaktadır. 100’den fazla ülkede 200’ün üzerinde sunucu barındıran CloudFlare’in ücretsiz sunduğu SSL, CDN, Temel Güvenlik Koruması ve WordPress Cache eklentileri ile entegre çalışabilme özellikleri, en çok tercih edilme sebeplerinin başında gelmektedir. CloudFlare, İstanbul’da da bir adet veri merkezi bulundurmaktadır.
CloudFlare kendini “Basit bir CDN servisinden çok daha fazlası” şeklinde tanımlıyor. CloudFlare ücretsiz CDN ve SSL hizmetlerinin yanında üstün güvenlik teknolojileri sunarak web sitenizi zarara uğratacak tehditlere ve kötü amaçlı botlara karşı güvenlik duvarı oluşturuyor.
Incapsula
Ücretsiz CDN hizmeti denince akla ilk gelen bulut tabanlı güvenlik sağlayıcılardan biri olan Incapsula, Imperva tarafından geliştirilmiştir. Ücretsiz CDN planı blog sahipleri için uygundur. Ücretsiz özelliği ile birlikte spam botlara ve spam yorumlara karşı koruma ve CAPTCHA güvenliği hizmetlerini de kullanabilirsiniz.
Incapsula’nın ücretsiz versiyonu ile birlikte önbellekleme, sıkıştırma ve resim optimizasyonu özelliklerinde de faydalanabilirsiniz.
Photon (jetpack)
Photon aslında tam olarak bir CDN değil bir Jetpack modülüdür. Eğer WordPress kullanıyorsanız ve fazla görsel kullanıyorsanız Photon tam da size göre. Jetpack’in Photon modülünü kullanarak fotoğraflarınızın daha hızlı yüklenmesini sağlayabilir ve bant genişliğinizi rahatlatabilirsiniz.
Photon’u kullanabilmek için yapmanız gereken Jetpack eklentisini kurmanız ve Photon modülünü aktif etmenizdir.
CDN üzerine paylaşabileceklerim bu kadardı umarım faydalı olmuştur.
Görsel ve teknik anlatımın bir kısmını aşağıdaki kaynaklardan aynen taşıdım.
Kaynak 1: https://zeo.org/tr/kaynaklar/blog/cdn-nedir-ne-ise-yarar
Kaynak 2 : https://www.hosting.com.tr/blog/cdn/