There are a number of ways to setup your SharePoint 2007 development environment. Below I will highlight the primary options that should be considered. Each option can make sense in the right set of circumstances.
Please keep in mind, I am not going into details about domain controllers, AD, Exchange, etc ... once you add those into the mix, there are easily 10 different ways to set it up ...
Couple of no contest items:
- VMware performs better than Microsoft Virtual Server (at least for now)
- Installing and running SQL Server and IIS on the same networked machine is a security risk
What each option should have installed:- Windows Server 2k3 SP2 +
- SQL Server 2005 (should always be installed on its own machine/virtual)
- .Net Framework 3.0
- SharePoint 2007 (MOSS 07, WSS 3.0)
- Visual Studio .Net 2005
- SharePoint Designer
OPTION 1 - DESKTOP VIRTUALIZATION
Hardware: Desktop PC (with min 2GB RAM, running at least XP Pro SP2)
Software: Virtual PC or Virtual Server
When to consider: Virtual PC and Virtual Server are 100% free. If cost is a consideration, this is the cheapest solution. If your developers are competent enough in server administration and knowledge of how to lock down a box, the "up and running" time should be quick.
Pros: - Cheap solution
- Quick setup if you have competent developers
- Allows developers to have a fully emulated environment at their disposal
- Developers do not affect other as much (IIS restarts, errors, and debugging happen in isolation)
Cons:- Developers are responsible for their own install ... ie, they can create a security risk with their virtual, they can screw it up to a point where they have to reinstall/reconfigure often ...
- If you have a lot of developer turnover, it would be better to set it up using server virtualization
- Desktop PCs need to be high performance machines
OPTION 2 - SERVER VIRTUALIZATION
Hardware: ESX, VMware Server
Software: VMware Server requires a base OS ... ESX does not
When to consider: If there is a strong separation between server administrators and developers in you organization, you have a lot of developer turnover, you can afford the biggest and best.
Note: In larger companies, I usually see the server setup/administering/maintenance by a server administrator ... not developers.
Pros: - Allows developers to have a fully emulated environment at their disposal
- Developers do not (always) have complete control so they can't screw up installation or get the server out of wack with production
- Developers do not affect other as much (IIS restarts, errors, and debugging happen in isolation)
Cons:- Cost for the hardware
- Setup time can be longer than other options
- Learning curve on the VMware tools
OPTION 3 - WORKING DIRECTLY ON THE SERVER (via remote desktop)
When to consider: If you have a small company or only 2 people that need to be on the server at one time developing and server administering, you cannot afford the time and software costs of using server virutalization, you do not want developers to have their own server.
- Note: With Win 2k3 you can only have 2 people working on the server at once (really 3 if you sit someone at the console). You would have to purchase Terminal Services licenses to have more folks login. After 2 people in the box, you will see performance fall of a cliff anyway ...
Pros: - Developers work directly on the server ... less doubt about their code working when deployed
- Developers do not have to install and maintain Windows 2k3, SQL Server on their PC
- PCs do not have to be supermachines
- Quick setup ... only one installation for development
Cons:
- Can put other developers out of commission with IIS restarts, errors, or debugging
- Performance of the development server will decrease with each developer
- Development tools are installed on server
- Must almost always have an idea what other developers are doing