The cloud has had a direct impact on all businesses. From creating new efficiencies in IT spend, to enabling new business models, most companies have seen their business change as a result of offloading some workloads on the cloud. Living though and participating in cloud technologies over the past 10 years -- along with watching the "as a Service" evolution from SaaS, PaaS to IaaS develop and mature -- has informed my perspective.
So how does Docker fit into the cloud evolution? I see Docker providing a more efficient cloud paradigm, and in some ways democratize the cloud so it is easier to adopt and do on your own without relying on service providers and "as a Service" models.
The Coming Cloud Revamp
The key difference with Docker is that it is nothing like IaaS, PaaS, or SaaS. It solves a different problem lower in the stack and serves to enrich the cloud models that use it; potentially, Docker could even eliminate some technologies.
As with life, nothing in technology is black and white there are trade-offs and unique cases where the benefits of a technology might be useful to one use case and less useful to others. However, the thing with Docker is that it is extremely flexible. It is not subject to the same constraints as a PaaS or even an IaaS (although some have described it as a mini-IaaS).
Docker enables you to build more flexible versions of a PaaS, and many IaaS solutions like OpenStack (and others soon) will allow you to launch light-weight containers instead of the heavy VMs that compromise a good chunk of our workflow.
The beauty of Docker is that it lets you move down the stack and do what you want. Yes, you can have freedom!
Is that more work? Yes, it can be.
Is that more to manage? Yes, it can be.
As with everything, doing things yourself vs. handing work off to a service provide such as a PaaS is a trade-off that enterprise IT leaders and developers need to understand. If you are happy with your PaaS provider today you probably will not care too much... although your PaaS provider probably already does.
On the other other hand, if you put a lot of work in moving to IaaS and using configuration management tools to create an architecture that is more flexible than a PaaS, you might be more interested in what Docker can do for you. For some folks it is a matter of scale.
It is great to start off on a PaaS that does everything for you, but eventually the overhead costs outweigh the benefits and that is when companies decide to roll their own infrastructure using a IaaS provider rather than just accepting the black box of a PaaS.
Considering all Docker can do, is multi-tenant SaaS really needed when I can deploy isolated containerized versions of an application for every tenant? Is it not better if I can scale per each tenant's need or service level? Do I want a noisy neighbor impacting other tenants?
The fundamental ability for Docker to allow for dependencies to be containerized and thus makes entire applications and the application stack they rely on portable is truly disruptive. However, we are far from having the tools or process ecosystem around it to make Docker and containerization mainstream now.
There is no doubt that Docker will get to the "slope of the enlightened" but there is still much work to be done in creating the management tools and processes within enterprises to truly leverage the technology. Also the container alone is only part of the disruption, the other piece of it is the architectures it enables.
Micro-service architectures are not that uncommon for large distributed systems, but for many enterprise developers it is and will be a new way to think about and architect solutions.
Once the tools and platforms exist many enterprises will also now have a way to ensure their developers are building on "approved" or "blessed" software stacks. This reduces the need for manual governance -- things like infrastructure governance reviews, enterprise architecture reviews etc. will not be needed once the CIO has a control point beyond the PMO, enterprise architecture and manual review meetings. Ensuring "approved" containers are used does not eliminate "bad code" by any means, but it does reduce the risk of change later in the lifecycle where it is most costly.
So What's a CIO to Do?
First and foremost it is paramount to recognize the high disruption potential on several fronts from IT governance processes and tools, to service provider spend, to licensing costs. There are many areas of IT spend that eventually will be touched by Docker and the evolving Docker ecosystem. There are no shortcuts to knowledge, as with most new technologies.
Keep an eye on Docker and Linux containers, have a small team do pilot projects, continue to gain and capture knowledge and figure out what trade-offs have to be met for you to make the jump and heavily invest in it.