Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

consider iis and mssql on one hand and apache and mysql on another. is it the same tactic when scaling iis and apache?

i got the basic scaling thing - separate web tier and db tier, and then db redundancy etc...

BUT how to scale an application running on iis?

for example, it used to run on one machine, now we want it on multiple machines? same question for something hosted on apache? lets saw wordpress (common example) - how to make it so that requests for a blog can be processed on more than one (virtual) machine in the cloud?

hope my question is at least somewhat clear, if not ask please.

basically i'm looking for a pattern when scaling web apps. any? any links to info perhaps?

CLOUD BASED especially.

thank you

share|improve this question
    
For the IIS part, go get a free/trial Azure account and create a proof-of-concept application that is hosted there and scale it out across 4 servers or so. If you can get this proof-of-concept app working in Azure across multiple servers, then you'll have learned most of the concepts you are asking for. These concepts are common with Apache & friends, just completely different details in how to do it. What gbn stated applies here but this is a path to take to get some hands-on education on the topic. –  Jaxidian Jun 6 '11 at 0:48
add comment

2 Answers 2

up vote 1 down vote accepted

Generally you'd have a web farm:

  • Browser sends request to a web site
  • Web site DNS resolves to a load balancer (LB)
  • LB forwards request to one of several web servers

The LB will also monitor the web servers so that a failed server is ignored.

There are some issues about session etc if not shared in a database, but generally this works well. You decouple your web site from a single machine and gain basic DR functionality

share|improve this answer
    
thnx, but i am wondering specifically - if i have a web app (or wordpress as an example) is it just easy as that - deploy it on multiple servers and add load balancer, or is there something special than needs to be done for the app to work on multiple servers (provided of course that the database is already separated)? –  b0x0rz Jun 3 '11 at 10:37
add comment

Well, you probably won't be deploying Wordpress this way (though django and web2py are possibilities) ... but here's a thought

Google App Engine is supposed to help developers deploy scalable apps, and one would hope that some of Google's experience in this area is crystallized into the structure of GAE. Here are the salient features I gathered from my brief experience:

  • independent java (or python) servlets that can be started or terminated on individual hosts in a collection of identical unspecialized hosts, on demand -- instead of bulky applications requiring several processes and special prepared environments
  • on a busy app that is active across multiple servers, the web browser may not match up with the same host each time... and the servlet needs to be written to deal with that
  • for a scalable app, the developers should test and ensure that most requests will take under 1 second to process (GAE permits 30 seconds; but will flag requests taking over 1 sec, and they explain that the sub-second performance goal is taken into account when deciding how your app will be treated by GAE)
  • use volatile ram (memcache service) to help avoid searching disk (storage service) where possible for popular data requests [on a traditional approach this would also avoid creating read locks that tie up writers... provided serving some stale data is acceptable]

I should also note that only recently has GAE supported mySQL as part of GAE Business class ... the original DB service is somewhat different and more like a large associative array.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.