Black Friday öncesinde e-ticaret sitelerini yüke hazırlamak için adım adım kontrol listesi: cache kuralları revizyonu, CDN ön-ısıtma, checkout INP testleri, görsel optimizasyonu ve izleme alarmlarının kampanya öncesi kalibrasyonu.
Black Friday Öncesi E-Ticaret Sitesi Performans Hazırlığı
Kasım ayının son haftasında bir e-ticaret sitesinde geçen her saniye doğrudan gelire dönüşür ya da kaybedilir. Normal trafik yükleri için optimize edilmiş bir altyapı, ani artışlarda sessizce çöker; checkout butonu yanıt vermeyi geciktirir, ürün görselleri yarım yüklenir, kullanıcı sayfayı terk eder. Bu senaryoyu engellemek için kampanya döneminden en az iki hafta önce sistematik bir hazırlık gerekir.
Önbellek stratejisi, CDN hazırlığı, ön uç performansı ve anlık izleme birbirini tamamlayan katmanlardır. Her madde bağımsız uygulanabilir; birlikte çalıştıklarında kampanya yükü altında tutarlı bir deneyim mümkün olur. Altyapı zaten sağlamsa CDN'e bakıp geçmek, INP sorunu checkout'taysa oradan başlamak yeterlidir.
Bazı maddeler ekibiniz için "zaten yapıldı" sütununa düşecek, bazıları ise fark yaratacak. Kampanya öncesi gözden geçirmenin değerini şuradan anlarsınız: her şeyin hazır olduğunu sandığınız anda listenin bir yerinde açık kalan bir madde çıkar.
Cache kuralları revizyonu: statik ve dinamik içeriği ayırmak
Kampanya trafiği altında performansın bozulmasının en yaygın nedeni yanlış yapılandırılmış cache kuralları değil, aylar önce kurulmuş ve güncellenmemiş kurallardır. Kampanya sayfaları çoğunlukla "normal" sayfa olarak tanımlanır ve varsayılan TTL değerleri uygulanır; flaş indirim sayfaları ise çok kısa ya da hiç cache almaz, her istek origin sunucusuna gider.
İlk adım şudur: hangi URL'ler gerçekten cache'leniyor? CDN veya sunucu tarafı önbellek yapılandırmanızı açın ve şu soruları sorun. Ürün listeleme sayfaları cache alıyor mu? Stok bilgisi canlı mı çekiliyor, yoksa önbelleklenmiş HTML içinde mi kalıyor? Kampanya banner'ları hangi TTL ile servis ediliyor?
Sepet, hesap sayfaları ve checkout akışı cache dışında kalmalı; bu kuralı bir kez doğrulayın. Cookie tabanlı bypass kuralları özellikle önemlidir: oturum çerezi olan kullanıcılara önbelleklenmiş içerik sunulmuyorsa, giriş yapmış alışverişçilerin her isteği origin'e gidecektir. Büyük kampanyalarda bu yükü altyapının kaldırıp kaldırmadığını test etmek gerekir.
Stok durumu ve fiyat bilgisi için bir ara yol düşünün: tüm sayfayı dinamik tutmak yerine statik HTML iskeletini önbellekleyin, stok ve fiyatı JavaScript ile asenkron çekin. Bu yaklaşım her zaman işe yaramaz (SEO gereksinimleri veya uygulama mimarisi kısıtları bunu engelleyebilir), ancak yüksek trafikli kategori ve listeleme sayfaları için seçici kullanıldığında origin yükünü ciddi ölçüde azaltır.
CDN ön-ısıtma: edge'i trafikten önce doldurmak
CDN cache'i boşken gelen ilk istekler doğrudan origin sunucusuna gider. Black Friday sabahı binlerce kullanıcı aynı anda siteye girdiğinde, edge node'ları içeriği henüz doldurmamışsa yük birden origin'e yığılır. CDN ön-ısıtma (cache warming) bu durumu kampanya başlamadan önce ortadan kaldırır.
Ön-ısıtma süreci nispeten basittir: öncelikli URL'lerin listesini çıkarın (ana sayfa, kampanya landing sayfaları, en çok satılan ürün sayfaları, kategori sayfaları), ardından bu URL'lere otomatik istekler gönderin. Curl döngüsü, basit bir Python scripti veya CDN sağlayıcınızın varsa cache prefill API'si bu işi görür.
Bölgesel dağılım gözden kaçan bir ayrıntıdır. Ön-ısıtma isteklerini tek bir lokasyondan gönderirseniz yalnızca o lokasyonun cache'ini doldurursunuz; diğer PoP'lar hâlâ soğuktur. CDN'inizin hangi edge node'larından Türkiye trafiğine yanıt verdiğini kontrol edin; bölgesel ön-ısıtma sağlayıcıya göre API desteğiyle ya da manuel yaklaşımla yapılabilir.
Zamanlama da kritiktir. Kampanyadan 2-3 saat önce çalıştırmak çoğu yapılandırma için yeterlidir; çok erken çalıştırırsanız TTL dolup cache yeniden boşalabilir. Kampanya sırasında ürün sayfalarını otomatik olarak önbellekleyen "warm-as-you-go" yaklaşımı da geçerlidir: ilk gerçek istek origin'e gider, sonraki istekler edge'den gelir; trafiğin ilk dalgasını absorbe edebilecek bir altyapınız varsa bu da kabul edilebilir bir stratejidir.
Kampanya görsellerini önceden hazırlamak
Yeni ürün fotoğrafları ve kampanya banner'ları genellikle kampanya başlamadan saatler önce yüklenir; bu görseller optimize edilmemiş boyutlarıyla sunucuya atar. LCP skoru için en kritik görsel, büyük olasılıkla sayfa üstündeki kampanya banner'ı veya birinci ürün fotoğrafıdır. Yavaş yüklenen LCP görseli diğer tüm iyileştirmelerin önüne geçer.
Görsel hazırlığının kontrol listesi şu maddeleri kapsamalıdır: WebP ve AVIF formatlarına dönüşüm; responsive srcset boyutları (en azından mobil, tablet ve masaüstü için üç boyut); viewport içindeki LCP adayına loading="eager" ve fetchpriority="high" atribütleri; sıkıştırma kalitesinin gözden geçirilmesi (AVIF %60-70, WebP %80-85 çoğu durumda yeterlidir).
LCP görseli için <link rel="preload"> eklemek, özellikle CMS tarafından dinamik üretilen sayfalarda gözden kaçar. Kampanya landing sayfası statik bir şablondan oluşturuluyorsa preload etiketini şablona ekleyin; CMS tarafından yönetiliyorsa bunu tema veya eklenti ayarlarında kontrol edin.
Görsel boyut şişmesi fark edilebilir ama önlenebilir. 4000 piksel genişliğinde yüklenen bir hero görseli mobil cihazda 400 piksel genişlikte görüntülense de orijinal boyutta indirilir. Kampanya görselleri yüklemeden önce maksimum görüntülenecek genişliği belirleyin ve görsel o boyuta göre kırpılmış ya da ölçeklendirilmiş olsun.
Checkout akışında INP: ölçmek ve düşürmek
Önce ölçün. Chrome DevTools Performance paneli ile checkout akışındaki kritik etkileşimleri kaydedin: adres formu doldurma, ödeme yöntemi seçimi, sipariş onay butonu. Long Task'ları (50 ms üzeri) ve main thread'i bloke eden scriptleri tespit edin. Alan verisi (field data) için CrUX raporunu ve varsa RUM aracınızı inceleyin; lab ortamında iyi görünen değerler gerçek kullanıcıda farklı çıkabilir.
INP (Interaction to Next Paint), kullanıcının bir eyleminden (tıklama, yazma, form gönderimi) tarayıcının ekranı güncellediği ana kadar geçen süreyi ölçer. Checkout sayfasında yavaş INP, kullanıcının "Satın Al" butonuna bastıktan sonra hiçbir şey olmuyor hissi yaşamasına neden olur; terk oranı bu noktada artar. Good eşiği 200 ms, poor eşiği 500 ms'dir; kampanya öncesinde en az Good aralığına çekilmesini hedefleyin.
Checkout sayfalarında INP'i artıran en yaygın nedenler senkron çalışan ödeme sağlayıcısı scriptleri, form validasyonu sırasında DOM üzerinde aşırı yeniden hesaplama, büyük bileşen ağacının tek seferde yeniden render edilmesi ve üçüncü taraf chat widgetlarının main thread üzerindeki yüküdür. Her birini ayrı ayrı değerlendirin; ölçümde en büyük payı alan birini seçip başlayın.
Bir üçüncü taraf scripti kaldıramıyorsanız defer veya async ile yükleyin; mümkünse Web Worker'a taşıyın. Form validasyonunu debounce ile seyrekleştirin. React kullanıyorsanız startTransition ile öncelik sırasını düzenleyebilirsiniz. Bunlar genel başlangıç noktaları; her uygulamanın profil çıktısı farklı olacaktır.
Yük testi: zamanlama ve senaryo tasarımı
Yük testi yapmak yetmez. Doğru zamanlamada ve doğru senaryolarla yapmak gerekir. Kampanyadan bir gece önce yapılan bir yük testi bulguları düzeltmek için zaman bırakmaz; ideal pencere kampanya tarihinden iki ile üç hafta öncedir, bu süre bulguları analiz etmek ve değişiklikleri uygulamak için yeterlidir.
Senaryoları gerçekçi tutun. "Tüm kullanıcılar ana sayfaya giriyor" senaryosu gerçek trafik profilini temsil etmez; gerçek Black Friday trafiği farklı bir desen izler: kullanıcılar kampanya landing sayfasına veya doğrudan ürün sayfasına girer, sepete ekler, checkout'ta tıkanır. Bu akışı taklit eden bir senaryo kurun. Eşzamanlı kullanıcı sayısını trafiği tahmin değerinizin 1,5-2 katına çıkarın; ani spike'ları da ayrı bir test koşusuyla ele alın.
Test sırasında yalnızca yanıt sürelerine değil hata oranlarına da bakın. Veritabanı bağlantı havuzu dolunca ne oluyor? Origin timeout'ları artıyor mu? Cache hit oranı yüksek kalıyor mu yoksa yük altında düşüyor mu? Bu sorulara test ortamında cevap bulmak, kampanya gecesinde cevap aramaktan çok daha az maliyetlidir.
Yük testi sonucunda bulunan darboğazların tümünü kampanya öncesinde çözmeye çalışmayın. Kullanıcının doğrudan gördüğü ve satışı etkileyen noktaları (checkout, ürün detay) önce ele alın; admin paneli, raporlama servisleri gibi arka planda çalışan bileşenleri kampanya sonrasına bırakabilirsiniz.
İzleme alarmlarını kampanya için kalibre etmek
Normal trafik için ayarlanmış alarmlar kampanya döneminde ya çok sık tetiklenir (gürültü yaratır, gerçek sorunlar gömülür) ya da hiç tetiklenmez (eşikler çok yüksek bırakılmıştır). İkisi de tehlikelidir. Kampanya öncesinde alarm eşiklerini ve bildirim kurallarını ayrıca gözden geçirin.
Takip etmeniz gereken temel metrikler şunlardır: sunucu yanıt süresi (TTFB), HTTP 5xx hata oranı, checkout conversion rate, sepete ekleme başarı oranı ve ödeme adımı hata oranı. Her metrik için normal dönem baseline değerinizi bilin; kampanya sırasında %20-30 sapma olduğunda alarm tetiklenecek şekilde eşikleri güncelleyin.
Alarm kanalları da gözden geçirilmeli. E-posta bildirimi kampanya gecesi işe yaramaz; Slack veya SMS entegrasyonu daha pratiktir. On-call rotasyonunu kampanya tarihinden önce belgeleyin: kim izliyor, saat kaçtan itibaren, eskalasyon sırası ne? Bu detaylar sıradan görünür; alarm çaldığında bunları aramak 10 dakikanızı alabilir.
Sentetik izleme (synthetic monitoring) kampanya döneminde de aktif olmalı. Kritik kullanıcı akışlarını (ana sayfa → ürün sayfası → sepet → checkout ilk adım) taklit eden sentetik testler her 1-5 dakikada bir çalıştırın. Gerçek kullanıcı trafiği olmasa bile bu testler bir sayfanın çöküp çökmediğini hemen gösterir ve gerçek kullanıcı verisinin gelmesini beklemenize gerek kalmaz.
Black Friday hazırlığının çoğu iş iki hafta öncesinde tamamlanır; kampanya günü yalnızca izleme ve hızlı müdahale kalır. Liste uzun görünebilir, ancak her madde kendi başına saatler değil dakikalar alır; asıl zaman kurulumlarda ve testlerde harcanır.
Kampanya sonrası metrikler, listenin kendisinden daha net konuşur: hangi adım LCP veya INP'yi tuttu, hangisi beklentiyi karşılamadı. "Bitti" işaretlenen bir madde, ölçümde görünmüyorsa bitmemiştir. Bir sonraki kampanya bu notlarla açılır.
Yük altında performans, tek bir büyük iyileştirmeden değil birbirine bağlı küçük kararların birikmesinden gelir. CDN'i ısıttınız ama cache kuralı yanlışsa fark etmez; görselleri optimize ettiniz ama checkout INP yüksekse kullanıcı sepetten dönmez. Bütünü görmek, listeyi değerli kılan şeydir.