Loading...
Kullanım senaryosu

Kullanım Senaryosu: Medya Depolama & CDN Dağıtımı

Görselleri, videoları, indirmeleri ve yedekleri uygulama sunucunuzdan çıkarıp S3 uyumlu Object Storage'a taşıyın, ardından her varlığı cdn.com.tr edge cache'inden dağıtın. Origin'iniz ağır byte trafiğini işlemeyi bırakır; depolama faturanız ve sayfa ağırlığınız kontrol altına girer.

Kullanım Senaryosu: Medya Depolama & CDN Dağıtımı

Sorun: medya trafiği origin'i eziyor

Ürün fotoğrafları, hero videolar, PDF'ler ve kullanıcı yüklemeleri sayfalarınızı oluşturan sunucuyla aynı sunucuda durduğunda, her görsel isteği gerçek uygulama işiyle CPU, disk I/O ve bant genişliği için yarışır. Otuz görselli tek bir popüler sayfa, tek bir origin'e karşı trafiği otuz kat artırır ve bir trafik artışı veya büyük bir video indirmesi, uygulamanın yanıt vermek için ihtiyaç duyduğu kaynakları tamamen tüketebilir. Bir uygulama sunucusunda depolama ölçeklendirmesi de zordur: sonunda diskiniz biter ve şişman bir dosya sisteminin yedekleri yavaş ve kırılgan hale gelir. Byte'ları mantıktan ayırmak ilk yapısal çözümdür ve bu senaryonun sunduğu tam olarak budur.

cdn.com.tr bunu nasıl çözer: bucket'lar artı edge cache

Her varlığı S3 uyumlu bir Object Storage bucket'ında saklarsınız; bu size etkin biçimde esnek bir kapasite ve uygulamalarınızın standart S3 araçlarıyla konuştuğu bir endpoint sağlar. Bu bucket'ın önüne cdn.com.tr CDN'ini koyarsınız, böylece tarayıcılara gerçek dağıtım bucket'tan değil, hiçbir zaman uygulama sunucunuzdan değil, edge konumlarından yapılır. Bir dosya için ilk istek edge cache'i doldurur; o dosya için sonraki her istek, Object Storage'a tekrar dokunmadan edge'den sunulur. Sonuç olarak origin'iniz byte trafiğinin neredeyse hiçbirini işlemez, depolama katmanınız compute'tan bağımsız olarak ölçeklenir ve kullanıcılar tek, uzak bir sunucu yerine yakın bir edge node'undan varlık alır.

Access key'ler, herkese açık varlıklar ve özel dosyalar

Her bucket, panelden oluşturduğunuz, döndürdüğünüz ve iptal ettiğiniz access key ve secret çiftleriyle kontrol edilir. Katalog görselleri gibi herkese açık medya için CDN alan adı üzerinden dağıtım yapar ve bucket'ın ham endpoint'ini işaretlemenizden (markup) uzak tutarsınız. Ücretli indirmeler veya iç yedekler gibi özel materyaller için nesneleri herkese açık olmayan tutar ve access key ile üretilen kısa ömürlü imzalı URL'ler dağıtırsınız; böylece bir bağlantı sonsuza kadar yaşamak yerine sona erer. Her entegrasyon kendi key'ini aldığından, ele geçirilmiş bir uploader veya ayrılan bir müteahhit, platform genelinde bir parola sıfırlaması yerine tek tıkla iptal demektir.

Kendinizi cache'i zehirlemeden cache-control ve purge

