为啥CoreOS和Docker的分手是命中注定的
英文原文:Why Docker and CoreOS’ split was predictable
"韦恩·格雷茨基曾说过:“我总是溜向冰球将达到的点,而不是追逐它曾在的地方。”
关于 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 的威胁。
在不久的将来,集群管理也将会被完全商品化,价值将会流到别的地方,这种循环又会重新上演。这种把戏,跟打冰球没什么两样。