views:

824

answers:

6

Heres the problem. I use around three different machines for development. My partner is using two. We have to go through the same freaking set up procedure on all five machines to get to work.

Working with a php project here, so: Install and configure, PDT, a php debugger, and some version of XAMPP. Then possible install an svn client, and any other tools.

Again, to each of the five machines.

What if, instead, we did all of this once, in a virtual machine that is set up with the same stack, same versions, as the production server. Then each of us could grab a copy of the VM image, run that image on each of the five machines and do all of our development in that VM. Put Eclipse, apache, mysql, the works, all in that vm.

The only negative of this approach, and please correct me on the only part, is performance. Is it really that big of an issue though? The slowest machine out of the five is a Samsung NC10 powered by an Intel Atom 1.6 ghz processor.

Do you think this is possible and practically usable? Or am I crazy?

+6  A: 

I use a VM for development (running on my laptop) and have never had performance problems. Another approach that you could take would be to image the drive in the state that you want. Use Acronis or Ghost to re-image each machine when you need to. Only takes about 5-10 minutes to restore an image on any modern PC.

Ed Swangren
Though the size of VM image is huge (around 10 GB), but it will get you rid off all other issues. Now a days when external disks are ranging from 500 GB to 1 TB, you can easily share this VM image among your peers as well.
Pradeep
...Very true, that's how we operate most of the time.
Ed Swangren
I'm glad people are using this approach and I'm not just making it up. I'll give it a shot.
Nick
+1  A: 

It can certainly be done. What turns me off is the size of the VM image, which would normally be several GBs. Having it on a network share means it can take longer to transfer then your current setup process takes. I guess an external hard drive would be the easiest way to move it around.

Performance wouldn't be an issue with any web development.

I have to ask why your current machines need to be "re-imaged" each time you sit down for work?

Cogsy
Not each time, just at the start of this project. Still a pain.
Nick
+2  A: 

I use a VM for all my "work" as it keeps it away from my "play". This set up allows me to use the office VPN without exposing my whole machine to the office environment (which I trust about as much as the internets. ;-) Also I don't have to worry about messing up my development environment by trying games or other software. My work VM is currently running inside VirtualBox but I have used VMWare in the past. I have only noticed performance issues when using graphic intensive programs like Webex or the Terminal Server Client.

Chris Nava
+1, same here, the VM keeps the work out of the play, plus then I can use my Apple laptop on the windows network, through VMWare.
Karl
+1  A: 

If you're using Windows you'll probably want to use SYSPREP on the master image so that the 'mini-setup' runs when you boot up the virtual machines for the first time.

Otherwise in terms of Windows' point of view, the machines have the exact same SID, hostname and other things - running multiple machines with the same SID on the same network can cause tons of headaches. Even more if you want them to communicate with each other.

sascha
+1  A: 

I've run websphere for zSeries on a vmware virtual machine with no problem and websphere is more resource intensive then any PHP stack. I find that having a multi core machine or at least hyper threading makes it run a lot faster.

Jared
+1  A: 

With vmware, disk operations are slower. For PHP development I doubt it would be a problem, but you'd definitely notice it if you are compiling a large C++ project. There is also Sun's VirtualBox which is free, and the latest version is rather nice (but I haven't looked at how slow disk operations are yet).