Take the 2-minute tour ×

Currently I have one server that runs an ASP.net web application (on IIS) and this is also running a SQL Server database.

I am getting more and more traffic and soon I will need to increase the amount of traffic I can handle so the user experience is not compromised. I am not talking about google or amazon type traffic.

My question is, what is a realistic network and server layout to provide me with better performance and big me a reasonable about of redundancy without expecting to pay huge amounts of money.

I would like to keep down time to a reasonable minimum but am not expecting a 100% available all the time solution.

I was considering something like a firewall, loadbalancer, two web servers running IIS and one SQL server with a reasonable spec (maybe a Dell R710 with 16GB or more ram), and possibly a second SQL server that we can cluster to the other one.

I would like the system to be able to scale in such a way that if in a year or two we have increased our traffic dramatically, we can add additional servers to cater for the increased traffic without rebuilding the entire system.

Any suggestions or links pointing me in the right direction is perfect.

Note: I have been going through highscalability.com but most of these case studies and articles are referring to mega sites like StackOverflow, Amazon and other super huge site with giant volumes of traffic. I am not in that boat yet.

share|improve this question
add comment

1 Answer

up vote 0 down vote accepted

The classic issue that this sort of architecture runs into is that web servers are very easy to scale out, whereas databases are much easier to scale up.

What you've suggested is a good start. I've had a similar experience and I'm at the point where I have:

  • 2x IIS 7.5 webservers with shared IIS config and DFS-R replicating the web content directories.
  • 2x SQL 2008 R2 databases in an MSCS cluster
  • 2x AD / DNS servers to support the cluster
  • 2x HaProxy load balancers in front of the webservers

Obviously, you can get away with no AD and a single SQL server if you don't care much about availability.

When SQL becomes the bottleneck, I'll (after eliminating issues in the application) get bigger hardware for the SQL servers. When IIS becomes the bottleneck, I can just buy more IIS boxes and throw them in. It's not uncommon to see applications with a couple of big database boxes at the back with masses of webservers sat in front.

The other main issue in this is licensing cost. In many cases, the cost of hardware becomes immaterial, because the software licenses you need to run this becomes much greater. To cluster SQL server, I believe you need SQL Server Enterprise and Windows Enterprise Edition - these are a lot more $$$ than the Standard versions.

Ultimately, you have to decide what you care more about: low cost, performance or availability. Availability is, in my experience, very expensive.

share|improve this answer
add comment

Your Answer


