Are containers killing virtualization?
Containers, Docker, Kubernetes, CoreOS, these names sound familiar, right? You've probably heard them during IT conferences or reading articles, and you want to know why the IT market is so fascinated about these new cloud computing technologies? Keep reading, you’re in the right place!
I am sure you are aware of all the benefits that containerization brings to the table. If you need a quick reminder about the containers specific features, I suggest that you read our article “How to easily understand containers”.
For the last three years, companies have been all about containers and the trend is rising so much that virtualization is on the hot seat. Those two cloud technologies are competing, and after the golden age of virtualization, containers are taking over the market and putting virtual machines in the shade. Does that predict the end of our good old VMs? Let’s see…
Bigger is NOT better.
Companies and developers love containers. They solve many problems that IT departments have been facing with virtual machines and even add more advantages. First, they are a lot lighter than virtual machines.
Unlike VMs, containers don’t virtualize an entire computer infrastructure. They don’t simulate a CPU, nor a hard-drive, and they don’t need to hold an operating system to run. Docker containers only store the different bits between the host OS Kernel and the container OS. In addition, the container engine provides virtual networks and external services. It’s that simple! And because containers are easily scalable and replicable, unlike VMs, companies don’t need to pay for more resources that they don’t actually use, which result in reduced costs..
For companies, time is money.
Containers use their server's operating system to launch applications unlike virtual machines that use their own OS. To make this easy to understand, picture a VM as a computer, and a container as a folder. To launch your application, you first need to start your computer (virtual machine), which can take a few minutes, and then click on your app to run it.
With a container, your computer is already on (because your server is already running). You just need to open your application folder (your container), which takes a second, and then click on your app.
So, using containers allows you to skip the longest step, which is having to launch your computer, and it makes quite a difference. There is no need to wait several minutes to start working on your application anymore.
No more struggle with environment compatibility.
Being enterely independent of their computing environment makes containers easier to manage and gives more agility to your environment. Since they hold altogether one application (or one micro-service if you have not adopted a monolithic environment) and all it's dependencies, libraries and binaries, containers make it possible to launch applications no matter the environment they are run on. This means that developers don’t need to create various versions of a single app to go through the different stages of development, testing and deployment. It’s all there, stored in one container and be ready to be run regardless of the environment. This also makes containers easy to migrate from one server to another, unlike virtual machines.
What about agility and cost-efficiency?
When it comes to agility and stability, virtual machines are once again not the best choice. Without a good orchestration solution, there is no way to automate the VMs expansion or duplication if the number of queries requires it, which usually ends up in your VM crashing and your whole application being down. To make sure this doesn’t happen, companies spend a lot of money purchasing more resources than needed to face peaks in demand, which still results in additional IT expenses that could serve for a better use.
Conversely, containers are by nature more agile than VMs. Coupled with a container platform, they are automated to expand and duplicate themselves as needed, so they can always face an increase of queries or a server crashing. And because of the light weight of containers, this takes only a few seconds, when an orchestration solution would usually take more than 10 minutes to restart virtual machines. You might say that a 10-minute wait isn’t that long, but think about how much money Uber would lose if its application was down for 10 minutes in the entire world…
And the winner is…
As you will have understood, containers represent an important turning point in cloud technologies. With all those benefits, they are lighter, faster, more agile, more cost efficient, and as secured as virtual machines. You might wonder “Why are companies still using virtual machines then?”, and that’s a fair question.
To be honest, we can say that the virtual machine usage is moving to another purpose. Containers still need a host OS, and so far, it’s easier to manage a server with a virtualized OS than a full bare-metal system. Basically, VMs are now becoming a simple infrastructure layer, and containers are going on top, to manage the companies’ workloads.
Even though containers are very trendy, it takes time and effort for companies to change their infrastructure and move their applications from virtual machines to containers.
The last and maybe the most important reason is that companies struggle finding trained developers and operators to help them switch from virtualization to containerization, even though they are putting a lot of money on the table to find those rare skills.
So, virtual machines might not be dead yet, but for sure a new star is born: containers… and they’re progressing fast!