I am currently preparing a new small virtual environment for development and testing with Windows Server + SQL Server + AD + Sharepoint + Exchange + IIS(ASP.NET) + Biztalk + ?, for a small (up to 5) dev team.

What are pros and cons on different approaches, eg. splitting up over different machines or packing everything up per machine.

I your experience what are the best practices I should follow in terms of architecture and various system/servers placement. What to share and what to split per person.

I would like to achieve some flexibility for the dev and testing process (so teammebers would not be steeping on each other's toes) and limit administrative effort needed to propagate settings, integrate work items and revert changes when something breaks up.

It's not supposed to be an everyday development working environment, more a tier 2 developer testing environment, and not yet an integration or QA testing environment with formal change process.

IMO the two borderline solutions are:

  1. creating one all-inclusive machine for each dev team member giving them freedom to manage
  2. creating shared environment managed by the one with somehow formalized change request process

What golden mean would you recommend, and why?


It really depends how the developers will be using this, and how often they are likely to break things. If each of your developers need to deploy their code to eh test environment every day, and are likely to overwrite other developers test setups then you would prob want to consider giving each developer their own test environment. The same goes if a fault with one developers code is likely to affect all the other developers doing there work, is it likely to lock up the whole server etc. If the testers are going to want things in their environment like Exchange and AD setup to their own custom requirements, then again they probably need their own test box.

That said, if each developer is running their own site in IIS, that runs in it's own application pool, and only needs shared access to resource like Exchange and AD, then maybe a single shared environmental. You can partition up AD into OU's so that things like user account creation and deletion do not affect other users etc.

  1. Makes no sense to ahve one for each member, as usage will vary widely. Note and check Visual Studio 2010 (coming REALLY soon) which has a lab management module and best practices.

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