CDN kılavuzu

Azure Storage
Azure Blob Storage

İçerik teslim ağı (CDN), kullanıcılara etkili bir şekilde web içeriği teslim edebilen dağıtılmış bir sunucu ağıdır. CDN'ler, gecikme süresini en aza indirmek için önbelleğe alınmış içeriği son kullanıcılara yakın olan uç sunucularda depolar.

CDN'ler genellikle; görüntü, stil sayfası, belge, istemci tarafı betiği ve HTML sayfası gibi statik içeriklerin tesliminde kullanılır. CDN kullanmanın önemli avantajları, kullanıcıların coğrafi konumunun uygulamanın barındırıldığı veri merkezine uzaklığı fark etmeksizin daha düşük gecikme süresi ve daha hızlı içerik teslimidir. Uygulama, CDN’de barındırılan içeriğe yönelik isteklerle ilgilenmek zorunda kalmadığından CDN'ler web uygulamaları üzerindeki yükün azaltılmasına da yardımcı olabilir.

CDN diyagramı

Azure’da Azure Content Delivery Network, Azure'da veya herhangi başka bir konumda barındırılan yüksek bant genişliğine sahip içeriklerin teslimine yönelik genel bir CDN çözümüdür. Azure CDN'yi kullanarak Azure blob depolama alanından, bir web uygulamasından, sanal makineden, genel kullanıma açık herhangi bir web sunucusundan yüklenen nesnelerin önbelleğe alınmasını sağlayabilirsiniz.

Bu konuda, CDN kullanmaya yönelik bazı genel en iyi uygulamalar ve dikkat edilecek noktalar açıklanmaktadır. Daha fazla bilgi için bkz. Azure CDN.

CDN neden ve nasıl kullanılır?

CDN’nin tipik kullanım alanları şunlardır:

  • İstemci uygulamaları için genellikle bir Web sitesinden statik kaynaklar teslim etme. Bu kaynaklar; görüntüler, stil sayfaları, belgeler, dosyalar, istemci tarafı betikleri, HTML sayfaları, HTML parçaları veya sunucunun her bir istek için değiştirmesi gerekmeyen herhangi bir içerik olabilir. Uygulama çalışma zamanında öğe oluşturabilir ve oluşturduğu öğeleri CDN’ye sunabilir (örneğin, güncel haber başlıklarının listesini oluşturarak), ancak bunu her istek için yapmaz.

  • Cep telefonu ve tablet bilgisayar gibi cihazlara genel statik ve paylaşılan içerik teslim etme. Uygulamanın kendisi de çeşitli cihazlarda çalışan istemcilere bir API sunan bir web hizmetidir. CDN, istemcilerin kullanımı belki de istemci kullanıcı arabiriminin oluşturulması için statik veri kümeleri de sunabilir (web hizmeti aracılığıyla). Örneğin, CDN aracılığıyla JSON veya XML belgeleri dağıtılabilir.

  • Hiçbir adanmış işlem kaynağına gerek kalmadan istemcilere yalnızca genel statik içerikten oluşan Web siteleri sunma.

  • İstemciye isteğe bağlı olarak video dosyası akışı yapma. CDN bağlantıları sunan tüm dünyaya dağılmış veri merkezlerinin sağladığı düşük gecikme süresi ve güvenilir bağlantıların video sunumuna büyük faydası olur. Microsoft Azure Media Services (AMS), Azure CDN ile tümleştirilerek daha geniş kapsamlı olarak dağıtılması için doğrudan CDN’ye içerik teslim eder. Daha fazla bilgi için bkz. Akış uç noktalarına genel bakış.

  • Kullanıcı deneyimini, özellikle uygulamayı barındıran veri merkezinden uzakta bulunan kullanıcılar için genel olarak geliştirme. Bu kullanıcılar, aksi takdirde daha yüksek gecikme süreleriyle karşılaşabilir. Bir web uygulamasındaki içeriğin toplam boyutunun büyük bir kısmı genellikle statiktir ve CDN kullanmak performansı ve genel kullanıcı deneyimini korumaya yardımcı olurken uygulamayı birden çok veri merkezine dağıtma gereksinimini ortadan kaldırır. Azure CDN düğümü konumlarının listesini görmek için bkz. Azure CDN POP Konumları.

  • IoT (Nesnelerin İnterneti) çözümlerini destekleme. IoT çözümlerinin parçası olan çok sayıda cihaz ve alet bu kadar fazla cihaza doğrudan üretici yazılımı dağıtmak zorunda kalırsa uygulamayı zora sokabilir.

  • Uygulamanın ölçeklendirilmesine gerek kalmadan talepteki artış ve artışlarla başa çıkararak çalıştırma maliyetlerindeki artıştan kaçınılır. Örneğin, belirli bir yönlendirici modeli gibi bir donanım cihazı veya akıllı TV gibi bir tüketici cihazı için bir işletim sistemi güncelleştirmesi yayımlandığında bu güncelleştirme kısa bir süre içinde milyonlarca kullanıcı ve cihaz tarafından indirileceğinden talepte çok büyük bir artış olacaktır.

