Docker is hot.
It was the second “best overall open source cloud project,” according to a survey by the Linux Foundation and The New Stack last July. And Google Trends shows Docker accelerating in buzz ahead of OpenStack and virtualization, out of virtually nowhere in 2013.
But why is Docker hot? And with whom? Cloud software providers have led the Docker craze because software as a service (SaaS) has changed the software delivery model. There’s no longer any reason to group or delay new releases that were previously required when distributing physical software. The speed of delivering innovation to your users is really limited mostly by your own development operations. Thus devops teams were born to streamline and automate building, testing, and deploying, shrinking time between releases from literally months or years down to days, or even minutes — also known as continuous delivery.
With well optimized SaaS operations, it’s now possible to discover a bug, fix it, and release the fix into production all in the same day. This has given rise to scripting technologies such as Chef and Puppet to automate these processes, but the required scripts get complicated and difficult to maintain.
Containerization has existed for years, but along comes Docker, which makes it “easier” (but not easy) to leverage containers to simplify continuous delivery. Instead of creating complex scripts endeavoring to build identical environments for development, test, and production, containers just move the actual environment through the release process, greatly reducing the reliance on scripting while greatly reducing error. All of this improves the efficiency of continuous delivery.
Before we consider enterprises, consider the value of Docker to SaaS vendors:
- Continuous delivery: Cloud software development has evolved beyond just agile to “continuous.” New software updates can be delivered more quickly and with less error than ever before.
- New virtualization: Early stage cloud software companies may not yet have a heavy investment in virtualization, and they can look afresh at new approaches. Docker offers a potential alternative to virtualization that is lighter, cheaper, and potentially better optimized for the cloud software workload.
Value to the enterprise
Enterprises that build customer-facing apps, are in many ways, very similar to cloud software sellers, and naturally, gain from the same benefits. But how about that larger number of internal, non-customer-facing apps? Do enterprises have a burning need to update applications for their employees or partners within minutes? Probably not. Days or weeks may actually be sufficient. So do those enterprise apps benefit from continuous delivery? Absolutely. Speed is just one benefit. Reducing errors and improving efficiency in the delivery of custom applications can help IT reduce costs, improve user satisfaction and escalate its role to that of a strategic technology enabler for the business.
Enterprise developers understand these benefits by witnessing the benefits to their cloud software vendor counterparts. So enterprise IT can either, ideally, provide Docker for its developers or devops or, less ideally, risk having its developers use Docker on an external service such as Amazon Web Services long before IT even realizes.
The challenges of Docker
The problem for IT is that implementing Docker is actually not easy. Cloud software makers typically have a single app, a single app stack, a single workload they need to scale on a homogeneous infrastructure. They are singly focused and resourced on delivering this one application. Thus they can invest in implementing Docker and pulling all the other requisite technologies, products, skills, and resources together to make it all work in production.
On the other hand, enterprises have diverse apps running on various technologies (Java, LAMP, and others) that need to be deployed globally on mixed infrastructures — public cloud, private cloud, dedicated colocation, bare metal, and so on. Implementing Docker should consider the needs in three key areas:
- Simplify Docker implementation. Pull all the requisite pieces together (such as container orchestration, cluster management, inter-container networking, security, data snapshots, and recovery) to make Docker work in production.
- Leverage Docker. Docker is a tool. To extract real value from Docker, you need to know how to exploit its capabilities. For example, Docker does not provide hibernation, but given the speed of containerization, it is possible to implement unique hibernation of inactive workloads to greatly increase resource utilization without impacting user experience.
- Meet IT’s needs. IT needs visibility and control. Docker does not provide monitoring down to the container and app levels or the role-based access control so critical to mandatory enterprise governance.
Enterprise IT can then use Docker for continuous delivery but also developer self-service, improved release management, uninterrupted upgrading, workload portability, reduced virtualization licensing, and improved resource utilization. The key will be prioritizing your needs.
Samir Ghosh is chief executive of WaveMaker.