Blob Storage ve CDN Yönetimi
Modern bulut uygulamalarında statik içerik (görsel, video, belge, JS/CSS) sunmak, hem performans hem de maliyet açısından kritik bir karardır. Azure Blob Storage, ölçeklenebilir nesne depolama sunarken; CDN (Content Delivery Network), bu içeriği kullanıcıya en yakın noktadan sunarak gecikmeyi azaltır. Bu yazıda, Blob Storage'ın erişim katmanlarını, yaşam döngüsü yönetimini, CDN entegrasyonunu, önbellekleme stratejilerini ve güvenlik detaylarını ele alacağız.
1. Blob Storage Temelleri
Azure Blob Storage, yapılandırılmamış verileri depolamak için kullanılan bir nesne depolama hizmetidir. Üç blob türü bulunur:
| Blob Türü | Kullanım Alanı |
|---|---|
| Block Blob | Görsel, video, belge (büyük dosyalar) |
| Page Blob | VM diskleri (rastgele okuma/yazma) |
| Append Blob | Log'lar, telemetri (sadece ekleme) |
Statik Web Sitesi Hosting: Blob Storage, $web container'ı üzerinden statik web siteleri barındırabilir. Ancak, özel domain ve SSL sertifikası için CDN entegrasyonu gerekir.
2. Erişim Katmanları (Access Tiers)
Blob Storage, maliyet optimizasyonu için farklı erişim katmanları sunar :
| Katman | Erişim Sıklığı | Depolama Maliyeti | Erişim Maliyeti | Minimum Saklama |
|---|---|---|---|---|
| Hot | Sık erişilen | Yüksek | Düşük | - |
| Cool | Seyrek erişilen | Düşük | Yüksek | 30 gün |
| Cold | Çok seyrek | Daha düşük | Daha yüksek | 90 gün |
| Archive | Nadiren erişilen | En düşük | En yüksek | 180 gün |
Kritik Uyarı: Archive katmanı çevrimdışıdır (offline). Erişim öncesi "rehydration" (yeniden hidrasyon) gerekir ve bu saatler sürebilir . Sık erişilmesi beklenen verileri Archive'a taşımayın.
Erken Silme Ücreti: Cool veya Cold katmanındaki bir blob, minimum saklama süresi dolmadan silinirse veya başka bir katmana taşınırsa erken silme ücreti uygulanır .
3. Yaşam Döngüsü Yönetimi (Lifecycle Management)
Yaşam döngüsü politikaları, blob'ları otomatik olarak katmanlar arasında taşır veya siler. JSON tabanlı kurallarla yönetilir .
Örnek Politika:
json
{
"rules": [
{
"name": "agingRule",
"enabled": true,
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": ["blockBlob"],
"prefixMatch": ["logs/"]
},
"actions": {
"baseBlob": {
"tierToCool": { "daysAfterModificationGreaterThan": 30 },
"tierToArchive": { "daysAfterModificationGreaterThan": 90 },
"delete": { "daysAfterModificationGreaterThan": 365 }
}
}
}
}
]
}
En İyi Pratikler:
-
Katman geçişlerini kademeli yapın (önce Cool, sonra Archive) .
-
Silme işlemini en sona bırakın; soft delete ve versioning ile koruma sağlayın.
-
Lifecycle politikaları asenkrondur; anında çalışmaz.
-
Önemli: Lifecycle management ile Archive'daki bir blob'u çevrimiçi katmana otomatik olarak geri getiremezsiniz . Rehydration manuel yapılmalıdır.
4. CDN Entegrasyonu: Azure Front Door
Azure CDN hizmeti, Azure Front Door Standard/Premium ile devam etmektedir. Klasik Azure CDN ve Front Door (classic) sürümleri 2027'de kullanımdan kaldırılacaktır.
Neden CDN?
-
Küresel POP (Point of Presence) ağı ile düşük gecikme.
-
Origin (Blob Storage) üzerindeki yükü azaltma.
-
Özel domain ve SSL desteği.
Front Door vs. Klasik CDN:
| Özellik | Front Door Standard | Klasik CDN |
|---|---|---|
| Statik Dosya Sunumu | ✓ | ✓ |
| Özel Domain + SSL | ✓ | ✓ |
| Sorgu Dizesi Önbellekleme | ✓ | ✓ |
| Kural Motoru | ✓ | ✓ |
| WAF (Premium) | ✓ | Sınırlı |
| Kullanımdan Kaldırma | - | 2027 |
Öneri: Yeni projelerde Azure Front Door Standard kullanın.
5. Önbellekleme Stratejileri
CDN'in etkinliği, doğru önbellekleme kurallarına bağlıdır.
A. TTL (Time-to-Live) Yönetimi
Azure CDN, origin'den gelen Cache-Control başlığına uyar. Başlık yoksa varsayılan değerler uygulanır. Önbellek davranışı üç modda yapılandırılır :
| Mod | Davranış |
|---|---|
| Bypass Cache | Önbellekleme yapılmaz; tüm istekler origin'e gider. |
| Override | Origin'in cache süresi yok sayılır; belirtilen TTL kullanılır. |
| Set if Missing | Origin'de cache başlığı varsa o kullanılır; yoksa belirtilen TTL uygulanır. |
B. Sorgu Dizesi (Query String) Davranışı
Üç mod bulunur:
| Mod | Davranış | Kullanım |
|---|---|---|
| Ignore Query Strings | Tüm varyasyonlar aynı önbelleği kullanır | Takip parametreleri |
| Bypass Caching | Sorgu dizesi varsa önbellekleme yapılmaz | Dinamik içerik |
| Cache Every Unique URL | Her farklı sorgu ayrı önbelleklenir | Versiyonlama (?v=123) |
Versiyonlama En İyi Pratiktir: app.js?v=abc123 gibi versiyonlama, TTL beklemeden güncellemeyi sağlar.
C. Önbellek Temizleme (Purge)
Acil güncellemeler için manuel purge yapılabilir. Ancak, purge işlemi tüm POP'lara yayılması zaman alabilir.
6. Güvenlik: SAS Token ile Erişim Kontrolü
Blob container'ı varsayılan olarak public erişime açıksa, URL'yi bilen herkes dosyalara erişebilir. SAS (Shared Access Signature), sınırlı süre ve izinlerle erişim sağlar.
SAS Kullanımı:
text
https://<account>.blob.core.windows.net/<container>/<file>?sv=<SAS-token>
CDN ile SAS Entegrasyonu:
-
CDN, SAS token'ı sorgu dizesi olarak iletir.
-
Kritik: SAS süresi, CDN TTL'sinden kısa veya eşit olmalıdır. Aksi halde SAS süresi dolsa bile CDN eski içeriği sunmaya devam eder.
-
Sınırlama: CDN üzerinden SAS ile yükleme (upload) yapılamaz; sadece okuma (GET) desteklenir.
-
Öneri: Her istekte yeni SAS token üretiyorsanız ve "Cache Every Unique URL" kullanıyorsanız, CDN'den önbellek avantajı elde edemezsiniz; her istek origin'e gider . Bu senaryoda Azure Front Door Premium + Private Link daha güvenli ve etkili bir çözüm sunar .
7. Maliyet Optimizasyonu
CDN maliyeti, trafik hacmine ve seçilen sağlayıcıya göre değişir. Azure CDN'den Microsoft ağı üzerinden origin'e (Blob Storage) veri transferi ücretsizdir . Bu, CDN kullanımını maliyet açısından avantajlı kılabilir.
Temel Maliyet Bileşenleri:
-
Depolama: Katman başına GB başına ücret (Hot > Cool > Cold > Archive).
-
Erişim/İşlem: Okuma/yazma işlem sayısı (Archive'da en yüksek).
-
CDN Trafiği: POP'lardan kullanıcıya veri transferi.
-
Erken Silme: Cool/Cold/Archive minimum saklama süresi dolmadan silme.
8. En İyi Pratikler
| Pratik | Açıklama |
|---|---|
| Yaşam Döngüsü Politikası Kullanın | Manuel katman yönetimi yerine otomatik politikalar tanımlayın. |
| SAS Süresini TTL ile Uyumlu Tutun | SAS süresi > CDN TTL olursa güvenlik açığı oluşur. |
| Versiyonlama Kullanın | ?v=hash ile TTL beklemeden güncelleme yapın. |
| Archive'a Dikkat Edin | Sık erişilen verileri Archive'a taşımayın; rehydration maliyetli ve yavaştır. |
| Erken Silme Ücretlerini Hesaplayın | Katman değişikliklerinde minimum saklama sürelerini göz önünde bulundurun. |
| CDN Purge Planlayın | Acil güncellemeler için purge mekanizması hazırlayın. |
| Monitoring Kurun | Katman dağılımını, CDN hit/miss oranlarını ve maliyetleri izleyin. |
Sonuç
Blob Storage ve CDN, modern bulut uygulamalarında statik içerik yönetiminin temelidir. Erişim katmanları (Hot/Cool/Cold/Archive) ile depolama maliyetini optimize edebilir, yaşam döngüsü politikaları ile otomatik geçişler yapabilir, Azure Front Door ile küresel ölçekte düşük gecikmeli içerik sunabilirsiniz. SAS token ile güvenliği sağlarken, SAS süresi ile CDN TTL'sinin uyumuna dikkat etmek kritiktir. Unutmayın: Doğru yapılandırılmış bir Blob + CDN mimarisi, hem performansı hem de maliyeti optimize eder; yanlış yapılandırma ise güvenlik açıklarına ve beklenmedik maliyetlere yol açar.