By Bryan S. Hamilton
Cloud Solution Architect
Ever heard the term “dependency hell”? This is what happens when a developer builds an app that runs perfectly on his development platform. But when he moves it to a test system… it suddenly doesn’t work! Thus a lot of finger pointing ensues between the system admin and the developer. So they go back to the drawing board and figure out that the app never really was broken in the first place. It was just depending on something that was provided in the development system that is not present in the test system.
But all of this would be avoided if they were using containers. So why do developers think that containers are the next big thing? They are excited about its agility and that it does not need to replicate a complete operating system.
This hot, relatively new technology shares a similar vision with hardware virtualization: consolidating multiple secured environments onto one host. But what makes containers different is that they use the same operating system to run different applications side-by-side in a secured contained environment – basically convincing the applications that they have a dedicated operating system much the same as virtualization convinces the virtual machine that it has dedicated hardware. This addresses moving virtualization down to the operating system level versus the hardware level like Microsoft Hyper-V.
Containers work on the same basic principle of virtualization, but they act very differently. Because each container only holds the application, libraries, frameworks, etc. that they depend on, you can load a large amount of these components onto a single host. This works well, because all the containers can talk directly to the host operating system – they do not have to replicate a complete operating system. As a result, this keeps the containers very small and makes them more agile. And, best of all, overhead costs are reduced.
Another key differentiator is that containers are very portable. Once the container has been created, it can be deployed to different servers very easily. From a software lifecycle perspective, this is great as containers can be copied to create development, test, integration and live environments very quickly, and they do not require the usual configuration. From a software- and security-testing perspective, this has a large advantage, because it ensures that the underlying operating system is not causing a difference in the test results.
Benefits of Containers
- Containers do not need to replicate complete operating systems, making them smaller and more agile.
- Developers will know that their software will run, no matter where it is deployed, because the container has everything it needs to ensure proper operation.
- Containers are easily packaged, lightweight and designed to run anywhere.
- Multiple servers can be joined into one pool of compute and memory to facilitate the containers, allowing you to create a highly available, fault tolerant, dynamic solution.
Containers Enable Microservices
Instead of having one large monolithic application, containers enable microservices to break down applications into multiple small parts that can talk to each other. This means different teams can more easily work on different parts of an application; and, as long as they make no major changes to how those applications interact, they can work independently of each other. That makes developing software faster and testing it for possible errors easier.
Due to the smaller footprint of containers, microservices and the ability to spread your containers across multiple hosts, it is often beneficial to deploy a management or orchestration tool. This software’s job is to make sure that the containers are running properly and allow you to scale when the demand increases or decreases. It also ensures that, in the event of a host failure, the containers can easily move to another available host and provide assurance they will run as smoothly as they did on the first. All of these containers are dependent upon a virtual network that is critical to the successful deployment of the containers. Arrow is your expert advisor here and can guide you in setting up your container management systems.
Looking Ahead With Containers
Containers can run a multitude of applications; but because they are so drastically different from the traditional virtual machines, a lot of legacy applications being used may not translate to this new model.
And there are still some applications that simply do not work well, if at all, on a virtual machine and even more that work fine but the software supplier does not support the application on a virtual machine. So it is clear, at least for the near term, we will continue to see the growth of baremetal, virtual machines and containers in the marketplace, and that growth cannot be ignored.
In summary, organizations can likely benefit from introducing containers to their infrastructure. However, it is most common to see a mix of baremetal, virtual machines and containers. Both virtual machines and containers have strengths and weaknesses, but together they can complement each other rather than compete.
Call Arrow Today!
If you want to start moving away from virtualization dependency hell, call your Arrow representative at ECSCloudServices@arrow.com or 1.877.558.6677. We look forward to helping you and your customers move into the new world of agile and affordable cloud containers.