可以说,开源从最初兴起时,就充满了理想主义色彩 。而对王旭来说,他的第一印象就是“好玩”,一台裸机,网络还没连上,他就能玩上好几天,反复尝试各种代码,在代码的广阔天地里遨游 。
随着越来越多地接触开源,王旭发现,开源本身自由、开放、共建的特质,能让软件迭代得更好 。
在开源著作《大教堂和集市》里,作者Eric Raymond指出:世界上的建筑可以分为两种,一种是集市,天天开放在那里,从无到有,从小到大;还有一种是大教堂,几代人呕心沥血,几十年才能建成,投入使用 。
毫无疑问,开源就是一种“集市”,当更多的用户参与其中,不断review后,开源软件反而能因有了更多的用户反馈,而获得更好的迭代 。
王旭喜欢开源所代表的这种“集市文化”,他写过玩Linux的电子书,翻译了很多文章,并在那时候就在心里埋下一颗种子,想做一个自己的开源软件 。
这个机会在2015年出现了 。
在2014年,Docker(容器技术)已经逐渐被人们所认识 。从前计算机上运行应用,不同机器环境的差异性总是一个非常棘手的问题,会发现程序会出现一些或大或小的行为差异 。
对于大规模系统的运维来说,保持环境的一致性、确保应用行为的可预测性,就成为了一个非常复杂而有技术含量的问题,自然也是个有价值的课题 。
但Docker一口气从源头上解决了这一问题 。它用了一个容器,把代码、运行环境、系统工具、系统库、设置包了进去,像一个罐子一样,拿着这个罐子,程序在任何操作系统都能畅通地运行 。
当时Docker喊出了一句口号:“Build once,RunAnyWhere 。”完全无视开发、测试、生产环境不一致的干扰 。
程序写完之后打包成镜像,就可以随处部署和运行 。这对当时总要考虑运行环境、总要修bug的程序员来说,实在是天大的诱惑 。
毫无疑问,Docker技术在当时的代码圈和程序圈非常轰动,而王旭瞄准了这个机会 。
同样是2010年代,随着互联网的发展,大量的程序都在往云上走 。当大家都在尝试在云上部署应用,为云开发代码时,一个无视运行环境影响,直接能让软件运行的容器化环境,无疑能让软件开发如虎添翼 。
如果容器化与云结合起来,那么后来的应用开发者和使用者,就不用再思考从集群硬件管理到维护操作系统环境这一系列的烦心事,他们只需要确定需要什么服务,如何定义应用,就可以了 。
所有应用底层抽象的事情被全部剥离了出来,变成了花园底层适合所有植被生长的土壤,后来者不用再考虑土壤问题,只需要考虑想要什么花、什么树,就能直接种下去,这就是所谓“云原生”的原始动机 。
虽然这在未来必然是一个趋势,但容器化和云要完美结合,天然会产生一个矛盾:容器这个技术的安全隔离性不够,和云的结合需要大量的额外保障,来破坏这之中的简洁之美 。
传统的操作系统容器技术的隔离指的是管理上的隔离,并不是指它运行起来就互相不干扰、没有安全风险,相反,因为同一个操作系统上的容器之间共享了很多状态,安全风险是很难消除的 。
而云上又特别讲究用户之间的隔离性,它会假设每个人都是陌生人,不同的用户之间要隔离住,要互相不能侵犯,同时互相之间的干扰也要尽可能小 。
它既是趋势,又因隔离性而面临困难,王旭他们因此想到,可以做一个软件增强容器的安全隔离性,做一个「安全容器」 。
但实际上,要增强操作系统容器的安全性是比较困难的,学界也有一些研究证明容器和安全之间有不易解决的死结存在 。
当然正如David Wheeler所说,“在计算机科学中,所有问题都可以通过增加一个间接层来解决”,容器安全性也不例外 。
但David Wheeler也说,“这解决不了间接层过多的问题”,多增加一个间接层会带来复杂,不仅影响美感,也带来滋生Bug的土壤 。
后来,王旭他们想到了主流云主机里都会使用、早已被证明安全的虚拟机技术,于是反向思考能否将虚拟机技术剪裁到容器这种轻量快速结构,并基于这个思路推出了runV 。

文章插图
图 | 王旭和Kata Containers团队
这和英特尔的clear containers是同一个思路,二者用完全不同的代码实现了同一种方式解决容器上云的安全问题,两个项目的发布时间同是2015年5月 。
2017年9月,王旭他们团队和Intel开源技术中心共同决定,将这两个容器合并,并放入OSF基金会进行管理 。
推荐阅读
- 鸠摩智是坏人吗 鸠摩智知乎
- 为何你们骂着特斯拉,还要买它
- 茶叶市场投资为何不能准确预测
- 工作3年和工作7年的程序员到底差在哪里?
- 刚入行的程序员,怎么继续混下去?
- 程序员们,该如何选择技术方向?
- 情人为何比老婆更有吸引力
- 甲油胶必须烤干吗 甲油胶烤干后为何还是很粘
- 陕西|陕西商洛学院招博士, 年薪18万安家费50万, 为何二本学院巨资招博士
- 品茶鉴水无锡惠山泉为何号称天下第二泉
