This question is for ASP.NET and SQL Server developers. What are your best practices with respect to setting up your development and test environment? I'm interesting in the following issues:
- How many tiers do you recommend and what goes on on each tier? Just dev, test, and production or perhaps dev, test, staging, and production?
- Which types of applications and/or servers should run on actual physical hardware and which can get away with a VM?
- What are your strategies for loosely coupling users from web sites, web developers from their web/app/DB servers, and DB developers from their DB servers?
- How do developers stay "DRY?" (no deodorant jokes, please ;)
- What are the pros and cons to putting web, app, and DB servers on their own machines? Does putting servers on separate machines in order to minimize contention for a machine's resources trump any NIC and network latencies that might be introduced by putting them on different machines?
- How do you configure your web apps to minimize contention for resources (e.g. virtual directories, separate application pools, etc.)
- How and how often do you refresh your databases on each tier? Do you just refresh the data or both the data and objects?
Thanks.