Cache, nesnelerinize koyduğunuz header'lar kadar iyidir. Uzun ömürlü, versiyonlanmış varlıklara immutable ile uzak-geleceğe dönük bir Cache-Control verin, gerçekten sık değişen şeylere ise daha kısa bir TTL verin. En temiz desen içerik hash'li dosya adlarıdır: bir görsel değiştiğinde URL'si de değişir, böylece edge doğal olarak yeni dosyayı sunar ve asla eski cache'le mücadele etmezsiniz. Aynı URL'deki bir dosyanın üzerine yazmanız gerektiğinde — bir logo değişikliği, düzeltilmiş bir PDF — panelden veya cdnctl'den hedeflenmiş bir purge, o nesneyi her edge konumundan düşürür, böylece bir sonraki istek onu bucket'tan yeniden çeker. Bu, invalidation'ları nadir, kesin ve güvenli tutar.

Birkaç görselden tam bir medya kütüphanesine ölçeklenme

Birkaç logoyu sunan aynı kurulum, yüzbinlerce ürün fotoğrafından oluşan bir kataloğa, isteğe bağlı bir video kütüphanesine veya sürekli devam eden gecelik yedek arşivine ölçeklenir, çünkü Object Storage siz disk sağlamadan büyür ve edge okuma trafiğini emer. Medya ağırlıklı siteler en keskin kazanımları görür: görseller yakın edge'lerden akarken sayfalar hafifler ve hızlanır, en pahalı ve en kırılgan kaynak olan origin bant genişliği ise dramatik şekilde düşer. Yedekler de temiz bir eve kavuşur, herkese açık dağıtım yolundan uzakta kendi özel bucket'ında kendi access key'iyle izole edilir.

Platformun geri kalanıyla nasıl uyumlu

Bu senaryo kasıtlı olarak depolama ve dağıtım odaklıdır, ama hesaptaki her şeyle uyum içinde çalışır. Bir WordPress veya PHP uygulaması yükleme dizinini bir bucket'a devredebilir ve siteyi aynı edge üzerinden sunmaya devam edebilir. Bir container uygulaması bucket'ı ortam değişkenleri olarak bağlayabilir ve nesneleri doğrudan okuyup yazabilir. DNS ve Auto SSL dağıtım alan adını yönetir; purge, log'lar ve durum (status) ise varlıkların cache'ten aktığını ve her istekte sessizce origin'e düşmediğini doğrulamak için operasyonel görünürlük sağlar.

Adım adım nasıl kurulur

1

Bir bucket oluşturun

Panelde Object Storage'ı açın ve medyanız için bir bucket oluşturun (örneğin media-prod). S3 uyumlu bir endpoint, bölge (region) ve bucket adı elde edersiniz. Erişim politikalarının asla çakışmaması için herkese açık varlıklar ile özel yedekler için ayrı bucket'lar kullanın.

2

Kapsamlı bir access key oluşturun

Bucket için bir access key / secret çifti oluşturun ve bunu uploader'ınıza, CMS'inize veya S3 SDK'nıza yapıştırın. Diğerlerini bozmadan tek bir entegrasyonu döndürebilmek (rotate) veya iptal edebilmek için uygulama başına bir key kullanın. Bir key sızarsa, key'ler istediğiniz zaman panelden döndürülebilir.

3

Doğru header'larla yükleyin

Mevcut S3 istemcinizle, aws-cli veya eklentinizle varlıkları gönderin; hiç değişmeyen dosyalarda Content-Type ve uzun bir Cache-Control (örneğin max-age=31536000, immutable) ayarlayın. logo.a1b2c3.png gibi içerik hash'li dosya adları kullanın, böylece yeni bir sürüm yeni bir URL olur ve asla invalidation gerektirmez.

4

CDN'i öne koyun

Bir dağıtım alan adını (örneğin cdn.example.com) CDN'e bağlayın ve origin'ini bucket endpoint'ine yönlendirin. İstekler artık önce edge'e ulaşır, konumlar arasında cache'lenir ve varlık başına yalnızca ilk istekte Object Storage'a ulaşır (miss). Auto SSL, dağıtım alan adı için sertifikayı otomatik olarak verir.

5

Cache davranışını doğrulayın

