Over the past three years I have come to rely more and more on virtual machines. Virtual machines allow me to create snapshots of development and product environments that are easy to backup and share with others. What this means from a hardware point of view, is that I need more cores and more memory. It is not uncommon for me to be running anywhere from 2 to 8 virtual machines at any given time.
In each case the VM’s have to be configured to share the resources available on the host while leaving enough behind for the host OS. The work that I am doing at the moment requires target VM’s, Development VM’s and Product VM’s.
Some vendors were prepared for the Virtual Reality and have designed their platforms such that they can be easily expanded to accommodate more memory and cores. Surprisingly Apple is not one of these companies. I find this particularly difficult because my MacBook Pro is my main development machine.
I end up running VM’s on my company supplied windows laptop and a Dell T7500 server in our lab. That may be coming to an end though as companies try to wrestle virtual machines out of the hands of developers. It seems that IT departments in some bigger companies feel that they need to manage all virtual machines. It makes some sense in that IT departments generally have access to bigger systems that would be better suited to host VM’s.
I use VM’s to increase my productivity and moving control of those VM’s to people that are not at my beckoned call, will have the opposite effect with respect to productivity. I need to spin up and down VM’s at a moments notice and I need to be able to switch out OS’s, reconfigure networks and download and deploy VM’s from other vendors.
Some companies are restricting the virtual world further by restricting the environments where VM’s run. I and most of the rest of the development world uses the very popular VirtualBox environment from Oracle. I have recently been working with OpenStack and companies like Mirantis provide a quick start evaluation that contains four prepackaged VirtualBox VM’s. Their package automatically deploys the VM’s, configures the networks and spins up a cloud environment in minutes.
I have evaluated a number of environments like VMWare, VirtualBox and OpenStack and VirtualBox is perhaps the most up to date and functional for developers. Unfortunately VirtualBox seems to be under attack by IT departments who have invested heavily in VMWare. In the end it probably won’t matter as the world moves to Network Function Virtualization which is based on OpenStack.
For the time being however, the virtual reality is VirtualBox and developers need more cores and memory!