Zorluklar

Bir CDN kullanmayı planlarken dikkate alınması gereken çeşitli zorluklar vardır.

  • Dağıtım. CDN’nin içeriği getireceği kaynağa ve içeriğin birden fazla depolama sistemine dağıtılmasının gerekip gerekmediğine karar verin. Statik içerik ve kaynakları dağıtma sürecini göz önünde bulundurun. Örneğin, Azure blob depolama alanına içerik yüklemek için ayrı bir adım uygulamanız gerekebilir.

  • Sürüm oluşturma ve ön bellek denetimi. Statik içeriği güncelleştirme ve yeni sürümleri dağıtma işlemlerini nasıl gerçekleştireceğinizi göz önünde bulundurun. CDN’nin önbelleğe almayı nasıl yaptığını ve yaşam süresini (TTL) anlayın. Azure CDN için bkz. Önbelleğe alma nasıl işler?

  • Test etme. Yerel olarak veya bir hazırlama ortamında bir uygulamayı geliştirirken ve test ederken CDN ayarlarınızı yerel olarak test etmek zor olabilir.

  • Arama motoru iyileştirmesi (SEO). CDN kullandığınızda görüntü ve belge gibi içerikler farklı bir etki alanından sunulur. Bu durumun bu içeriğe ait SEO üzerinde bir etkisi olabilir.

  • İçerik güvenliği. Tüm CDN'ler içeriğe yönelik erişim denetimi sunmaz. Azure CDN dahil olmak üzere bazı CDN hizmetleri, CDN içeriğini korumak için belirteç tabanlı kimlik doğrulamasını destekler. Daha fazla bilgi için bkz. Azure Content Delivery Network varlıklarının güvenliğini belirteç kimlik doğrulaması ile sağlama.

  • İstemci güvenliği. İstemciler, CDN’deki kaynaklara erişime izin vermeyen bir ortamdan bağlanıyor olabilir. Bu ortam, erişimi yalnızca bilinen bir grup kaynakla sınırlayan güvenlik kısıtlı bir ortam ya da sayfanın kaynağı dışında bir yerden kaynak yüklenmesini engelleyen bir ortam olabilir. Bu durumları idare etmek için bir geri dönüş uygulaması gerekir.

  • Dayanıklılık. CDN, uygulamalar için olası bir tek hata noktasıdır.

CDN'nin daha az yararlı olabileceği senaryolar şunlardır:

  • İçeriğin isabet oranı düşükse geçerli olduğu süre boyunca (yaşam süresi ayarı tarafından belirlenir) içeriğe yalnızca birkaç kez erişilebilir.

  • Büyük kuruluşlara veya tedarik zinciri ekosistemlerine ait veriler gibi özel veriler söz konusudur.

Genel yönergeler ve iyi uygulamalar

CDN kullanılması uygulamanızın üzerindeki yükü en aza indirmek, kullanılabilirliği ve performansı en üst düzeye çıkarmak için iyi bir yoldur. Uygulamanızın kullandığı uygun içerik ve kaynakların tamamı için bu stratejiyi benimseyebilirsiniz. CDN kullanma stratejinizi tasarlarken aşağıdaki bölümlerde bahsedilen konuları göz önünde bulundurun.

Dağıtım

Statik içerikleri uygulama dağıtım paketine veya sürecine eklemezseniz bu içerikleri uygulamadan bağımsız olarak sağlamanız ve dağıtmanız gerekebilir. Bu durumun uygulama bileşenlerini ve statik kaynak içeriğini yönetmek için kullandığınız sürüm oluşturma yaklaşımını nasıl etkileyeceğini düşünün.

İstemcilere ait yükleme sürelerini kısaltmak için paketleme ve küçültme tekniklerini kullanabilirsiniz. Paketleme, birden çok dosyayı tek bir dosya halinde birleştirir. Küçültme, işlevselliği değiştirmeden betiklerdeki ve CSS dosyalarındaki gereksiz karakterleri kaldırır.

İçeriğin ek bir konuma dağıtımını yapmanız gerekirse bu işlem, dağıtım sürecinde fazladan bir adım olacaktır. Uygulama CDN’ye ait içeriği, örneğin düzenli aralıklarla veya bir olaya yanıt olarak güncelleştiriyorsa, güncelleştirilmiş içeriğin tüm ek konumlarda ve CDN uç noktasında depolanması gerekir.

Bazı statik içeriklerin CDN’den sunulması bekleniyorsa yerel geliştirme ve test etmeyi nasıl yürüteceğinizi göz önünde bulundurun. Örneğin, derleme betiğinizin bir parçası olarak içeriği CDN'ye önceden dağıtabilirsiniz. Alternatif olarak, uygulamanın kaynakları nasıl yükleyeceğini denetlemek için derleme yönergeleri veya bayraklar kullanabilirsiniz. Örneğin, uygulama hata ayıklama modunda statik kaynakları yerel bir klasörden yükleyebilir. Uygulama yayın modunda CDN’yi kullanacaktır.

