Hotel WD Cloudflare Önbellek Sistemine Geçti: Misafirlerinize Milisaniyelerle Ulaşıyoruz
Bugün, Hotel WD altyapısında bizi haftalardır heyecanlandıran bir mühendislik kilometre taşını duyuruyoruz. Tüm müşteri otel sitelerimiz artık Cloudflare'in küresel edge önbellek ağı üzerinden yayınlanıyor. Bu, otel web sitenizin misafirlerinize ortalama 800 milisaniye yerine 50 milisaniyede ulaşması demek. On yedi kat hızlanma. Üstelik müşterilerimizin ödediği paket ücretinin içinde, ekstra Cloudflare faturası yok.
Cloudflare edge cache mimarisi: Origin sunucusu, dünya çapında edge ağı ve misafir tarayıcısı arasında cache HIT akışı; 800ms'den 47ms'ye düşen cevap süresi.
Otelcilik dijitalde küçük rakamların oyunudur. Bir misafir, Google'da "London Mayfair boutique hotel" yazıp arama sonuçlarına baktığında, ilk üç sonuca tıklamadan önce her birini sadece birkaç saniye inceler. Sayfanız iki saniyenin üzerinde açılıyorsa, o misafir genellikle siteyi terk eder ve bir sonrakine geçer. Google, bu davranışı izler ve yavaş açılan siteleri arama sıralamasında geriye atar. Yani yavaşlık yalnızca o anki rezervasyonu kaybettirmez; gelecek aydaki organik ziyaretçi akışınızı da kemirir.
Bizim için sayfa hızı bir konfor değil, doğrudan ciroya etki eden bir mühendislik disiplinidir. Bu yüzden bu işe Milisaniye Sanatı diyoruz. Sanatçı bir saatçi gibi her milisaniyeyi optimize ediyoruz — çünkü 200ms, üç bin misafir başına bir rezervasyon farkı yaratır.
Hotel WD'yi inşa ederken seçtiğimiz altyapı sıradan bir tercih değildi. Modern web framework'leri arasında dünyanın en hızlı ve SEO dostu seçeneklerinden biri olan Next.js App Router mimarisini, otelcilik için özel olarak optimize ettik. Bunun sebebi basit:
Next.js, sayfaları sunucuda hazırlayıp misafire hazır HTML olarak gönderir. Tarayıcının ağır JavaScript yüklemesi beklemesini ortadan kaldırır. Bu sayede Hotel WD ile yayında olan otel siteleri, Lighthouse skorunda 95+ değerlere kolayca ulaşır.
Ancak Next.js tek başına yeterli değildi. Origin sunucumuz tek bir veri merkezinde; sitenizi açan misafir New York, Londra ya da Singapur'da olabilir. Aradaki coğrafi mesafe bile başlı başına gecikme demek. İşte Cloudflare bu noktada devreye giriyor.
Cloudflare for SaaS, dünyanın en büyük içerik dağıtım ağı olan Cloudflare'in, bizim gibi çok-müşterili (multi-tenant) SaaS platformlarına özel olarak sunduğu kurumsal bir hizmettir. Hotel WD, bu altyapının bir parçası olarak kayıtlıdır. Müşterilerimizin custom domain'leri otomatik olarak Cloudflare'in 330'dan fazla şehirdeki edge sunucularına dağıtılır.
Pratikte ne anlama geliyor? Sitenizin bir kopyası, misafirinize en yakın Cloudflare veri merkezinde tutulur. New York'tan gelen misafir New York edge'inden, Londra'dan gelen misafir Londra edge'inden, Tokyo'dan gelen misafir Tokyo edge'inden hizmet alır. Origin sunucumuz nerede olursa olsun, misafiriniz coğrafi olarak en yakın noktaya bağlanır.
Yeni mimaride veri akışı şöyle çalışıyor:
Eski mimaride her istek sunucuya kadar gelirdi: veritabanı sorgulanır, sayfa render edilir, HTML üretilirdi. Bu işlem ortalama 800 milisaniye sürerdi. Yeni mimaride bu hesaplama sayfa cache'lendiğinde bir kez yapılır; sonraki binlerce ziyaretçi anında cache'den servis edilir.
Bu mimariyi tasarlarken yalnızca hızı düşünmedik. Sunucu mühendisliği açısından kritik başka bir kazanım var: origin sunucumuz nefes alıyor.
Önceki kurulumda, popüler bir otel sitesine günde on bin ziyaretçi geldiğinde her birinin isteği origin'e ulaşır, veritabanı sorgulanır, sayfa render edilirdi. Yoğun bir kampanya dönemi, bir sosyal medya viral'i ya da bir Google Hotel Ads kampanyası ani trafik artışı yaratırsa sunucumuz zorlanır, yanıt süreleri uzar, en kötü ihtimalle bazı misafirler hata sayfası görürdü.
Yeni Cloudflare edge mimarisinde durum tamamen farklı:
Bu, kapsamlı bir ziyaretçi akışının oluşturduğu kurumsal rahatlık demektir. İşletmenizin başarısı altyapımızın kapasitesine takılmaz.
Migrasyonun teknik tarafı bizim sorunumuz, ama sonuçlarını birlikte göreceğiz. Bugün canlıya aldığımız iyileştirmelerin somut etkileri şöyle:
Sayfa Açılış Süresi. Custom domain'i bağlı tüm müşteri sitelerinde, ilk byte'a kadar geçen süre (TTFB) ortalama 800ms'den 50-80ms aralığına düştü. Bu, mobil 4G üzerinden bağlanan bir misafirin sayfayı fark edilebilir biçimde anında açıldığını hissetmesi demektir.
Akıllı Cache Geçersiz Kılma. Otel paneli üzerinden bir değişiklik kaydettiğinizde — açıklama düzeltmesi, yeni oda eklemesi, fiyat güncellemesi — sistemimiz arka planda Cloudflare'e bir "purge" sinyali gönderir. Bu sinyal, edge'deki eski kopyayı anında siler. Bir sonraki ziyaretçi taze içerikle karşılaşır. Yani hızdan ödün vermeden gerçek zamanlı içerik kontrolü.
Sahip-Cache Çakışmaları Çözüldü. Cache mimarimiz kullanıcı oturumunu fark eder. Otel sahibi kendi sitesini açtığında "düzenle" gibi yönetici öğelerini görür; aynı sayfayı aynı anda gezen anonim bir misafir cache'lenmiş halini görür. Owner'ın gördüğü hiçbir özel öğe yanlışlıkla halka cache'lenmez. Çift güvenlik.
Manuel "Önbellek Temizle" Butonu. Yönetim panelinde, sayfanın üst başlığında küçük bir buton ekledik. Acil bir durumda — diyelim sitenizde göstermek istemediğiniz eski bir fiyat görüyorsanız — tek tıkla edge cache'i temizleyebilirsiniz. Müşteri destek ekibimizi aramanıza gerek yok.
SSL/TLS Sertifika Yönetimi Otomatikleşti. Cloudflare for SaaS, custom domain ekleyen müşteriler için SSL sertifikalarını arka planda otomatik üretip yenilenir. Müşterimizin yapması gereken tek şey DNS panelinde tek bir CNAME kaydı eklemek. Sertifika işlerini hiç düşünmüyor.
Bu son nokta, müşterilerimiz için ekonomik açıdan en önemli olabilir. Hotel WD'de Cloudflare for SaaS hizmeti tüm paketlere dahildir. Ek bir ücret yok, başka bir abonelik yok, kullanım bazlı bir ekstra fatura yok.
Diğer SaaS sağlayıcıları çoğunlukla edge cache'i ya da CDN hizmetini ya tamamen size bırakır (kendi Cloudflare hesabınızı açıp ücretini ödersiniz) ya da "Pro" / "Enterprise" gibi üst paketlerde sunar. Biz, müşteri sitelerimizin her birinin kurumsal düzeyde altyapı hak ettiğine inanıyoruz. Küçük bir butik otel ile büyük bir resort zincirini, milisaniyeler söz konusu olduğunda, eşit ve hızlı bir altyapıyla buluşturmak istiyoruz.
Hotel WD ile sözleşmeniz olduğu sürece otel siteniz dünyanın en gelişmiş edge ağı olan Cloudflare'in 330+ şehrindeki sunucuları üzerinden yayınlanır. Bu hesabı, sertifika yenilemeyi, edge cache yapılandırmasını, DDoS korumasını ve trafik yönetimini biz arka planda hallederiz.
Mühendislik ekibimizden meraklı okurlar için kısa bir teknik özet. Bu projede uyguladığımız cache stratejisi tek katmanlı değil, üç katmanlı bir sistem:
unstable_cache (uygulama içi DB cache). Bir otel sayfasının veritabanı sorgu sonucu, hotel kimliği ve domain ile etiketlenir. TTL 7 gün, ama tag-based invalidation ile herhangi bir save action'ında anında geçersiz olur. revalidateTag('hotel:id:abc123', 'max') çağrısı, tüm ilgili önbellek girişlerini siler.Cache-Control header'ı ezilir, çünkü Next.js dynamic sayfalar için varsayılan olarak no-store üretir; biz bunu Cloudflare Cache Rule ile override ediyoruz.max-age=0 gönderiyoruz; tarayıcı her seferinde re-validate eder. Bu sayede save action'ından sonra müşteri sayfayı yenilediğinde anında taze içeriği görür — eski sürüm tarayıcıda kilitli kalmaz.Mimaride çözdüğümüz bazı incelikler vardı. Next.js, RSC streaming için response'a şu Vary header'ını ekliyor: vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding. Cloudflare'in cache politikası ise yalnızca Accept-Encoding'li Vary header'larını cache'ler — diğer değerler MISS'e sebep olur. Çözüm: bir Cloudflare Response Header Transform Rule ile bu header'ı sadeleştirip sadece Accept-Encoding bıraktık.
İkinci incelik: otel sahibi kendi sitesini açtığında "Düzenle" gibi sahip-spesifik UI görür. Bu kullanıcıya cache'lenmiş genel sürümü dönmek olmaz. Cookie-aware bypass kuralı yazdık: session-token cookie'si içeren her istek edge cache'i atlar ve doğrudan origin'e gider. Sahip her zaman taze içerik görür, anonim ziyaretçi cache'lenmiş hızlı sürümü.
Save action'larında üç katman birden invalidate olur. Otel paneli üzerinden bir alan kaydedildiğinde, sunucu tarafında revalidateHotel(hotelId, customDomain) fonksiyonu çağrılır. Bu fonksiyon hem Next.js cache tag'lerini bust eder hem de Cloudflare API'sine purge_cache isteği gönderir. CF tarafı best-effort olarak kurgulandı — purge başarısız olsa bile save akışı kırılmaz, en kötü ihtimalle TTL süresince bayat içerik kalır.
Daha önce belirttiğimiz gibi Google'ın Core Web Vitals sinyali, sıralama faktörlerinden biridir. Edge cache'lenmiş, sub-100ms TTFB ile açılan bir site, organik aramada doğal olarak yükselir. Bu yükselişin ne kadar olacağı sektörünüze, rekabetin yoğunluğuna ve içerik stratejinize bağlıdır — ama hız tarafında yapabileceğiniz hiçbir şey kalmamış olur.
Bu hafta yalnızca altyapı değil, görsel tarafa da yatırım yaptık. Azure Coastal, sahil otelleri ve butik resort'lar için tasarladığımız yeni premium temamız. Whitewash Akdeniz estetiği, ince siyah üst bar, ortalanmış logo tacı, sinematik deniz manzaralı hero ve güven veren rating çipi — hepsi bir arada. Aylar süren bir tasarım emeğinin ürünü ve ilk müşteri sitelerinde harika sonuçlar verdi.
Yeni temayı görmek isteyen müşterilerimiz için: Azure Coastal showcase sayfası
Otelinizin web sitesi misafirinizin dijital lobi'sidir. Lobi'nizin kapısını açtığınızda misafirin bir saniye bile beklemesini istemezsiniz; aynı şey dijital tarafta da geçerli. Sayfanızın anında açılması, misafirinize "biz işimizi ciddiye alıyoruz" mesajını ilk saniyede verir.
Hotel WD olarak Cloudflare for SaaS edge ağına geçişimizi tamamladık. Tüm müşterilerimiz — yeni kayıt yapanlar dahil — bu altyapının bir parçası. Tek yapmanız gereken, otel sitenizi kullanmaya devam etmek. Hız ve kurumsal rahatlık zaten otomatik olarak elinizde.
Sayfa hızı bir konfor değil, rezervasyondur. Hotel WD ile her milisaniyeyi sayıyor.
I have been working in the digital field since 1999. I still hold the position of Digital Marketing Manager at Türk SEM. I have also been involved in tourism-related activities since 2005.
