In this month’s installment of T-SQL Tuesday, Alex Yates has invited participants to write about something in their IT career that they have changed their mind about. I slept on this one and kicked a few ideas around before finally settling on a topic. Ultimately, I went with something that I suspect many other technology professionals have changed their minds about as well – Production VMs.
I would like you to write about something in your IT career that you have changed your mind about. What was your original opinion? Why did you believe that? What do you believe now? Why did you change your mind?Alex Yates
Early in my career, I attended a Microsoft TechEd conference where VMware was an exhibitor. They were nowhere near the giant that they are today. I remember thinking that VMware Workstation seemed like a cool tool for a software developer like myself to have on my laptop, but not giving it much thought beyond that. Surely, running guest operating systems inside of a primary host OS would never perform anywhere near as well as running the OS directly on the physical hardware. It might be a good way to reduce hardware costs for development environments, but there’s no way we would ever be running our production workloads on virtual machines, right?
Shifting Views on Virtualization
A few years passed and some different virtualization technologies emerged. VMware continued to dominate the market with not only their Workstation product, but also with their bare-metal hypervisor ESX (later renamed ESXi). Meanwhile, Microsoft also released their now-defunct Virtual Server and Virtual PC products before settling on Hyper-V as their virtualization standard. VirtualBox bounced around before finally landing with Oracle. Virtualization was becoming a pervasive technology, but there was still widespread reluctance to use it for production.
I had started experimenting with both the free version of ESXi and Microsoft Virtual Server for hosting non-production environments for an application stack that I was responsible for at the time. VMware was the clear winner at the time. As a result of those experiments, the company decided to invest in vSphere to both meet our needs for growth and provide a seamless hardware upgrade path for legacy applications. I was fortunate to get to attend several days of in-depth VMware training and learn more about the inner workings and best practices for virtualization. Hardware was racked, ESXi was installed, and our first vCenter server was brought online.
Going Live with Production VMs
I won’t lie and say there weren’t any minor hiccups along the way. Nothing too difficult to correct overall though. We did find VMs to be more stable and provide greater uptime than their physical counterparts. Legacy physical servers that were converted to VMs benefited from faster CPUs, better disk, and more available memory. Using vMotion, we could perform maintenance or move servers to newer, better hardware with essentially no downtime. If an individual VM needed its hardware scaled up, it could be done on the fly without any user interruption. Over-provisioning resulting in a net reduction in the amount of hardware occupying rack space in our data center. My opinion of VMs for production was officially changed, but there was still a general reluctance from management to go all-in on production virtualization for any “serious” workloads like SQL Server.
Changing the Minds of Others
It can be difficult when you have an “aha!” moment. Suddenly, you realize the flaws in your previous way of thinking and you want to jump in with both feet to course-correct now that you know better. Objections from others can cause frustration. You need to remember that not long ago, you saw things much like they do. Make a solid case to change their minds. Explain what you’ve learned and present the pros as well as the cons. If you’re right, people should agree with sound logic and facts. If you’re not, they might have valid counter arguments. It can be even harder to change your mind back to your previous way of thinking, even if there are sound reasons to do so.
People became more comfortable running production VMs over the next two or three years as the VMware footprint grew at my previous company. By the time we were ready to migrate from SQL Server 2008 R2 to 2012, it wasn’t even a question as to whether or not we should build the new servers as VMs. The proven track record and benchmark results made it a no-brainer. Software that was tied to a single piece of physical hardware was now seen as a liability.
The concept of production VMs was hard to swallow at first. Some of that was justified early on due to the relative immaturity of the technology. However, the technology continued to improve, and benchmark testing and successes of early adopters proved its capabilities. This is why it’s important to keep up to date on technology. Just because you didn’t have a use for something yesterday doesn’t mean it won’t work for you tomorrow. I see similarities today when people discuss containers. I’ve heard comments like “I just don’t see any use for running SQL Server in a container outside of dev“. That sounds suspiciously similar to how many of us thought about VMs early on. Instead of thinking of all the reasons not to do something, try to think of reasons why you should.
Feel free to reach out if your company needs help with production VMs for SQL Server.