Monday, April 3, 2006

Web Application Hosting

People in the java land normally deploy products in 3 tiers (webserver (static), app server (dynamic), database server). People in Microsoft land normally deploy applications in 2 tiers (webserver (static and dynamic), database server).

I always hear the argument of separating them for security reasons, but in reality once you own the web tier its pretty easy to own the application tier. It may be slightly more secure, but its not a reason not to patch things (which is what people use it as).

In reality the complexity of having a whole layer to do essentially nothing seems pointless to me. Why bother deploying more hardware for a minor benefit. Even in the java world, the application servers do everything a standard webserver can do, so what's the point?

Any comments, please leave some.


Anonymous said...

The point is two-fold (at least): choice and adaptability.

Choice - You get to choose the webserv and the appserv. You get best of breed, instead of being tied to a single vendor / product / version. (Also, when updating the webserv, the appserv can take over it's duties, so there's less downtime.)

With the two-tier approach its like hopping around on two feet (webserv and appserv tied together). You can get places just fine, but you better be sure that the spot you're jumping to is safe, and that you'll be able to keep your balance when you land.

With the separate-servers approach, it's like walking normally with both feet. One step at a time, and you always have at least one foot planted on the ground. You can always balance, and use the other foot to probe around and decide where to step next, without too much risk. (As an individual, this allows you to try out different things in a much easier manner --good for leaning and good for job prospects.)

Adaptability - Separating them gives you a chance to alter the mix according to what your site(s)/app(s) do. If you have alot of static traffic (images, html/text files, downloads) you have more webservs. If you're very app heavy, like a B2B market or something, you have more appservs.

So, is it necessary to bother with for the individual? Eh, it's not that hard, and it prepares you with some knowledge for future jobs etc.

Do things 'not work' having two-tiers? Nah. But I would add that the three-tier approach is better suited than the two-tier in places where there are more than three tiers.

I agree that security isn't really a good argument for one or the other. By the time you're thinking about what web/app serv to use etc, you'd better have already thought about securing everything. However, the security of a particular two-tier system versus a particular three-tier system might be a very valid reason for going with one or the other, but not because of the number of tiers. It just happens that in today's offering some of the three-tier systems are more secure, and easier to secure, than some of the two-tier systems.

jkowall said...

I would rather see the usage of a reverse proxy or something which actually gives you added capability than a bunch of webservers that just symply regugitate the content that is being generated on the dymanic side of things. With most products I deal with the content is 99% dynamic, and thus the processing power should be in that area.

Thanks for the comment.