PDA

Click to See Complete Forum and Search --> : how to Set up a standard devlopment enviorment


Crash893
Jan 23rd, 2009, 11:53 AM
Hey all

I have a new project at work that I wanted to get your opionions on.


we have been running into problems where something devloped on system a will work but can be edited on system b

my boss asked me to think something up where each devloper would have a clean slate each time he or she started a new project


and that the "slate" would be the same across the board


so naturally I think of setting up some sort of virtual machine but it raises a few qustions


Right now im trying to use vmware server 1.0.8


but i'm not sure how to have one image and have everyone start there vm using that image.


also


I don't have a lot of powerfull hardware so i would prefer that they use something like vmware player to run the vm on there machine (thus useing there software)

but it has also accured to me that i could set up a few machines and have them RDP in the machine remotely.



anyway if anyone has any thoughts on this i would love to hear how you have done something like this.

DeanMc
Jan 23rd, 2009, 12:25 PM
To be honest as long as the development directory is kept free of any unnecessary clutter I don't see the need for any sort of virtual machine. For instance I use both my laptop and my two PC's for development. Both would have music, pictures etc on them. Each of my stations have a disk or partition that looks Identical to the next. I ensure that this disk or partition is only used for development.

Lets be honest software, even LOB software is going to be ran on less than ideal machines so as long as the development machine is backed up and relatively clean any third party software or hardware is not needed.

dilettante
Jan 23rd, 2009, 04:49 PM
I think "clean" might mean the registry, System32, etc.

DeanMc
Jan 23rd, 2009, 06:06 PM
And again does it REALLY matter to the point where you would set up a VM?

Negative0
Jan 23rd, 2009, 09:40 PM
I think VmWare is the perfect solution for this. You create a readonly snapshot available on the network that gives users the basic environment. They can then create a linked snapshot to that root, which lets them have the changes stored on their machine. You can create any number of VMs from this root, which will not change. The root vm will have your basic software needed installed and nothing else.

We use VMWare Workstation in our environment, so I don't know which features are available in server versus workstation. I beleive workstation has more features when it comes to snapshotting.

Nightwalker83
Jan 24th, 2009, 06:32 PM
@ Crash 893

There is software (or feature built-in to Windows?) that allows the system to basically restore its original settings according to what thy were originally. It is possible say if your system has the programs/settings needed for development then someone changes the environment you can then get a program to revert the system back to the original program/settings before the user was one the computer. Something like System Restore although, I'm not sure if System Restore has an automatic reset setting!

dilettante
Jan 25th, 2009, 08:45 AM
System Restore just isn't practical for this.

VirtualPC supports "undo disks" that make it easy to roll a VM back when necessary.

NeedSomeAnswers
Jan 26th, 2009, 05:40 AM
I have a fairly new machine at work dual core with 3 gig of Ram and i run VM's for Build machines and the like using MS Virtual PC and even with a Good PC it slows it right down (i have set the VM to use 1 gig of ram so it's reasonably quick) .

Many of my Colleague's have inferior machines to mine and would refuse to use VM's as a Dev environment because it would be to slow !!!

Before you decided upon this route i would check that you Hardware is up to it particularly if you want to run the VM's Locally. Also if you run the VM's off the server then you will really need a fairly Beefy server so serve VM's to all your developers at a reasonable speed.

I still don't quite understand why this is necessary, as long as you have a good Source Control system in place to manage your code you should be fine.

This way all your code resides on a server (which is backed-up) and developers are just checking out the files that they need. If there is a problem with a file you can always retrieve an earlier version that didn't have the problems.

If your other consideration is that your Dev machines need specific software to edit / compile certain work that you do, create either a build document for a Dev machine so support should know how to build one, or if you have the software, get a basic image created for Development with all the standard thing a developer would need.

abhijit
Jan 26th, 2009, 08:34 AM
@crash: We do all our development on Citrix Terminal Servers. each of these servers is configured exactly the same as the production environment with the exception of development tools being available on Citrix.

So each developer is working in the same environment, regardless of whatever "crap" he has installed on his personal laptop.

:wave:

Crash893
Jan 27th, 2009, 09:15 AM
@crash: We do all our development on Citrix Terminal Servers. each of these servers is configured exactly the same as the production environment with the exception of development tools being available on Citrix.

So each developer is working in the same environment, regardless of whatever "crap" he has installed on his personal laptop.

:wave:


We have a citrix servers as well. I really think thats the way to go but it comes down to a capital expense for additonal servers to make a farm for development

One could argue that it woud save us some licence fees but that doesn't realy apply to anyhting but vs i guess

