I was asked this question last week at our TechNet Event in Kansas City.
“What is Microsoft’s best practice recommendation for web server deployment to support a web site that has variable demands from day-to-day? Network Load-Balancing? Private Cloud? Clustering?.. or something else?” -Don G.
That’s a very big question, Don. To answer it of course involves knowing a lot about your application, your customers, the amount of infrastructure that you want to support in-house or are willing to purchase as a hosted solution, etc. And of course all have to be balanced with your budget and your staff (local expertise).
If I were building this today and I wanted to host it in-house, I would consider using System Center Virtual Machine Manager 2012 to create the machine templates and the a Service template to represent the application and all of its components. In this way I could manage the storage, the load balancer (yes, I’d buy a physical one, but I’d want to drive it through SCVMM 2012), and importantly the ability to scale up or scale down the number of instances of virtual machines among the various tiers of my web application.
See this blog post for a good description of SCVMM 2012 Service Templates.
I would also take advantage of the abilities of System Center Operations Manager 2012 for monitoring my application – even to the level of reporting application errors and directing my developers to the offending lines of code. Using OpsManager will also give me the ability to drive configuration changes when they become necessary, through native integration with SCVMM and through PRO (Performance and Resource Optimization).
“But what about if you don’t want to host it in-house?”
Well.. certainly there are a lot of hosters who will let me use their servers or their rack space (ahem). But honestly, if I want control of my application but don’t want to even have to worry about the datacenter, power, cooling servers, load balancing, network configuration, DNS, security, and massive scalability concerns… and if I want to just pay for what you use and nothing more, then I would consider building my application using Windows Azure.
* WARNING * – Shameless Blog Self-Promotion: See THIS BLOG POST of mine for a more detailed and most excellent description of Windows Azure.
Thanks for your question, Don! And if anyone else would like to comment, or has other answers for Don, please put them in the comments.