Recommendations for running my development tools in a virtual machine

I start to get very tired and configure all my Dev tools every time I need to switch to a new machine, or get a laptop, or spoil my registry with constant installation and removal.

So, a new plan. I heard people virtualize their development environment, and that sounds like a great idea. The only problem is that I have little experience with virtual machines, so I do what I always do when I just don’t know, I ask stackoverflow.

Are you running a development environment in a virtual machine? What should I pay attention to? What are the unobvious benefits?

I have a free version of VMWare server installed on a Dell Optiplex 760 with XP, which is in my company’s Active Directory.

In it, I created a 25-gigabyte VM called Dev Tools with XP installed, this is not in any domain. Here come Visual Studio, TortoiseSVN, Git, Ruby, Toad, etc. I will also create a virtual disk for storing code files.

A few more questions:

  • Do I have to browse the web daily on the host machine or do I need to deploy another virtual machine? What is the rule that should be used when deciding whether to install a non-dev application (such as GIMP) on a host or a new virtual machine?
  • What about my development database? Should he get his own virtual machine?
  • What is the best location for physical hard drives? Should I avoid placing the host and client virtual machines on the same one? I plan on getting an SSD - how can I optimize the speed this will offer?
  • Developing .NET without administrator privileges is a pain in the ass, but should I worry about working as an administrator on my host machine?
  • Any good backup solutions for my 25 gig dev tools machine? How often do you back up? I don’t want to restore it in a year, and I have to spend days updating every single application there.
+4
source share
4 answers

I found it very preferable to use the VM OS for development instead of the base OS. The ability to easily back up your entire developer’s environment when it works great and restore it in 5 minutes if something terrible happens is a relief.

Our team used a reference virtual machine with all the developer tools installed. New developers will receive a copy of the reference virtual machine and may use it as they wish. We used the only virtual machine in which there were an IDE, client, application server and database server, because it just made everything a lot easier. I do not think that their use in different virtual machines would bring any advantages.

To browse the web, I found that it really doesn’t matter if I did it on a virtual machine or a base OS - most of the time I would just use a virtual machine. As for user applications, they were usually installed on the base OS. Several times, team members (including me) encountered a problem or made a mistake that caused some of the development environment of their developers to be corrupted. Instead of spending hours fixing the problem, we just take the reference virtual machine again, update the code, and start a new one. Therefore, it is better not to become attached to the virtual machine - installing custom applications on the base OS and saving important things either on the base or on the network drive allows this quick replacement.

+3
source

A virtual machine is just ... a machine. Browse all you want. I am browsing my main machine, but I also use Foxmarks to maintain synchronization between the machines, so when I scan it does not really matter.

If you have a disk, CPU and RAM on your host, I would suggest setting up the database on a separate window. This allows you to easily move it to another location (even a physical node) later if you need to. It also makes you work in a (likely) more realistic situation where the db machine is being removed from the device.

If you can swing it, then the presence of images on the hard disk of the virtual machine (or, nevertheless, raw HD access) on different physical disks and controllers, as a rule, will give you better performance. I would not worry too much about this for the common dashboard.

In general, working as an administrator in your environment dev is a good way to accidentally get access dependency issues. The principle of least privilege applies.

+2
source

I like to use virtual machines for development servers such as databases, apache, etc. The actual development work is on my main machine, where I have my code repository and emacs. Since I prefer linux, backups of my code and workspace configurations are done either in git or with rsync, and allow me to quickly set up the development workspace anywhere. I like to think that I back up my virtual images about once a month and they are mirrored on two machines.

+2
source

I have a virtual machine for every kind of web development. One for .NET material, one for PHP material, and one for demonstrating new technologies or tools. Things that are not related to dev go to my regular desktop (Word, games, browsing for fun, CD burning tools, etc.)

I can move these virtual machines on my network and from any machine, as well as easily smooth out a new machine without worrying about re-configuring the entire development environment. This allows me to easily mix work and pleasure. As soon as I start the VM virtual machine, I work in run mode, so I am full screen and working. I can’t play games or access my twitter from a bookmark, so I feel more productive.

The big problem that I would count on is to quickly launch your virtual machines. Offers like second disk, SSD, client OS optimization, and other things (which I don’t do very well) make the printing experience much faster. If you cannot enter your IDE as fast as your regular desktop, you probably won't end up using virtual machines.

+1
source

All Articles