Uygulamamın persistence'a ihtiyacı olup olmadığını nasıl anlarım?
Kısa cevap
Belirleyici soru, uygulamanın kullanıcı oturumunu nerede tuttuğudur. Oturum sunucunun kendi belleğinde ya da diskinde tutuluyorsa kullanıcının hep aynı sunucuya gitmesi gerekir; yani vService'te Persistence açılır. Oturum Redis, veritabanı gibi ortak bir depoda ya da istemcideki bir token'da (ör. JWT) tutuluyorsa her istek herhangi bir sunucuya gidebilir ve persistence gerekmez. Birden fazla sunucu aktifken kullanıcıların oturumdan düşmesi, sepetin boşalması ya da çok adımlı işlemlerin yarıda kalması persistence ihtiyacının tipik işaretleridir; isteklerin hangi sunucuya gittiği HTTP Logs ekranındaki Backend Service kolonundan görülür.
İşaretler
| Belirti | Olası anlamı |
|---|---|
| Kullanıcılar rastgele oturumdan düşüyor, yeniden giriş istenmesi | Oturum sunucu yerelinde; istekler farklı sunuculara gidiyor |
| Alışveriş sepeti ya da form verisi kayboluyor | Aynı neden |
| "Invalid session", CSRF token hataları | Token bir sunucuda üretilip başka sunucuda doğrulanıyor |
| Çok adımlı işlem ya da dosya yükleme yarıda kalıyor | Adımlar farklı sunuculara düşüyor |
| Sorun tek sunucu açıkken yok, ikinci sunucu eklenince başlıyor | Persistence ihtiyacının en güçlü işareti |
Nasıl Doğrulanır?
- HTTP Logs: vService'in HTTP Logs ekranında Backend Service kolonu isteği yanıtlayan sunucuyu gösterir. Aynı kullanıcının ardışık isteklerinin farklı sunuculara gittiği ve hatanın bu geçişte oluştuğu görülürse persistence gerekir.
- L7 TCP: TCP Logs ve vService Sessions ekranlarındaki sunucu kolonlarına bakılır.
- Deneme: vService'te geçici olarak New Cookie açılır (Edit → Details → LB algorithm kutusu → Persistence → Save); sorun kayboluyorsa neden persistence eksikliğidir.
- Uygulama ekibine sorulacak: Oturum nerede tutuluyor? Sunucular arasında paylaşılıyor mu?
Hangi Durumda Ne Seçilir?
| Uygulama | Öneri |
|---|---|
| Stateless mikroservis, oturum ortak depoda | None (varsayılan) |
| Mevcut web uygulaması kendi oturum cookie'sini üretiyor | Current Cookie |
| Yeni web uygulaması | New Cookie |
| API Gateway / REST istemcileri | Hash (header tabanlı anahtar) |
| Önbellek / CDN katmanı | Hash (URL tabanlı anahtar) |
| Oturumları izlemek, bakım öncesi taşımak gerekiyor | Session Affinity Manager (SAM) |
| L7 TCP vService | None ya da Hash |
| Network vService | L4 Persistence |
Tablo docs'taki senaryo önerilerine dayanır.
Sık Karıştırılan Noktalar
- "Persistence'ı açmak her zaman güvenlidir." Stateless uygulamalarda gereksizdir ve yükün dengeli dağılmasını bozar (en iyi uygulamalar).
- "Tek sunucuda da gerekir." Tek Kurum Servisi varsa bütün istekler zaten ona gider.
- "Persistence sunucu düşünce de oturumu korur." Sunucu kullanılamaz olursa kullanıcı başka sunucuya gider; oturum yalnızca ortak depoda tutuluyorsa korunur.
Dokümantasyonda nasıl yapılır