Bir varlığı iki kez yükleyin ve ikinci istekte yanıt header'larında HIT olup olmadığını kontrol edin. Cache-Control'ünüzün dikkate alındığını ve tarayıcıların ve edge cache'in doğru şekilde cache'leyebilmesi için image/video MIME tiplerinin doğru olduğunu doğrulayın.

6

Purge'ü bağlayın

Aynı URL'deki bir dosyanın üzerine yazdığınızda, edge'in eski kopyayı düşürmesi için panelden veya cdnctl ile bir purge isteği gönderin. Dosya adına göre versiyonladığınız varlıklar için buna nadiren ihtiyaç duyarsınız; içerik hash'li adların yoğun değişen medya için önerilmesinin nedeni tam olarak budur.

Örnek senaryolar

E-ticaret ürün kataloğu

Binlerce ürün fotoğrafı bir bucket'ta yaşar ve edge'den akar; böylece listeleme ve detay sayfaları kampanyalar sırasında mağazanın uygulama sunucusunu yormadan hızlı kalır.

Video ve büyük indirmeler

İsteğe bağlı video ve yükleyici dosyaları bir kez saklanır ve cache'ten dağıtılır; bir dosya aniden viral olsa bile origin bant genişliği sabit kalır.

İzole yedek arşivi

Gecelik veritabanı ve dosya yedekleri, herkese açık dağıtım yolundan tamamen ayrı, talep üzerine döndürülebilir özel bir access key'e sahip özel bir bucket'a gider.

Sıkça sorulan sorular

Depolama gerçekten mevcut araçlarımla S3 uyumlu mu?

Evet. Bucket'lar S3 uyumlu bir endpoint sunar, bu yüzden aws-cli, s3cmd, rclone ve AWS SDK'ları, access key ve secret'ınızla endpoint'e yönlendirilerek çalışır. S3'ü destekleyen çoğu CMS ve framework yükleme eklentisi de aynı şekilde çalışır.

Kullanıcılar doğrudan bucket'a mı, yoksa CDN'e mi ulaşır?

Herkese açık dağıtım için bir CDN alan adını bucket endpoint'ine yönlendirir ve o alan adını işaretlemenizde (markup) yayınlarsınız; böylece kullanıcılar her zaman edge cache'e ulaşır. Ham bucket endpoint'i CDN'in arkasında kalır ve sayfalarınızın referans verdiği şey o değildir.

Bucket'ı herkese açık yapmadan özel dosyaları nasıl sunarım?

Nesneleri özel tutun ve access key'inizle kısa ömürlü imzalı URL'ler üretin. Bağlantı zamanla sınırlı erişim verir ve ardından sona erer; bu, ücretli indirmeler, faturalar veya kalıcı olarak herkese açık olmaması gereken her şey için doğru desendir.

Aynı dosya adında bir görseli değiştirirsem, eskisi neden hâlâ görünüyor?

Çünkü edge, önceki sürümü o URL altında cache'lemiştir. O nesne için panelden veya cdnctl ile bir purge yapın ya da her yeni sürümün yeni bir URL'ye sahip olduğu ve asla purge gerektirmediği içerik hash'li dosya adlarını benimseyin.

Medyada hangi Cache-Control'ü ayarlamalıyım?

Uzun ömürlü, versiyonlanmış varlıklar immutable ile uzak-geleceğe dönük bir max-age kullanmalı; sık değişen dosyalar ise daha kısa bir TTL kullanmalıdır. Header'ı yükleme sırasında ayarlamak, edge'in dosyayı bucket'tan yeniden çekmek yerine elinde tutmasını sağlayan şeydir.

Bir key sızarsa erişimi iptal edebilir miyim?

Evet. Access key'ler panelden entegrasyon başına döndürülür ve iptal edilir. Uygulama başına bir key verdiğiniz için, sızmış bir key'in iptali yalnızca o entegrasyonu etkiler, bucket'ı okuyan tüm servisleri değil.