NeedSomeAnswers
Jan 27th, 2009, 10:28 AM
That is the thing, if you have budget for this then you will be ok, Citrix would work well but you do need them to run at a reasonable speed.

Can i ask, do you use some sort of Source Control where you work like VSS ??

dilettante
Jan 27th, 2009, 12:25 PM
You need to be sure you have good enough hardware for a decent VPC experience.

Ideally your VHD would be on a separate drive (not partition) from the host system drive. Barring that you want a reasonably fast drive with a large cache.

I'm pretty sure that Pentium Dual Core CPUs do not have hardware virtualization assistance extensions. The same is true for many Core 2 DUO processors. And of course different AMD processors vary in terms of hardware extensions for virtualization too. The numbers I've seen range from 25% to 40% speed boost with hardware assistance.

The Core 2 Quads and Core i7s all have it.

Something to watch for when you next go shopping for a machine.


A Citrix (Terminal Server) solution can be just a miserable thing to work with. It helps enormously if you are "close to" the server network-wise and have very lightly loaded networks in your shop though.

The big headache with this Citrix idea is it doesn't buy you rollback. It also buys you nothing in terms of test platforms. Whether using VB or .Net you have to consider registry or GAC pollution over time. Most of us need to be sure our software can install and run right on several OSs as well.

Otherwise (and even using Citrix) you can get yourself box into corners, producing Works on My Machine (http://www.codinghorror.com/blog/archives/000818.html) software.

abhijit
Jan 27th, 2009, 02:50 PM
A Citrix (Terminal Server) solution can be just a miserable thing to work with. It helps enormously if you are "close to" the server network-wise and have very lightly loaded networks in your shop though.


I agree with this.


The big headache with this Citrix idea is it doesn't buy you rollback. It also buys you nothing in terms of test platforms. Whether using VB or .Net you have to consider registry or GAC pollution over time. Most of us need to be sure our software can install and run right on several OSs as well.


That's not true. You could have a machine in the farm that is dedicated to testing. The guy who does windows administration should be able to overwrite the disk on that specific machine anytime.

dilettante
Jan 27th, 2009, 03:32 PM
But I find it pretty convenient to have VMs for Win7, 2008 Server, Vista, 2003 Server R2, XP, and Win2K for testing. I even have a Win95 OSR2 VM I test a few things on.

Afterward I can roll back any installs I've made, and any changes that testing made to disk. The next test run can be made against a clean system and I don't have to worry about which things have been left over from earlier testing. This is much easier and quicker than restoring a clean image onto a Citrix server that might be shared by 12 other people.

The nice thing is I can run a server in one VM and a client in another, test installs in both, and test them running together.

The main reason I'm considering moving to a 64-bit host OS is to handle more RAM, which makes running simultaneous VMs more practical.

Nightwalker83
Jan 28th, 2009, 04:22 AM
System Restore just isn't practical for this.

VirtualPC supports "undo disks" that make it easy to roll a VM back when necessary.

Yeah, I know System Restore probably wouldn't have worked! I couldn't remember the name of the software used. The software I am thinking of automatically resets the setting during system shutdown.

abhijit
Jan 28th, 2009, 12:44 PM
But I find it pretty convenient to have VMs for Win7, 2008 Server, Vista, 2003 Server R2, XP, and Win2K for testing. I even have a Win95 OSR2 VM I test a few things on.

Afterward I can roll back any installs I've made, and any changes that testing made to disk. The next test run can be made against a clean system and I don't have to worry about which things have been left over from earlier testing. This is much easier and quicker than restoring a clean image onto a Citrix server that might be shared by 12 other people.

The nice thing is I can run a server in one VM and a client in another, test installs in both, and test them running together.

The main reason I'm considering moving to a 64-bit host OS is to handle more RAM, which makes running simultaneous VMs more practical.

I haven't tried the VM approach to development. One day I might give it a shot.
:wave:

NeedSomeAnswers
Jan 29th, 2009, 03:53 AM
Yes we use VM's for Build machines & Testing were i work too, it works very well.

We use it for Build machines as we have more than 1 version of the software to support so instead of having the problem of having to try to install all the code bases on you local machine (which would be a nightmare) i have the latest code base locally (just check out the files from SourceSafe) and then have VM's for the others and i can just copy the changes across.

Obviously work great for testing to as you can setup standard VM's of all the different operating systems.

I still wouldn't want to do all my development through VM's or Citrix though as it slows you down.

I don't fully see the need for having a development environment that can be rolled back or restored, as people have already said it is best used for testing, where it is a definite advantage. And if you are testing your software properly you shouldn't ever come across the "works on my machine" scenario !