Chances are, your company uses virtual machines on premises and in the cloud. Meanwhile, the developers are likely considering containers, if they haven't adopted them already, to simplify development and deployment, improve application scalability and increase application delivery speed.
Architecturally speaking, VMs and containers have enough architectural similarities that some question the long-term survival of VMs, especially since VMs are already a couple of decades old. There are also serverless cloud options available now that dynamically manage the allocation of machine resources so humans don't have to do it.
"If you embrace [a serverless] service, then you truly don't have to worry about the virtual machines or the IaaS instances under the hood. You just turn your containers over to the service and they take care of all the provisioning underneath to run those containers," said Tony Iams, research director at Gartner. "We're far away from being able to do that on-premises, but if you're doing this in the cloud, you no longer worry about [virtual machine] instances in the cloud."
Most enterprises have been using VMs for quite some time and that will continue to be true for the foreseeable future.
"Most of the container infrastructure deployments are going to be on virtual machines," said Iams. "If you look at where container runtimes are deployed as well as container orchestration systems such as Kubernetes, more often than not, it's on virtual infrastructure and there's a very important reason for that. In most cases, especially in today's enterprise environments, the basic provisioning processes for infrastructure are going to be based on virtual machines, so even if you wanted to switch to provisioning on bare metal, it's quite possible that you wouldn't have any processes in place to do that."
As organizations graduate to more sophisticated container deployments using orchestration platforms like Kubernetes, they can face significant provisioning challenges.
"Kubernetes has to be upgraded pretty frequently given the rapid pace of development, so you need to have solid provisioning processes in place. Most likely that's going to be based on virtual machines," said Iams. "Our guidance is not to make any changes there, to continue using the tools and processes you have in place, which is likely based on virtual machines, and focus on achieving the benefits of Kubernetes that are achieved higher up in the stack."
Mitch Pirtle, principal at Space Monkey Labs and the creator of Joomla, an open source content management system, agrees that VMs will continue to provide value, although what's considered a VM will likely change over time.
"The main benefit of the VM is that you can deploy that entire stack fully configured and ready-to-roll. My biggest issue with VMs is that if you want to deploy a stack that has unique scaling needs, you’re going to be in a world of hurt," said Pirtle. "Containers, on the other hand, have a huge upside, especially in the enterprise space. You can scale different parts of your platform as needed, independent of each other."
Container interest is fueled by developers
Developers are under constant pressure to deliver higher quality software at lower costs in ever-faster time frames. Containers enable applications to run in different environments, and even across environments, without a lot of extra work. That way, developers can write an application once and make minor modifications to it rather than writing the same application time and again. In addition, containers help facilitate DevOps efforts.
"One of the most important benefits containers provide is that once you have a containerized application, it runs in exactly the same environment at every stage of the lifecycle, from initial development through testing and deployment, so you get mobility of a workload at every stage of its lifecycle," said Iams. "In the past, you would develop an application and turn it over to production. Any environment they would be running it in would run into problems, so they'd kick it back to developers and you'd have to try to recreate the environment that it was running in. A lot of those issues go away once you containerize a workload."
Mike Nims, Director Advisory, Workday at KPMG said containers have greatly simplified his job because they abstract so much complexity.
"When I was a DBA, everybody knew I was on the Homer Simpson server, my instance lived on Homer Simpson, and my instance was Bart. In a container situation, I don't even know where I sit," said Nims. "Taking that technical view away is extremely beneficial [because] it also allows the developer to focus more on the code, integration or UI they're working on as opposed to the hardware or the server."
Containers aren't a panacea
The use case tends to define whether VMs need to be used in conjunction with containers, or not. Businesses operating in highly regulated environments and others which place a high premium on security want multitenancy capabilities so virtualized workloads can run in isolation.
"With containers, you don't quite get the same level of isolation," said Iams. "However, you do get some isolation that may be sufficient for internal use cases."
One concern is whether workloads running across containers are operating in the same trust domain. If not, extra steps must be taken to ensure isolation.
"That's what's underlying some of these new [sandboxed container runtime] initiatives you hear about, such as gVisor. [D]evelopers are trying to come up with new virtualization mechanisms that give you the same kind of isolation you would have between virtual machines and the efficiency and low resource consumption of containers," said Iams. "That's early-stage, for the time being. If you want to have that kind of isolation, you need virtual machines."
However, containers are helping to eliminate application-level friction for end users and IT.
"My developers and I don't ever think about this. A cloud container is really extending that user experience into an area of IT that for the longest time has been controlled by technical gearheads," said KPMG's Nims. "My wife, who doesn't work in IT, could go to Amazon Cloud and set up a MySQL environment to do database work if she wanted to. That's a container."
Meanwhile, he thinks enterprise architects and DBAs should consider how cloud containers can be used to manage applications at scale.
"As a DBA, one [my] biggest pain points was the ancillary applications I was responsible for managing that weren't necessarily tied to my database. When I did it, it was five to one or 10 to one databases per DBA. Then, each of these customers would have another 20 to 30 applications. I couldn't manage that so we would hire SAs," said Nims. "If I have a MySQL environment in a cloud container, I can patch it across all of my instances. Back in the day, I would have to individually patch each instance. That's huge in terms of scalability and management because now you can have a control room managing hundreds of thousands of applications, potentially, with a couple of guys."
Developers and operations have to work together
Operations teams have spent the last two decades configuring and provisioning VMs. Now, they need to get familiar with containers and container orchestration platforms, if they're not already, given the popularity of containers among developers.
"It will take some time before both sides of this initiative come to terms and arrive at consistent operational processes," said Iams. "If you're doing this on-premises, it doesn't get set up in a vacuum. Operations still has to configure storage and networking, and there may be some authentication and security-type mechanisms that have to be configured to make sure that this great new containerized infrastructure works well. Ops can't do that in isolation."
Of course, getting container infrastructure to work well isn't an event, it’s a process, especially given the furious pace of container-related innovation.
"Getting the pieces to work well together is a challenge," said Iams. "There are upgrades that are going to happen at multiple levels of the stack that are going to require processes to be in place that reflect the priorities of both groups."
VMs and containers will continue to coexist for some time, mainly because businesses require the benefits of both. Even if containers could replace VMs for every conceivable use case, a mainstream shift wouldn't happen overnight because today's businesses are heavily dependent on and extremely familiar with VMs.
However, as container adoption continues to accelerate and new innovations emerge, the landscape will change, again.