İçeriğe geç
Varnish

Varnish Cache, HTTP trafiğini backend’e ulaşmadan karşılayabilen yüksek performanslı bir reverse proxy ve cache katmanıdır. Özellikle aynı içeriğin çok sayıda kullanıcıya sunulduğu e-ticaret, haber ve dokümantasyon platformlarında backend kapasitesini korumaya yardımcı olur.

Mono’da kullanım alanları

  • E-ticaret / haber sitelerinde edge caching
  • API yanıt önbellekleme
  • Kompleks önbellek invalidasyon stratejileri

Cache tasarımında kritik noktalar

Cache hit oranı tek başına başarı ölçütü değildir; doğru içeriğin doğru kullanıcıya sunulması gerekir. Cache-Control, cookie ve Authorization davranışı, TTL, stale içerik, purge mekanizması ve deploy sonrası invalidation birlikte test edilmelidir. Mono, cache katmanını metrik ve trace bilgisiyle görünür hâle getirir.

Hangi içerik önbelleğe alınmalı?

Ürün kataloğu veya herkese açık haber sayfası, aynı yanıtın birçok kullanıcıya gönderildiği iyi örneklerdir. Sepet, hesap bilgisi ve kullanıcıya özel fiyat ise farklı ele alınmalıdır. Bütün cookie’leri silerek cache hit oranını yükseltmek, oturum davranışını bozabilir ve kişiselleştirilmiş yanıtların paylaşılmasına yol açabilir. Önce yanıtların hangilerinin gerçekten ortak olduğu tanımlanır.

Cache anahtarında alan adı, yol ve gerekli sorgu parametreleri doğru temsil edilmelidir. Takip parametrelerinin gereksiz çeşitlilik oluşturması ile uygulamanın anlamlı filtrelerinin birbirine karışması farklı sorunlardır. Vary başlığı ve dil, sıkıştırma gibi yanıt varyasyonları da incelenir. Amaç en yüksek hit oranını değil, doğru yanıtı düşük maliyetle sunmayı sağlamaktır.

Varnish, Nginx cache ve CDN karşılaştırması

İhtiyaçDeğerlendirme
Mevcut proxy üzerinde temel cacheNginx cache, yeni bir katman eklemeden yeterli olabilir.
Ayrıntılı HTTP cache davranışıVarnish ve VCL, uygulamaya özel kararları yönetmek için değerlendirilir.
Kullanıcıya coğrafi yakınlıkCDN ayrı bir dağıtım ve ağ erişimi katmanı sağlar.
CDN arkasında origin kapasitesini korumakVarnish ile CDN birlikte kullanılabilir; invalidation zinciri eşleştirilir.

Varnish Cache mimarisinde istemci TLS sonlandırması genellikle ayrı bir katmanda tasarlanır. Bu katmandan gelen host ve protokol bilgisinin güvenli biçimde aktarılması gerekir. Ticari ürünlerin özelliklerini açık kaynak dağıtımın varsayılan yetenekleriyle karıştırmamak önemlidir.

Purge, ban ve grace neden önemlidir?

Bir fiyat değişikliği uygulamaya yazıldığı hâlde eski sayfa cache’te kalabilir. Bu nedenle içerik yayınlama süreci invalidation ile ilişkilendirilmelidir. Tam anahtarla nesne silme, koşula göre geçersiz kılma ve TTL sonunda yenileme farklı maliyetlere sahiptir. Purge arayüzü herkese açık bırakılmaz; yetkilendirme ve kaynak kısıtlaması gerekir.

Grace, backend geçici olarak yavaşladığında veya yenileme sürerken eski içeriği belirli koşullarda sunmaya yardımcı olabilir. Ancak her veri türü için uygun değildir. Haber sayfası ile stok ya da fiyat bilgisinin kabul edilebilir eskime süresi aynı değildir. Bu tolerans teknik ekip tarafından tahmin edilmek yerine iş sahibiyle belirlenmelidir.

Mono’nun performans değerlendirmesi

Hit/miss oranı; backend istek sayısı, yanıt boyutları, bellek kullanımı ve tahliye davranışıyla birlikte ölçülür. Cache ısınma süresi ve yayın sonrası toplu geçersiz kılmanın origin üzerinde oluşturduğu yük test edilir. Kullanıcıya özel yanıtların paylaşılmadığı doğrulanmadan performans kazanımı başarı kabul edilmez. Böylece iyileştirme yalnızca hız değil, içerik doğruluğu ve sürdürülebilir kapasite sağlar.

İlgili hizmetlerimiz

Sıkça sorulan sorular

Varnish Cache ne işe yarar?
Varnish, HTTP yanıtlarını backend yerine önbellekten sunarak response time ve backend yükünü azaltır. VCL diliyle cache key, TTL, bypass, grace ve purge davranışları uygulamanın ihtiyaçlarına göre tanımlanabilir.
Varnish her API için kullanılabilir mi?
Hayır. Kişiye özel veya sık değişen yanıtlar dikkatle cache edilmelidir. Authorization, cookie, cache-control, purge ve invalidation kuralları net değilse eski veya yanlış içerik sunma riski oluşur.
Varnish ile CDN arasındaki fark nedir?
Varnish çoğunlukla kendi altyapınızın edge katmanında çalışan bir HTTP cache’tir. CDN ise dağıtık noktalar, transit ağ ve sağlayıcı operasyonu sunar. Birlikte kullanılabilir; cache başlıkları ve purge zinciri uyumlu tasarlanmalıdır.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.