蚂蚁金服王旭:开源的意义是把社区往前推进一步

简介: 开源是一件向死而生的事情。

互联网技术发展速度之快是所有从业者甚至非从业者都能感受到的。尤记得在世纪之交时,那时候互联网刚刚在中国开始向民用普及,不说支撑大规模的网站访问量的相关技术,就连 Linux、负载均衡甚至都没有被普遍使用。而在二十年之后,云计算已经大行其道,当今的技术人员已经言必称虚拟化、容器和 Serverless,就连刚刚准备入行互联网运维行业的新人们都已经从最初觉得考个 Linux 认证就够了到开始问询 Kubernetes 培训哪家强了。

从一届届 LC3、DockerCon 到 KubeCon,蓬勃发展的云计算与容器化似乎已经称霸了互联网领域。这次我带队参加了 6 月 24 ~ 26 日的 KubeCon 大会,对此感受尤为深刻。事实上,这次在上海举办的 KubeCon 2019 距离上次在同一地点举办的同一会议才仅仅过去半年,但是我们依旧在这次大会上看到了层出不穷的大量新技术、新动态。

云与容器的结合,引爆了这一切。

作为容器领域的资深专家,让我们来看看王旭是如何看待容器和云原生领域当前的发展态势的,以及作为这个领域的一家初创技术企业的创始人,他是如何投身到这个领域的,开源又在其间起到了什么作用。

1

创立于 2015 年的 runV 项目已于 2017 年和另外一个来自英特尔的 Clear 容器项目合并为 Kata 容器项目,并由 OpenStack 基金会(OSF)进行管理,它与来自谷歌的 gVisor 项目并称为目前两大安全容器技术。

开源与初创

要么就去加强容器,要不就是引入别的安全技术来让它像容器一样。

临近 2015 年,Docker 逐渐被业界主流所接受,互联网技术已经有一个比较明显的发展趋势:第一是云,第二是容器。而云加上容器一定会产生隔离性的需求,这应该说是王旭和他的联合创始人赵鹏做安全容器最早的一个思路:要么就去加强容器,要不就是引入别的安全技术来让它像容器一样。这就是 runV 这个项目想法的起源。

runV 发布的同一个星期,英特尔Clear 容器也发布了。2016 年 8 月份,在西雅图的 LinuxCon 上,王旭和 Clear 团队见面交流,双方在一些细节上面展开合作。在 2017 年 9 月份一个会议上,英特尔软件副总裁、开源技术中心总经理 Imad Sousou 提出项目合并,然后放到基金会里管理。当时大家都觉得这是很好的一个思路。

2

对于 runV 和 Clear 来说,避免了重复开发以及花费精力在如何说明两者的不同上,同时合并之后可以共同推动发展一个社区,一起去寻找更多的用户。同时,两者合并还有更多的意义。

Kata 容器的意义

Kata 容器最大的意义在于推动了社区的发展。

王旭认为,Kata 容器最大的意义在于推动了社区的发展。在 2018 年之前刚开始做 Kata 容器的时候,王旭他们需要很多的附加进程来模拟 runC 容器的行为,因为 runC 是事实标准,你需要兼容它。但是当 Kata 和谷歌的 gVisor 都出来之后,上游社区就注意到这一点,开始重视,于是推出新的接口,可以语义明确地直接去对话,而不需要再去模拟 runC 的底层行为,把原来的 2N+2 个辅助进程变成了一个进程。另外,既然有了不同的容器运行时,是不是可以在不同的场景下让它们转到不同容器运行时环境上去?于是就有了“运行时类runtime class”这样的结构。Kubernetes 社区做了很多这样改进,它们也在逐步变成事实标准。这样,一个小项目的引入推动了包括从用户到上下游的整个社区相关软件的变动。

安全容器也让更多的业务使用容器变得可能。

同时,安全容器也让更多的业务使用容器变得可能。王旭在蚂蚁金服做面向金融的一些服务往云原生方向发展,需要非常严格的安全标准,这正好和 Kata 这些安全容器项目结合在一起。

3

