28 June 2016
Sometimes a seemingly innocuous event can cause drastic changes in a complex system. A single grain of sand can cause an avalanche when dropped on a sand pile if the conditions are right. Though containers and containerization concepts have been around for a long time, Docker was the grain of sand that catapulted them to the forefront of the industry in 2013. They have transitioned from being an obscure sysadmin topic to being the platform of the future for running applications in the cloud, fueled by incredible amounts of excitement and hype around Docker.
Disruption in the computing world usually develops momentum from a one-two punch of an initial technology breakthrough, followed by the build-up of an ecosystem around it.
Docker's initial offering was largely centered on packaging existing kernel features into a CLI that was developer friendly and defining a common container image format to facilitate sharing. Its portability eliminated a big pain for developers, letting them write code on laptops and then make the move from there into virtually any environment.
It was the move by Docker to make containers so developer-friendly that created the breakthrough for this technology and launched them into the leader position. In fact, "Docker" and "containers" were nearly synonymous terms, and the conversations around both focused on explaining the basics of containers and how they could be used for development and test use cases. Most of the industry has now standardized around an open, standard container format under the umbrella of the Linux Foundation Open Container Initiative
Currently, a lot of effort is being devoted towards putting containers into production and supporting the requirements for doing so, including compliance, security, monitoring and so on. We're entering into the ecosystem stage of adoption, and most of the action is happening in the orchestration and deployment layers. Two major ecosystems have emerged in this area in addition to Docker's own suite of products: Mesos and Kubernetes.
Mesos originated at UC Berkeley as a cluster manager and is currently run out of the Apache Software Foundation. Its main commercial sponsor is Mesosphere and major users include companies like Twitter and Apple, who use it as the underlying technology to power Siri. Kubernetes is an open source project that originated at Google and has its roots in the company's internal cluster management systems. A number of companies are basing their container management offerings on Kubernetes, including startups like CoreOS and established players like RedHat. It has recently been donated to the Cloud Native Computing project, a move many see as a strategic one on the part of Google to establish its dominance in the cloud computing space. Though these platforms are not directly comparable and there's overlap between them (i.e., you can deploy Kubernetes on top of Mesos), they are growing as independent ecosystems, and users and vendors will eventually need to decide which ones they want to support.
Two major ecosystems have emerged in addition to Docker's own suite of products: Mesos and Kubernetes.
There are obvious efficiencies to be gained by standardizing on one platform. As an enterprise, which ecosystem do you choose? Regardless of technical merits, most companies prefer to choose the platform that will become the most popular down the road. Market share and mindshare often win over technical excellence. It is too early to know which technology will become VHS and which Betamax, but nobody wants to be stuck on the wrong platform.
From a momentum perspective, the Docker Inc. ecosystem and the Swarm project would seem the obvious choice. After all, most developers get started with the tools the company makes available on their website. However, Docker's initial focus on the developer experience means that their orchestration solution has had to undergo significant changes to adapt it to the needs of production operators. Since Mesos and Kubernetes have been developed specifically for the orchestration environment vs, having to be adapted, many users are turning to these platforms as their first choice.
Momentum can, and often does, change. So, how does one choose the right platform for the long-run? If history is any indication, the platform that is able to attract the strongest ecosystem of applications, vendors and developers will win. Customers will choose an infrastructure solution based not just on the strengths of the vendor's core offering but on the availability of partners that provide additional functionality around monitoring, backup, logging, compliance and many other areas.
In particular, the availability of apps will be key for adoption. After all, companies don't build clusters for the sake of it, they do so to run apps, either built in-house or provided by third parties. As the container space matures, Independent Software Vendors (ISVs) will increasingly package their apps for distribution and deployment on container-based platforms. Attracting and nurturing these vendors will be critical for the platform vendors.
So who is best positioned to win the race? Docker Inc. is aiming to build the 'VMware of containers'. This will require replicating its business model and providing a comprehensive offering for the enterprise that covers management, security, monitoring, compliance and so on. Doing so, however, risks alienating its nascent community of vendors. Similar to how companies building on top of Windows during the 90s feared the competition from Microsoft itself, companies building their product on top of Docker Inc. ecosystem will be wary of potential conflicts with the platform provider. Though Docker Inc.'s products provide a pluggable architecture, most users are likely to go with the one already bundled in if it meets their requirements. The more clarity that Docker Inc. can provide around its roadmap and long-term business model, the easier it will be for it to grow its ecosystem.
Google has a different set of challenges. Since it is unencumbered by the need to make money directly from Kubernetes itself, it has more flexibility in how it both encourages growth in the ecosystem and provides a level playing field for everyone. It has experienced impressive growth and has a vibrant community. To keep the momentum going, Google needs to continue investing in a way that lowers barriers to adoption. It will also be important to remain vigilant to avoid the pitfalls of an OpenStack-like consortium, in which many competing interests slow decision-making and make progress a painful process.
Mesos was one of the earlier players and has experienced a resurgence as of late. One of its differentiators is its ability to scale, having proven that it can support large-scale systems of hundreds or thousands of nodes. Though it has some major corporate adopters looking to run compute and storage-intensive workloads around Cassandra, Spark and others, it needs to broaden the types of apps it attracts to appeal to a larger and more diverse user base.
In addition to the major container platforms, there's the likely possibility that container adoption will become intertwined with the general cloud adoption trend. If a large percentage of end-users outsource a significant part of their container management to cloud vendors, then the availability of solutions that work both on premise and in the cloud will be even more important. Adoption of specific container-management tools among certain cloud vendors (such as telcos) will be driven by enterprise customers and the ISVs that cater to them.
We are still in the early days of the evolution of the container era, and only time will tell which platforms become dominant. We are likely to see many more twists and turns in the path to user adoption. It is even more likely that we will see the power of ecosystems prevail, just as they have with previous disruptive changes in the world of computing.
Tap to read full article