Virtual Machines or Containers: Which Is Right for Your Business?
The trick is to find the right balance between simplicity, reliability, and scalability.
There is so much technology available to your business today, all of it ready to help you expand your offerings in ways you’d never dreamed were possible. You could migrate to the cloud, offer web and mobile applications, live on a new level with edge computing, or create a hybrid mix of just about everything.
Or you could go the virtual machine or container route. Both of those options are incredibly popular and will continue to be so for a very long time. The big question is, which of those are the best fit for your business? Do you go with virtual machines or containerized applications? You might think the choice is far too complex for you to even consider. It’s not. In fact, once you know the pros and cons of each type of technology, the choice becomes quite simple.
Let’s dive into each of these technologies and figure out which one is the right match for your business.
What are virtual machines?
Let’s first take a look at virtual machines. This type of technology has been around for quite some time, but over the last twenty years it’s really become crucial to many businesses. What are virtual machines? Let’s start off simple.
Imagine you have a computer. On your computer (in this case, called the host) is an operating system that allows you to run software and interact with the hardware (such as the mouse, the keyboard, and the network adapters). You can browse the web, create spreadsheets, get on social networks, play games, and work. One particular piece of software you can install on your computer allows you to also install other operating systems (called guests), which you can also use to run the same type of software you did on the host computer.
On the host, you can run as many guests as your hardware (i.e. RAM and internal storage) allow. So you could have a Windows host running various Linux guests, other Windows hosts, and even UNIX. Or you could have a Linux host, running any combination of guests.
What this allows you to do is run any number of guest operating systems on a single piece of hardware. As long as the hosting machine has the resources, the sky’s the limit.
How does that benefit your business? Let me make this analogy a bit more specific.
Say your company needs the following:
- Three web servers
- Two database servers
- An FTP server
- A file-sharing server
- A print server
- An on-premise cloud server
Add those up and, if you opted to host each service on its own machine, you’re looking at 9 servers. Do you have the budget for that? Do you have the space for that?
Now, imagine you could take all 9 of those services and run them from a single server. With virtual machines, you can do just that. Although that one server would have to be considerably more powerful than the individual servers, it’s still a cost-saving alternative.
But that’s not all.
With virtual machines you can easily roll back a server, should something happen. Imagine that you’ve gone with nearshore software outsourcing to build your website. The team has done a marvelous job with the site and it’s running like a champ. However, someone in your company pushes an update to the site and something goes wrong. You can see the site but something is clearly broken.
Because you’re running that site on a virtual machine, you can roll that VM back to a previous snapshot (that was taken prior to pushing the update) and everything is back to normal.
That’s a huge benefit of virtual machines — the ability to always have a working instance of a server. Within minutes (or even seconds) you could roll back to a working website and all is well. Pulling that off with a traditional server isn’t nearly as easy.
What are containers?
Now that I have you sold on virtual machines, let’s take a look at containers. What are containers? You may or may not know this, but when you install traditional software on traditional hardware that software depends on other software in order to run. Your operating system may contain those dependencies, or it may have to download them before the installation completes. To complicate matters even more, in some instances you might have to manually install the dependencies yourself.
With containerized applications, however, everything is included for those applications to run. Inside that container you’ll find:
- The main application
- All dependencies
- Configurations for the application
- Any extra code the container might require
The only thing you need to run that container is the necessary engine, such as Docker. As long as your operating system meets that dependency, the container can run.
So containers are very portable. They’re also usually very small applications, so they don’t take up a large amount of resources. Even better, containers can be as simple or as complex as you want.
But that’s not all.
You might be thinking that containers are single applications you deploy on a desktop or server and that’s it. Although that’s true, it’s only the beginning. Containers can also be deployed to a cluster, which is a group of servers that work together to allow containers to multiply in order to meet a growing demand (this is called “scaling”).
So you deploy a web application container to a cluster. At first, that container doesn’t get much use, so the cluster manager leaves it alone. At some point, however, demand begins to grow. Fortunately, the outsource development team you hired created the container such that it would automatically replicate if needed. So the cluster manager does its thing and the container replicates until it’s capable of meeting the demand.
Even better, all of this can be set up to be done automatically.
The caveat with containers is that, although they’re perfectly suited to serve a growing business, containers are considerably more complex than virtual machines. This is especially so when you’re working with a cluster, such as Kubernetes. The skills necessary to pull off a successful Kubernetes cluster are exponentially more demanding than those of virtual machines.
So, in the end, if your business wants simplicity and reliability, you go with virtual machines. If you want scalability, agility, and automation, and have the talent to meet the demands of this more challenging technology, you go with containers.