Gzip (GNU zip) gibi dosya sıkıştırma seçeneklerini göz önünde bulundurun. Sıkıştırma kaynak sunucuda web uygulamasının ana bilgisayarı tarafından veya doğrudan uç sunucularda CDN tarafından gerçekleştirilebilir. Daha fazla bilgi için bkz. Azure CDN’de dosyaları sıkıştırarak performansı geliştirme.

Yönlendirme ve sürüm oluşturma

Çeşitli zamanlarda farklı CDN örnekleri kullanmanız gerekebilir. Örneğin, uygulamanın yeni bir sürümünü dağıttığınızda yeni bir CDN kullanıp eski CDN’yi (daha eski bir biçimde içerik bulunduran) önceki sürümler için tutmak isteyebilirsiniz. İçerik kaynağı olarak Azure blob depolamayı kullanıyorsanız ayrı bir depolama hesabı veya ayrı bir kapsayıcı oluşturup ve CDN uç noktasını buraya yönlendirebilirsiniz.

CDN üzerindeki kaynaklara bağlantılarda sorgu dizesini uygulamanın farklı sürümlerini belirtmek için kullanmayın. Çünkü Azure blob depolama alanından içerik alınırken sorgu dizesi kaynak adının bir parçasıdır (blob adı). Bu yaklaşım, istemcinin kaynakları nasıl önbelleğe alacağını da etkileyebilir.

Uygulamayı güncelleştirdiğinizde statik içeriğin yeni sürümlerini dağıtmak, önceki kaynaklar CDN’de önbelleğe alınmışsa zor olabilir. Daha fazla bilgi için aşağıdaki önbellek denetimi bölümüne bakın.

CDN içerik erişimini ülkeye/bölgeye göre kısıtlamayı göz önünde bulundurun. Azure CDN, istekleri kaynağın ülkesine veya bölgesine göre filtrelemenize ve teslim edilen içeriği kısıtlamanıza olanak tanır. Daha fazla bilgi için bkz. İçeriğinize erişimi ülkeye/bölgeye göre kısıtlama.

Önbellek denetimi

Sistemde önbelleğe almayı nasıl yöneteceğinizi göz önünde bulundurun. Örneğin, Azure CDN'de genel önbelleğe alma kuralları ayarlayabilir ve ardından belirli kaynak uç noktaları için özel önbelleğe alma ayarlayabilirsiniz. Ayrıca, nasıl önbelleğe alma bir CDN kaynak önbellek yönergesi üstbilgileri göndererek gerçekleştirildiğini denetleyebilirsiniz.

Daha fazla bilgi için bkz. Önbelleğe alma nasıl çalışır?.

Nesnelerin CDN’de kullanılabilir olmasını engellemek için bu nesneleri kaynaktan silebilir, CDN uç noktasını kaldırabilir veya silebilir ya da blob depolama söz konusu olduğunda kapsayıcıyı veya blobu özel duruma geçirebilirsiniz. Ancak, yaşam süresi dolana kadar öğeler CDN'den kaldırılmaz. CDN uç noktalarını el ile de temizleyebilirsiniz.

Güvenlik

CDN, içerikleri CDN tarafından sağlanan sertifikayı kullanarak HTTPS (SSL) üzerinden veya standart HTTP üzerinden teslim edebilir. Karışık içerikle ilgili tarayıcı uyarılarından kaçınmak için, HTTPS aracılığıyla yüklenen sayfalarda görüntülenen statik içerikleri isterken HTTPS kullanmanız gerekebilir.

CDN’yi kullanarak yazı tipi dosyaları gibi statik varlıklar teslim ediyorsanız, bu kaynakları farklı bir etki alanından istemek için bir XMLHttpRequest çağrısı kullanırsanız aynı kaynak ilkesi sorunlarıyla karşılaşabilirsiniz. Web sunucusu uygun yanıt üst bilgilerini ayarlayacak şekilde yapılandırılmadığı sürece çoğu web tarayıcısı çıkış noktaları arası kaynak paylaşımını (CORS) engeller. Aşağıdaki yöntemlerden birini kullanarak CDN’yi CORS desteği sağlayacak şekilde yapılandırabilirsiniz:

CDN geri dönüşü

Uygulamanızın CDN’deki bir hata veya CDN’nin geçici olarak kullanım dışı kalması ile nasıl başa çıkacağını göz önünde bulundurun. İstemci uygulamalarının, kaynakların önceki istekler sırasında yerel olarak (istemcide) önbelleğe alınan kopyalarını kullanması mümkün olabilir. Alternatif olarak, hatayı algılayan ve CDN kullanılamıyorsa bunun yerine kaynakları çıkış noktasından (kaynakların yer aldığı uygulama klasörü veya Azure blob kapsayıcısı) isteyen kod ekleyebilirsiniz.