Docker could end up as just another abstraction layer, or it could end up being much more. In this article, we explore the scenario in which Docker has a pervasive impact on the IT industry and potentially disrupts several existing industries and market leaders. There is no guarantee that these pervasive effects will occur: this is pure speculation.
Docker Is Just App-V or ThinApp for Linux Servers
This is the “What is the big deal?” case. Softricity pioneered the idea of abstracting applications from their underlying operating systems. Now, it has targeted packaged (purchased) applications running on Windows desktops, the idea being to isolate those applications from their underlying operating systems and to make them more manageable and deliverable in the process. ThinApp was and is much the same thing. Both products and technologies have receded from the forefront of the industry’s attention, while installed Windows applications on desktops and laptops have been replaced by more applications that are accessed by browsers.
The “What is the big deal?” point of view with respect Docker is very well articulated in a post by TVP Analyst Tom Howarth, in Containers: The Emperor’s New Clothes.
What Is Docker Right Now?
On its website, Docker claims to be “an open platform for distributed applications for developers and sysadmins.” There are a couple of key words here. “Platform” means that Docker expects many other people to add value to Docker in the process of its becoming a solution for customers. One such contributor might be ClusterHQ, the vendor of Flocker, which claims “Run your databases in Docker and make them as portable as the rest of your app.” This hints at moving storage and apps around, which is what VMware vMotion and Storage vMotion are all about. “For developers” means that Docker intends to benefit developers, and “for sysdmins” means that Docker intends to benefit them as well. Very few products in the history of IT have benefited both developers and IT Operations; we will discuss this in detail below.
The existing claim is that Docker is a “movement” that will make life easier for both developers and sysadmins (IT Operations). Since these two groups are typically at each other’s throats, that alone would be a neat trick.
Docker Revolutionizes the World
While that is a bit of an overstatement, Docker has already had as big an impact upon our industry as VMware, cloud computing (Amazon, Microsoft, Google), Agile Development, DevOps, and new languages combined. Understanding Docker from this point of view requires that one understand that different people are going to look at Docker in very different ways. This is depicted in the proverbial “what part of the elephant am I touching, and therefore what am I touching diagram” below.
What Could Docker Become?
Docker could very well end up impacting all of the items listed in the thought bubbles of the people trying to figure out the elephant above:
- Agile Development: While Docker is not and will likely never be an application development tool, the ability to package applications and their supporting libraries in a container makes unit testing and system testing of a new release of an application much simpler. This means that Docker will make “Agile more Agile” by speeding the pace at which applications are put into production.
- Micro-Services Architecture: One of Docker’s long-term impacts is that it will allow applications to be aggregated into “micro-services.” If you remember what happened when service-oriented architectures allowed huge legacy applications to be broken up into services with APIs, this is an exponential extrapolation of that trend. Each application could well get broken up into 10, 100, or 1,000 micro-services. This will allow these services to be individually managed (which will be a challenge) and scaled (which will lead to huge gains in efficiency).
- Application Management: Someone will have to build the tools that allow containerized micro-services to be provisioned and orchestrated. Open-source tools like Kubernetes and Mesos may mature and play a role here. Vendors like Puppet are heavily focused upon provisioning containers, and leading-edge APM vendors like AppDynamics uniquely collect the data about the transaction flows and response times that is necessary for orchestration to occur.
- Data Center Virtualization Platform: VMware is the market leading data center virtualization and management platform precisely because it abstracts workloads from their infrastructure and then provides a set of services that allow those workloads to be easily managed. VMware also has allowed significant consolidation of servers, resulting in dramatic increases in data center efficiency and reductions in cost. For Docker to play here, it will have to prove that it can provide compelling consolidation benefits above and beyond what VMware provides, while furnishing all of the management functions that are based on vMotion. This is where “dMotion” and the capabilities of ClusterHQ become so important. This will take years to play out and come together into something consumable and deployable by most enterprises.
- Application Portability Platform: Docker provides this functionality today provided that your application is running on one of the versions of Linux supported by Docker. This allows the same container to migrate from a developer’s laptop, to a test lab, then to a pilot deployment and then into production. What is not known yet is what the overhead of running Docker in production will be. This is another reason why any deployment of Docker containers into production must be accompanied by the deployment of a modern APM solution like AppDynamics.
- DevOps Tool: This is a place where Docker is more likely to set off a fight in most enterprises than be a solution. Docker puts the libraries that an application depends on in the container, under the presumption that the developer should have complete control of those libraries. However, in many organizations, IT Operations is severely affected by how those libraries are configured and therefore wants a say in this. The logical solution here will be to put the libraries in their own container—with standard configuration parameters applied and have the library container included in the application container (nested containers). This will again require currently non-existent management tools to manage at scale in production.
Challenges Created by Docker
In this industry, we really only do one thing well. That one thing is to innovate and solve problems that people did not know that they had, deploy those innovations into production, and forget about management until after the innovation is deployed. This is driven by pure economics. Docker’s incentives are to get its platform as quickly and pervasively deployed as possible and to only spend time and money on management as is needed to ensure deployment. This is how every platform vendor has always behaved—think Intel, Microsoft, Cisco, Sun with Java, now Oracle with Java, data center virtualization (management here is improving rapidly but remains work in progress), and AWS. All of these vendors have invested heavily in building and deploying their platforms, and much less heavily in managing them in production.
So this pattern is poised to repeat itself with Docker. Docker will (as it should) invest most heavily in the platform itself leaving management to the ecosystem of startup management software vendors that exists in order to capitalize upon these kinds of opportunities.
Docker has the potential to revolutionize several segments of the IT industry. However, management of containers is a brand new problem that the existing ecosystem of startups, and maybe some new ones, will need to address for Docker to be deployed pervasively.