增强安全性不可避免的会带来一些会性能或易用性的取舍。王旭他们的做法是,在 Kata 里面增加了一个隔离层,减少用户需要考虑的事情。举个 Docker 的例子,Docker 镜像的开发者和管理员往往不是同一个人,对于管理员来说给出的权限越少越安全,但是对于开发者来说的话,尤其开发和调试的过程中,权限的变少会让开发和调试变得非常困难。对于开发者来说,不能完全理解管理员要做的事情,所以你就会见到很多的 Docker 镜像都是要所有权限的,因为它自己也不知道需要什么权限;此外还有一些动态的情况,很难先验地用程序去完全断定它需要的权限,开发者并不太不确定到底使用了哪些能力。在这个情况下我们做的事情就是把能力整体限制到沙盒里面。在沙盒里面是完整的能力,但是实际上沙盒本身访问不到外层的系统能力,这样对应用是无感知的,操作系统就变得更安全了。确实,对于系统来说安全性和便利性是一对矛盾,你很难在同一个层面上把这个问题完全解决掉。

现在有了“运行时类”,可以指定是否需要使用安全容器。Kubernetes 社区给大家提供 了一个机制,用户可以选用或者不用安全容器,它可以是全局的配置,也可以是 pod 级别的配置。对安全性不太关键的,比如说访问一些不太敏感信息的,可以在安全性上折中一点,可以让性能更好一些。

容器的发展

从早期的 Cgroup 开始,到 LXD/LXC 这样的容器技术的出现,再到 Docker 的的诞生,一下子点燃了整个容器技术生态,紧接着在容器编排系统出现后,并发展到现今 Kubernetes 成为了事实标准。容器领域一直在快速发展。王旭的看法又是怎样的呢?

容器领域正在逐渐往上层发展。

他认为,容器领域正在逐渐往上层发展。互联网技术本身一开始是在架构层面、在底层发展,但是从 Docker 开始兴起时,给大家的感受就是减少了对底层环境的考虑,用完整的环境把应用包装起来变成容器,让它可以随地随地运行。不需要操心运行在什么样的操作系统里,把操作系统这一层干掉,或者说把它变成很窄的一层。

以发行版为例。Linux服务器发行版的核心工作有两件:一是怎么把这个系统安装上;另一个是怎么去尽量平滑管理和升级软件系统。所有的事情其实都是在围绕这两件事情。最初出现了 RPM、APT 这些包管理系统,后来是通过 Chef、Puppet、Ansible 这类配置管理系统自动化的大规模部署,再到现在的 Docker、Kubernetes,一它们都是在做软件管理的事情。原来是操作系统在做这件事情,现在是 Kubernetes 在充当操作系统的位置;对云服务来说的话,这就是无服务器模式。2014 年 AWS 在拉斯维加斯的 re:Invent 大会发布 Lambda 的时候,得到业界非常大的关注。从 Lambda 开始,每个云厂商都逐渐有了自己的无服务器服务。所以他觉得未来的发展方向,应该是向这个方向的。

除此之外,像现在中间件、服务网格也都是这样一个目的,尽量的把应用要做的事情剥离出来,和应用无关的事情全都抽象出来放到底层。

对应用开发者和使用者来说,可以不用关心底层是什么架构、怎么伸缩的,只需要知道到我需要什么服务,只要定义应用,定义 Kubernetes 配置,由它统一管理、自动伸缩和调度就好。基础设施这一层会越来越向一些少数的云厂商集中,而大家更多的精力是帮助开发者做事情,集中精力在那些业务、智能等逻辑部分。

金融与云原生

加入蚂蚁金服之后,王旭致力于将安全容器技术落地到金融级云原生的场景下。由于金融领域的特殊性,云原生实践也需要有相应的变化。

要保证安全性,不仅仅满足应用的,也要满足监管的端到端的安全性要求。

王旭举例说,金融行业不仅仅本身对安全有要求,监管对安全也有要求。所以必须要保证安全性,不仅仅满足应用的,也要满足监管的端到端的安全性要求。另一方面,他们认为安全性包括两方面,一个是应用不能破坏沙盒,泄露到外面,同时应用的底层供应商不是自己时,也可以安全的使用。这就是一个双向的安全问题。

