为什么CoreOS和Docker的分手是命中注定的

2014-12-05 12:02


韦恩·格雷茨基曾说过:“我总是溜向冰球将达到的点,而不是追逐它曾在的地方。”

关于Docker是否应该扩大产品的边界以扩张CoreOS的集群管理范围的争论由来已久,这也直接导致了CoreOS开发了自己的容器Rocket来与Docker争雄。这种现象可以被Clayton Christensen教授的 Law of Conservation of Modularity 一书中的观点合理地解释:

“根据我们的研究,存在这样一种现象,当价值链上的一种产品在商品化的同时,与此同时在价值链上肯定会有一种当前产品非商品化的趋势,这种相互作用的进程就意味着,当新的破坏性浪潮冲刷一个行业时,差异化能力仍然在价值链上不断的转移着。当发生这种情况时,那些将自身定位再不够完善的价值链区间的企业就能够盈利”

-Clayton Christensen, 第六章:创新者的方法。

关于Docker和CoreOS之间的这点事在科技界并不新鲜,在计算机产业发展的初期就曾经发生过。当差异化能力在价值链上不断的转移时,力图拥有这种能力的人之间就会产生各种对抗。就像在冰球比赛中一样,总有人滑向价值将要产生的地方。

历史不会重演,但总是惊人的相似。起初,大型机的发展总是差强人意,所以被整体设计、制造和出售是一个大的趋势。IBM在这一整合的历史趋势中获得了大部分利润,由于它的供给能够填补当时这种趋势中的不足。几年后,小型机和大型机已经发展得足够完善了。这时候利润从组装整个机器的整合资源者(如IBM和康柏)转移到各个部件的生产商了:操作系统(微软),处理器(Intel),存储器和驱动器。现在又到了整合资源的商家通过填补整合资源的空白来获取利润的时代了。

在台式机的领域里,处理器和操作系统一开始不那么令人满意,因此价值转移至此并不断被持续改善。但存储器和驱动器就不那么幸运。当他们发展得足够好并且能够进行模块化操作的时候,利润早已经被生产DRAM的厂家瓜分大半。

在云服务领域,截至2013年云服务商提供的虚拟机服务已经足够完善而且成功商品化。发展得并不尽如人的方面是应用的重构、部署和多服务器的管理。这时涌现了一大批工具如puppet、chef 和ansible,但是所有工具的表现不分伯仲。直到王者Docker在Github上的出现才打破了现有的格局。

从模块化和整合化的方面来说,我们可以认为Docker被设计的初衷是在独立封装和在任何平台都可以同步运行。Docker将操作系统、虚拟机、物理机和基于上面的操作整合起来进行商品化。同时提供了一系列的API,使得其他人能够基于这些API进行操作。Docker不能商品化的部分是数据中心,我们稍后会解释为什么特别强调这一点。

从一个开发者的角度,把应用封装在Docker的意义在于你可以你整个云服务作为一个模块进行操作,这其中的模块只是一个可以被替代的商品。Docker的伟大之处在于你可以任意地把你的应用进行迁移而无需做出其他改动。这对于谷歌这样的云服务的提供者可不是一个好消息,因为用户的迁移成本变得非常低。这时代,价值就从提供虚拟环境VM的云服务商流向Docker。

Docker对于开发者的意义在于,封装应用只需要Docker就够了。可以预见的是将会很快出现一大批公司提供基于Docker的无差异的整合服务。最著名的无疑是CoreOS。CoreOS提供了分离式的Linux版本服务和基于容器Docker的集群服务。CoreOS剥离了虚拟机和容器Docker,并以单一集群和商品化的数据中心进行代替。价值再次进行转移,从Docker转向整合Docker之后提供的服务。无论他们承认与否,CoreOS与其友商都是其他云服务商的潜在威胁:他们要将云服务及其建立在之上的整合平台进行商品化。

感受到这样的威胁,如果采取调整自己的服务以适应Docker的发展这样的策略对于谷歌这样的云服务提供商来说并不奇怪。他们的服务可以基于自己的硬件平台并将Docker整合在自己的服务里进行管理,这可以使价值重新分布。但令人大跌眼镜的是,谷歌又推出了自己的容器集群管理工具 Kubernetes,直到现在我还是不能理解。

那最后留给Docker的是什么呢?从一开始它提供了一个模块化的组件供其它应用使用。这对于其他组件是有很大价值的,但对Docker却没有什么价值,因为这个过程并不能获得极大的利润。完全商品化并不是一条好的出路,对于Docker的投资人来说肯定也不会带来极高的回报率。

所以CoreOS肯定会把Docker当作一个商品的构成要素,当Docker意识到自己的价值不过是被像CoreOS这样的企业作为一个工具来创造价值的时候,Docker肯定不能只是继续停留在OS层面提供价值。对于Docker来说,惟一的出路是向上一层发展。基于Docker进行构建和运行并且进行管理的整合式集群服务对Docker来说才有意义。

CoreOS对这种变化是非常在意的,因为Docker对于他们来说 ,在开发者中间,是一个极大的潜在竞争者。最自然的反应就是构建一个新的容器作为和Docker进行博弈的工具从而支持他们本来自己的服务。Rocket从出生开始相对于Docker就有技术方面的优势,这是因为它本身就是CoreOS制造用来抵挡来自Docker的威胁。

在不久的将来,集群管理也将会被完全商品化,价值将会流到别的地方,这种循环又会重新上演。这种把戏,跟打冰球没什么两样。

本文翻译自Why Docker and CoreOS’ split was predictable,原文作者Daniel Compton。中文翻译来自七牛云存储,DockerOne基于七牛云的翻译进行了整理。