"Web farm" kavramını, IIS ve/veya web yazılım geliştirme işiyle uğraşmış neredeyse herkes duymuştur. IIS 6.0'dan itibaren bir de "web garden" kavramıyla tanışmış olduk. Bu yazımda bu kavramların ne olduğundan ve bunları kullanırken nelere dikkat etmemiz gerektiinden bahsedeceğim.
Web farm
Bu kavram, Türkçe'ye "sunucu çiftliği" olarak çevrilen kavramın bir türüdür. Yani "web sunucusu çiftliği" diyebiliriz. Aynı web uygulamalarını ve/veya web sitelerini, birden fazla makine üzerinde bulundurmak anlamına gelmektedir. Genellikle "Windows Network Load Balance (NLB)" veya başka bir yük dağıtım uygulaması ile, ilgili uygulamaya/siteye gelen istekler bu makinelere pay edilir. Böylece, nispeten daha "zayıf" veya "ucuz" donanımlarla daha çok iş yapılabilir. Ancak daha önemlisi, makinelerden birinde yaşanabilecek sorunlar, kullanıcılar farketmeden, istekler diğer makinelere otomatik olarak yönlendirilerek çözülmüş olacaktır.
Web garden
Bu kavramı Türkçe'ye "web sunucu bahçesi" diye çevirmek yanlış olmayacaktır. Bu kavramla, IIS 6.0'la beraber tanıştık. Bunun nedeni, bu kavramın "uygulama havuzu" (application pool) kavramıyla gelmiş olmasıdır. Biliyorsunuz, IIS 6.0 ve 7.0'de her uygulama için ayrı bir uygulama havuzu tanımlayabiliyoruz.Her bir uygulama havuzu için de - en az - bir tane "worker process", yani w3wp.exe çalışıyor. İşte "web garden" kavramı tam da bu noktada devreye giriyor: Biz istersek, aynı uygulamayı taşıyan birden fazla w3wp.exe çalıştırılmasını sağlayabiliyoruz.
IIS 7.0'de bu ayarı, uygulama havuzu özelliklerinde yapabiliyoruz:
Tıpkı "web farm"da olduğu gibi, "web garden"da da, gelen istekler w3wp.exe'ler arasında pay edilmektedir. Ancak burada birden fazla makine söz konusu olmadığı için, bunu kullanmanın ilk nedeni performans olamayacaktır. Tıpkı “web farm”da olduğu gibi, w3wp.exe’lerden birinde ortaya çıkabilecek bir sorun, diğerlerini etkilememiş olacaktır. “Web garden” kullanmanın bir diğer nedeni de, 32bit ortamlarda hafıza kullanımını artırmaktır. Buradaki yazımda bahsettiğim gibi, 32bit ortamlarda her bir ASP.NET uygulaması en fazla 800MB hafıza kullanabilmektedir. Eğer bizim uygulamamız daha fazlasına ihtiyaç duyuyorsa, “web garden” özelliği ile birden fazla w3wp.exe kullanılmasını sağlayabiliriz.
Dikkat etmemiz gerekenler
Neden “web garden” ve “web farm” kullanmak isteyebileceğimizden bahsettik. Ancak, her zamanki gibi, bunları kullanmamız bazı sorunları da beraberinde getirecektir:
SONUÇ
Özetlemek gerekirse, hem “web garden” özelliği, hem de “web farm” kullanımı, ihtiyaçlara bağlı olarak bize ciddi faydalar sağlayabilir. Ancak elbette ne yaptığımızı biliyor olmamız koşuluyla.
CENK ISCAN