一般而言,作为一个云服务商,会假设所有的用户都是坏人,因为所有的用户都可能去窥探基础设施,它们都可能攻击其他用户,攻击宿主机,所以要做隔离。

而金融级的要求是不光是要做这一层的隔离,而是要做更强的隔离。首先是对应用不能盲目信任,即便是内部应用也不能放任,因为内部的也有可能存在局部的破坏,也有可能会有不安全的代码或者没有被完全验证的测试代码,还有可能会有第三方的代码。反过来,应用既然是金融级的应用,它对环境也有安全要求,所以这是整体的要求。

技术创业与开源

开源对软件公司来说,是一件向死而生的事情。

在早期以开源技术为核心做创业公司时,王旭认为开源是市场推广的一个很好途径。因为软件是有人买才能赚钱,有人用才有人买,所以你如果不开源,就要一家一家地找人去试用,但是你开源了之后大家就可以免费尝试。不过,开源并不是没有缺点,开源对软件公司来说,是一件向死而生的事情。你把最核心的技术开源了,赌的是别人跟不上你的发展速度;或者说别人相信你才有能力把它做到更好,别人才会用你;或者说你给别人看到的当前版本,让他相信下一个版本他也做不到你这么好,所以才愿意跟着你来走,以至于当他维护不了的时候才会愿意来给你掏钱。这应该说是一个在市场背景下的选择。

反过来说,如果说你现在做了一个基础设施领域的软件特别好用,但是你不开源,这个时候就一定会有人做一个一样的开源替代品。那你就看能不能比它做得好,你能不能拿更多的支持、拿到更多资源。这是很困难的。

所以在这个情况下,你不得不去做这种这种极致的推广手段,就是这种不买先送的这种开源式的市场推广手段。目前来看,纯软件实现的、跟硬件没关系这种项目基本上都是采用了开源或者半开源的方式,就是说至少给你一个开源的演示版或基础版。这种方式,从商业上说是迫不得已的一种推广方式。如果你不做,你的用户们用不到的话,他们会去寻找替代品,也一定会有开源替代品出现。

技术创业还会面临一个挑战,就是当你做出来产品以后,很快会有更大的对手入场,对于初创公司来说,面临的压力是颇大的。王旭面临的情况稍微有些不同。

幸运的是,推出和 runV 类似项目的公司是英特尔,在这件事情上并没有很强的盈利导向,这也是双方最终能够合作的前提。王旭认为尽量避免无用的竞争,而是一起来教育和开拓市场,是更有建设性的做法。

做初创公司,做有价值的东西是最重要的。

经历了开源技术为核心的技术创业之后,王旭对如何做技术创业也有一些自己的看法。他认为,对于初创公司来说,很大程度上来说都在赌别人没有做过的事情,因为你重复别人做的事情,还要比别人做的好,是一件很困难的事情。对于项目来说,取决于你想的是什么东西,你的项目想得越多,想出来和别人有什么不同,别人怎么需要你的项目,其实它就越有价值。

做初创公司,做有价值的东西是最重要的,而不是说做一个很好看的架构,最重要的还是要有价值,大家才会用。此外,还要考虑相关的项目,就是你要和谁一起配合工作,你的用户群是谁,你的用户需要去引用的已有项目是哪些,怎么和它们共存,因为完全从零开始造轮子不太可能,你会用到很多已有的成果。

新做一个项目,要考虑很多相关的东西、上下游的东西,各种的兼容性、支持性,要在生态里面去找到你自己的位置。除此之外,还要明白什么是项目最重要的指标,比如开始做 runV 的时候,第一个考虑事情就是安全容器的启动时间,并且不间断的去关注和优化。

最后,做开源项目也并不是说把代码开源出来就行了,还要注重社区的建设。

作为一个开源项目来说,它的社区是非常重要的,有社区才是开源项目。

王旭认为,作为一个开源项目来说,它的社区是非常重要的,有社区才是开源项目,没有社区的项目只是拿出代码给大家看看而已,那样不会有人真的严肃的去使用你的代码。

