If there was a defining keyword for the world of Information Technology over the past 10 years it would be “Virtualization”. I think everyone has heard that they should be virtualizing their environments. But, just when you think you have the fastest car on the block, the neighbor pulls up with the newest, fastest model. Containers are proving to be a very viable alternative and in some cases preferred to a virtualized server.
What is a virtual machine:
First a little bit of background is necessary to catch everyone up to speed. A virtual machine is a method in which a modern server can run multiple operating systems on the same piece of physical hardware. There are several ways in which this is accomplished, but the underlying idea is the same. Utilize hardware power more efficiently by adding additional more than one operating system. The are numerous benefits to running a server in a virtualized environment. Here are a few of the key points:
– Redundancy: The operating system is detached from the hardware. This allows us a certain amount of portability. i.e., If one piece of hardware fails it is relatively easy to move that operating system to another piece of hardware.
-Scalable: Along with the portability, virtualized servers generally can be scaled a little easier. Meaning, because the server software is not tied to any hardware, its easier to add additional servers to handle a larger workload.
– Cost Savings: This is pretty straight forward. You don’t have to necessarily buy multiple servers. In the pre-virtualization era you would have had to buy multiple pieces of hardware to satisfy different computing requirements. For example if you had a email server and a crm server, you would most likely need to have two servers and thus two pieces of hardware.
Now that we have a basic understanding of what virtualization is and why its beneficial lets dive into Containers.
What is a container and why is it different:
In short containers further virtualize the underlying hardware. Like I mentioned earlier, in a typical virtualized environment you would have one piece of hardware with several computer running on it and sharing resources. Each one of the virtualized computers will have its own operating systems and resource usage along with it. In a containerized environment you would only have one operating system running. But, from within that you would have containers. The containers each have the necessary software to run the application. But, now instead of having the overhead of all the operating systems, you just have the resources being used by one underlying system. The rest of the computing power is now available to the application itself. It’s important to know that containers do not have access to other containers. So from a security standpoint, containers are no more or less secure than a standard virtual server.
Why use a container over a virtual machine:
While virtualized servers do somethings much better than traditional hardware, there still is room for improvement. Containers bring a different approach to virtualization that was not previously
– Ease: With a container, there is only one operating system to maintain versus however many virtualized server operating systems you may have. Also, applications will behave the exact same across all containers. Meaning, if you have your local computer running a container, and it runs fine without any errors, you can easily move that software up to a container in the cloud and it will run.
– Speed of scalability: Once an application is running in a container, you can duplicate it extremely easily. Since there is no operating system, you can simply duplicate only the software that is needed in the container. Taking the time to scale from several minutes to several seconds.
– Efficiency: Without the additional burden of running multiple operating systems, each piece of hardware now has extra resources. These resources can be used to offer more power to the application(s) that are running within the containers.
Drawbacks to Containers:
While containers have some amazing and simple advantages to them over virtualized servers, there is at least one drawback that I see at this point.
– They can’t handle any windows services or servers. This is a Linux only service. While Linux is gaining traction and credibility in corporate environments, it still plays a second fiddle to windows.
Containers show that there still is plenty of innovation in the cloud market. While containers are not necessarily ground breaking, it’s important to partner with a team that knows the cloud landscape. Each week there are changes and updates to cloud technology. Staying on top of how those changes relate to your own needs is vital.
Where to Read More:
One of the front runners in containers is Docker. You can read more about them here:
Docker vs. Vagrant
Google Cloud Previews Docker-based Virtual Machines
How Docker used open-source ideals and excellent timing to become a cloud darling