Year end predictions are a tradition for CTOs and I had so many predictions and thoughts about trends for 2015 that I decided to spread them out across two separate blog posts; my broad industry observations are guest posted on VMblog and my specific storage predictions are posted on the Infinio blog. I actually had one more prediction that my colleague @storagediva thought merited its own post, so I decided to start 2015 by completing my set of predictions here on my own blog.
My final prediction is about Docker, which seems to be ubiqitous and given its popularity as a conference topic buzzword and in the tech press, we must be near the peak of its hype-cycle! I actually did a good bit of work on Docker/VMware synergies towards the end of my tenure at VMware; conceiving the idea that turned into Project Fargo discussed at VMworld 2014.
Docker has several dimensions to it and let’s begin with the container aspect. Docker is a Linux container-based technology that abstracts or encapsulates the notion of an application process and address space from the OS it is running on. Containers imply a shared OS kernel and containers of various flavors have been around for quite awhile. Solaris Containers, Virtuozzo and its open source counterpart OpenVZ are all well known and representative examples that come to mind. Despite their presence in the market place, they have not become as prevalent as Virtual Machines. Containers differ from virtual machines in that VMs are typically heavier-weight and consume more resources, however they provide greater isolation because they abstract the more crisply defined hardware layer and encapsulate the entire OS. Illustrative of these architectural differences, Virtual Machines are sometimes referred to as hardware virtualization and containers are sometimes referred to as operating system virtualization. In practice, containers tend to work best with homogenous workloads, where the potential for component version conflicts are minimized. The container vs. VM debate has been ongoing for a number of years, but that particular debate is not all that interesting (at least to me). Both technologies have their distinct use cases.
In addition to the container abstraction, Docker provides configuration, customization and parameterization capabilities that enable each container instance to configure its own identity including virtualized networking. There is also the developer-oriented Docker hub repository that is used for distribution. A Docker configured application can be efficiently deployed along with any of its required dependencies from the Docker hub into cloud-based containers.
However, the real power and excitement driving the Docker buzz is not any of these enabling technologies. Docker is compelling because it enables largely frictionless deployment of apps to the cloud for developers. This is especially compelling for scale-out applications where many instances need to be provisioned and deployed. Because you can develop and update Docker packaged applications on your laptop, efficiently upload the modified application components to a cloud repository, and then utilize automation techniques to provision the updated application to multiple cloud instances from that hub in an efficient manner, Docker becomes a crucial developer tool for the DevOps/cloud era.
I predict the dialogue to shift in 2015 from the containers vs. VMs debate (there’s a role for each and they can be highly synergistic) to the frictionless DevOps deployment angle, wherein lies the true innovation. Docker will be a game changer because it saves developers time and complexity in building and deploying cloud-based, scale-out applications, not because of some new pendulum swing between VMs and containers.