I’m sure all of you have heard of docker and of containers. And in the enterprise world, the pressure to containerize is increasing. There are several compelling reasons, and in this article I will touch on how and why containers are important to enterprises.
Why use containers?
Portability: You can build a container image once and you can deploy it to your on-prem, as well as into different clouds — if you look at, say AWS, Azure, Google, they all provide ways to run containers in a much more efficient and cost-effective way. One of the key projects that is in the open source world today, which is Kubernetes, is actually what we refer to as a Container Orchestrater. And that is kind of revolutionizing the way workloads are deployed and managed. Portability is one of the important benefits that you get when you use containers.
Scalability: When you use containers, these container images are designed to be really really fast to start up. Which means, lets say, something happens to a container which is running or if you were to find that you are hit with a large spike in traffic and you want to scale up, containers can start up pretty quickly. This enables you to cluster large application pools and load balance them, and enable them to automatically scale up and scale down for better cost efficiency and resilience.
Time to Market: Containers are ready-to-go images so there are container images for most workloads that are out there, and it is easy to layer your custom component on top of an existing docker image. And get it out there and deploy it as soon as you can. Also, the current trend of scalable application is to use what we call the microservices architecture. Containers are well-suited for it. Believe it or not, even legacy applications can be fitted to a container, as long as you have the right tools. So containers to me, are modernizations of an accelerator, which means no matter if you have legacy applications or if you have modern microservice-based applications, both will fit in a container as long as you know what you’re doing.
Security: Containers enable you to secure your workloads much better than a VM could because you can lock it down and improve your access control. As a result, your attackable surface will be reduced. Another important factor for security, is that containers are immutable. Which means that you can get rid of them and then a new instance comes up or a new deployment happens. Containers are recreated from scratch based on the original image which is also immutable. So that gives you the ability to reset your system to a known, secure state, as frequently as you want. One of the basic advantages there is that, let’s say you are suspecting an attack and you want to reset your deployed instances and applications you can do that very effectively using a container image and a container-based deployment model.
Cost of Ownership: Containers tend to be more efficient when it runs, so it is cheaper than running a VM. I have seen cases where containers run almost 10-100x more workloads or containers can run 10-100x more containers in a given resource pool. So in a given static resource pool that is available to you, you can run 10-100x more workloads and this enables you to be more efficient, have a lower cost of ownership, and hence it is one of the key advantages.