What company doesn’t want to make the best use of the technology already at its disposal? What DevOps manager wouldn’t like to produce more builds in less time than the team needs now?
It’s time for virtualization and automation to be considered best practice. For small- to medium-sized companies, it can mean the difference between staying ahead or losing market space to the competition. For huge corporations, it can mean diverting man-hours from manual processes and using them for innovation and creativity instead.
I’m talking about setting down the burden of individual desktops and pointing your developers to a virtual machine. I’m talking about automating job orders for a more streamlined, efficient development process.
Let’s dive into some real-world examples of what virtualization and automation looks like in action.
When Virtualization Could Boost Efficiency
A client approached me with a request to integrate over 30 Linux machines into a directory service. As I worked through the project, I discovered that all 30 machines were inconsistently configured. Each one had different packages installed, and each one had a powerful GPU.
Naturally, some updates caused issues. GPU-bound jobs can be long-running, and if the GPU driver gets updated mid-job, subsequent jobs will fail. The first thing I had to do was bring consistency to their setup, for both our sakes.
I decided against Puppet and Chef for automation, as both require you to install clients and are heavier in their operation. I ended up going with Ansible. It’s agentless, runs light, and everything gets done from one control machine.
However, figuring out how to automate the integration of all the machines took some time. The client was used to doing things manually, and there was some conflict about time being wasted in order to implement automation.
The difficulty with such a manual process is that it introduces inconsistencies. Even after the integration process is complete, the client would still have to go in and correct things that didn’t work, such as a machine not properly joining the domain, for example. Setting up a virtual machine host, with one server acting like 30 to 40 individual machines, would save the client significant money and developer time.
In this case, it’s apparent that inefficiency is introduced when each machine has its own environment. If we could virtualize everyone’s desktop and use all 30 machines at once with a common configuration, the savings to manhours and financial resources would be significant.
When Virtualization and Automation Could Mean Survival
It’s not an earth-shattering statement to say that the technology industry moves quickly. Companies do what they can to stay ahead of the market. Sometimes that means taking real risks and gritting teeth hard.
A client came to me with a request that showcases the harsh reality of staying competitive in tech: They needed to figure out how to remain in operation with the bare minimum of technology.
Rather than maintaining individual machines, I recommended they utilize one large server running VMware ESXi (for the virtualization piece), as well as commodity hardware or even BYOD to connect to the VM host. Regardless of what type of hardware is used in the front office, everything will connect to the VM host and be run from there.
At this point, if they can keep their technical needs under control until they have the opportunity to bring on more clientele, they’ll be fine.
The Risks and Fears of Adopting V&A
I get it, of course — even in an industry that celebrates early adoption, we still get attached to our favorites. What team doesn’t have its preferred stack? What manager doesn’t have their favorite language? What developer hasn’t rolled their eyes at the latest, shiniest toy?
If things are going more or less fine with a current process, why rock the boat with a virtual system? And if things are getting desperate, what are the reassurances that an automated process isn’t going to take away too much control?
Let’s be real. If you keep setting up your staff with individual machines, maybe even automating the setup here and there, you’ll be fine. For a while. The maintenance problems aren’t insurmountable, and your team knows how to handle them anyway.
But it’s always more expensive to maintain more machines than it is to maintain fewer. That’s money you could have put toward other areas of your business. And you’re not just sinking money into individual equipment; you’re also spending man-hours on maintenance. In other words, you’re not spending them on improving your product and being innovative.
Which introduces another expense you can’t afford: losing your most competent staff.
Innovative, creative people chase efficiency and challenge with a passion. If a company has grown stagnant or shows a reluctance to improve process, those people leave. And loss of talent inevitably leads to loss in the market.
How to Move Your Company Toward Virtualization and Automation
Now, I’m not going to lie. Virtualization and automation aren’t magic wands that evaporate every tech problem upon implementation. For example, hardware failure issues don’t completely go away with a virtualized solution… but it’s much cheaper to maintain.
That’s the kind of realistic expectation that can encourage your team (your company, your management) toward adoption. Glittering promises aren’t convincing in tech, so let’s take a look at, practically, what a well-rounded virtual system would look like.
Remember those 30 beefy desktops from earlier? Let’s shift that load to a VM host. Buy one or two Dell servers with a ton of RAM and a fair amount of storage, and get VMware licensing for those machines. Keep in mind that businesses will most likely need a different configuration than someone’s personal server at home in their closet — say, something that’s rack mountable.
Migrate all of your individual computers onto that VM host, then set up the individual machines as a high-performance cluster. Your developers would connect to the VM host, submit jobs to the cluster, and produce in a fraction of the time. A properly configured cluster could take day-long jobs and reduce them to hours or even minutes.
Obviously, you’ll incur costs in such a system. So where are they?
There’s a flat cost for the hardware; there’s a yearly subscription for the VMware license; and then there’s the price of the operating system licenses, such as Red Hat Linux Enterprise. But there are usually options for minimizing expense even in these areas, such as using CentOS, the open-source equivalent to RHEL.
Keep in mind that you’ll be streamlining your hardware requirements as well as your development process. It might take half an hour to walk a development team through their new process (for example, instead of submitting jobs locally, direct them to this cluster at this address). There might be a few questions initially, but much of their current process would most likely remain the same.
So how do you bring other decision-makers onboard? Talk to management. Talk to the tech leads. Let them know you want to get more done. Let them know you want your builds to complete faster and that virtualization is a competitive and efficient solution.
If you are having trouble seeing this White Paper document? Download the latest version of Adobe Acrobat Reader