Konuyu Açan
#1
Küçük bir e-ticaret projesini Windows Server üzerinde IIS’te yayınlarken, planlı uygulama havuzu geri dönüşümünün kullanıcı sepetlerini sıfırlayabildiğini gördüm. İlk bakışta sunucuda sorun var gibi duruyor ama ASP.NET uygulamalarında oturum durumu bellekte, yani InProc tutuluyorsa havuz yeniden başladığında bu bellek de gider. Bu; zamanlanmış geri dönüşümde, dağıtım sırasında veya havuz beklenmedik şekilde kapandığında yaşanabilir.
Kalıcı çözüm, sepeti yalnızca uygulama sürecinin belleğine emanet etmemek. ASP.NET Framework uygulamalarında SQL Server oturum sağlayıcısı, ASP.NET Core’da ise paylaşımlı bir dağıtık önbellek kullanılabilir. Ancak uygulamanın oturum verilerini serileştirmeye uygun olması ve tüm sunucu örneklerinin aynı depoya erişmesi gerekir. Tek sunucuda bile bu yaklaşım, havuz yeniden başladığında kullanıcı deneyimini korur.
Bir de dosya yüklemelerini uygulama klasöründe tutmamak önemli. Yeni sürüm dağıtılırken klasör değişirse ürün görselleri veya kullanıcı belgeleri kaybolabilir; bunları uygulama dizini dışında, yedeklenen kalıcı bir konumda saklamak daha güvenli.
Sizde IIS geri dönüşümlerini nasıl yönetiyorsunuz? Sepet ve oturum verisi için SQL Server mı, dağıtık önbellek mi tercih ediyorsunuz; dağıtım sırasında kesintiyi azaltmak için neler uyguluyorsunuz?
Kalıcı çözüm, sepeti yalnızca uygulama sürecinin belleğine emanet etmemek. ASP.NET Framework uygulamalarında SQL Server oturum sağlayıcısı, ASP.NET Core’da ise paylaşımlı bir dağıtık önbellek kullanılabilir. Ancak uygulamanın oturum verilerini serileştirmeye uygun olması ve tüm sunucu örneklerinin aynı depoya erişmesi gerekir. Tek sunucuda bile bu yaklaşım, havuz yeniden başladığında kullanıcı deneyimini korur.
Bir de dosya yüklemelerini uygulama klasöründe tutmamak önemli. Yeni sürüm dağıtılırken klasör değişirse ürün görselleri veya kullanıcı belgeleri kaybolabilir; bunları uygulama dizini dışında, yedeklenen kalıcı bir konumda saklamak daha güvenli.
Sizde IIS geri dönüşümlerini nasıl yönetiyorsunuz? Sepet ve oturum verisi için SQL Server mı, dağıtık önbellek mi tercih ediyorsunuz; dağıtım sırasında kesintiyi azaltmak için neler uyguluyorsunuz?