无论是在 runV 的时期,还是后面 Kata 容器的时期,社区都是王旭和团队非常注重的一环,有很多在早期关注和参与的开发者和组织,到现在王旭也和他们保持着很好的关系。

结语

作为国内少数的基础设施方面的开源软件初创项目的领军人物之一,王旭无疑在这个领域的技术和商业方面拥有独到的经验和感悟,这些思考可以给更多在前沿领域的技术人员和开源初创项目一些启示。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
算法 数据可视化 UED
如何从 0 到 1 落地你的第一个开源项目?破局分享!
如何从 0 到 1 落地你的第一个开源项目?破局分享!
121 0
|
运维 监控 Cloud Native
华为22级专家十年心血终成云原生服务网格进阶实战文档,是真的6
在All in Cloud时代,你不一定做云原生,但是必须要懂云原生,掌握云原生的开发者或架构师会更受企业的青睐!! 未来云原生应用也会逐步取代传统的本地开发应用。 云原生是基于分布部署和统一运管的分布式云 ,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系,既是一种新型技术体系,也是云计算未来的发展方向。
|
机器学习/深度学习 存储 人工智能
搜广推模型构建及应用-AI架构师成长计划(二)|学习笔记
快速学习搜广推模型构建及应用-AI 架构师成长计划(二)。
912 0
搜广推模型构建及应用-AI架构师成长计划(二)|学习笔记
|
Cloud Native 安全 Java
「开源人说」第二期重磅上线!一起走进《从开源中来,到开源中去》
你是否思考过开源的意义?是获取免费种子用户?还是技术贡献社会价值? 开源意义千人千面,最重要的是参与进来和分享出去。贯彻开源精神,龙蜥社区从Linux开源而来,CentOS替换出发,捐赠给开放原子这样的第三方中立开源基金会,到开源中去,最后落地千行百业中去产生实际价值。从开源中来,到开源中去,龙蜥社区曾走过一条怎样的开源之路?
181183 11
「开源人说」第二期重磅上线!一起走进《从开源中来,到开源中去》
|
人工智能 供应链 Cloud Native
从更高到更好 揭秘2021阿里双11背后的技术亮点
今年,是阿里巴巴第13个双11。今年双11,阿里巴巴大促峰值的计算成本相比去年下降50%;截至11日,小蛮驴无人车在双11期间累计配送快递已超过100万件。更多的阿里自研技术投入到双11,在芯片、服务器等硬核技术攻坚的同时,技术也在推动全链路的降本增效。除了深耕自立自强的高科技,阿里还在践行“人人受益、责任担当、开放共享”的好科技,希望用技术给客户创造更好的价值,为社会创造更大的贡献。从更高到更好,今年双11,阿里巴巴的技术有什么不一样?
从更高到更好 揭秘2021阿里双11背后的技术亮点
|
监控 搜索推荐 算法
技术干货 | 闲鱼:一个优秀的 Push 平台,需要经历怎样的前世今生
mPaaS 消息推送服务,快速集成多家厂商 Push 通道,有效提高用户留存率,提升用户体验。
547 0
技术干货 | 闲鱼:一个优秀的 Push 平台,需要经历怎样的前世今生
|
弹性计算 Cloud Native NoSQL
阿里云新品发布会周刊第63期 丨 优秀技术人,如何做到高效沟通?
MaxCompute作为企业级云数据仓库,从底层基础设施、数据中心、网络、供电等,到中间的平台能力安全,再到向上的用户权限管理、隐私保护等共提供三级超过20项安全功能。敬请关注8月5日阿里云新品发布会,将为您详细解读云上大数据平台发展趋势及面临的安全挑战!
673 0
阿里云新品发布会周刊第63期 丨 优秀技术人,如何做到高效沟通?
|
人工智能 运维 Cloud Native
直播预告 | 从架构到代码,软件开发最新趋势解析
6月1日16点,云效开发者交流群见!
1923 0
直播预告 | 从架构到代码,软件开发最新趋势解析
|
新零售 弹性计算 自然语言处理
2020阿里巴巴技术线内推合集,一键直投转起来!
2020阿里巴巴技术线内推合集,找工作的你还在犹豫什么?赶快一键直投转起来!