阿里云研究员马涛:什么是操做系统的云原生?

注:本文做者马涛,阿里云智能研究员、阿里巴巴集团内核团队创始人之1、阿里云基础软件部操做系统团队负责人。前后在ORACLE、阿里巴巴负责Linux以及操做系统内核相关的研发工做。十五年以上操做系统和内核相关研发经验,国内知名Linux内核研发人员,在文件系统、内存管理、通用块设备层等方面均有深厚的积累,屡次受邀在国内外知名Linux操做系统以及内核相关会议上发表讲座。

图片

如今咱们在各个场合能够看到各类各样的“云原生XXX”,云原生已经成为IT界最流行的一个定语,彷佛不谈云原生就out了。但什么才是真正的云原生?把老的技术跑在云上就能够了么?貌似不太行!用阿里云高级研究员蒋江伟的一句话来定义——“因云而生才是云原生”。简单来讲,一个产品或者技术要能真正加上云原生这个定语,必定要有因云而生的创新和演进,因此想加上云原生这个定语可不是容易的。若是各位读者感兴趣,能够上网搜索文章“阿里云蒋江伟:什么是真正的云原生?docker

今天,我就毛遂自荐来说讲云原生操做系统segmentfault

你们可能比较好奇,操做系统不是全部用电脑的人天天都在使用的玩意么?“操做系统原理”不是通常计算机系同窗的第一门艰深的专业课么?如今最流行的操做系统Linux不是1991年就由Linus Torvalds大神创立了么?以上问题的答案都是确定的,那么,这么一个颇为传统的系统软件也能够云原生了么?对,操做系统也要与时俱进!因此,今天我站在操做系统的角度,来谈谈这个颇为传统的系统软件是如何因云而生、因云而变,成为“云原生操做系统”的。安全

在展开讲技术以前,我先简单介绍一下本身。我是从2006年开始与操做系统结缘的,最开始是在Oracle从事操做系统的开发工做,2010年加入淘宝核心系统作操做系统,做为阿里最先一批作操做系统的同窗,从淘宝到阿里云一直坚守在操做系统领域,一路参与和见证了操做系统在阿里因云而生的演进发展。虽然淘宝也是一家互联网公司,可是淘宝的操做系统和传统的操做系统其实区别并不大。一切因云而生的改变从我2012年从淘宝转入阿里云开始。服务器

那个时候,阿里云的操做系统和淘宝的有区别么?客观来讲区别不大。惟一的一点点区别:在淘宝,操做系统是淘宝的一个基础组件;而在阿里云,操做系统和虚拟化成为了第一代云计算的基石,这是操做系统和云的第一次亲密接触。less

2000年左右,VMware和Xen虚拟化技术相继出现,操做系统经过将物理资源虚拟化达到提升资源利用率和灵活调度的目的,最终催生了云计算的诞生。早期的AWS、阿里云都是利用这一技术提供虚拟主机的服务。这是云原生么,是因云而生的么?固然不是。首先这些云厂商大都是在线下硬件上实现一个虚拟化层(hypervisor),把原来直接操控硬件的操做系统架到hypervisor上运行,而后服务器物理资源层面的抽象和管理都由hypervisor从新实现。那么,这个事情线下能作么?绝对能够,因此显然这不符合云原生的定义。虽然说这是云的开端,但这不是云原生的。运维

时间来到了2013年,操做系统和云的第二次亲密接触源于容器的诞生和发展与虚拟机的服务器资源虚拟化不一样,容器是操做系统虚拟化,在技术栈上上升了一层——经过内核里实现的cgroup和namespace等技术为不一样应用提供轻量、隔离的运行环境。2013年docker的横空出世,使得应用容器的打包分发变得很是简单易用,随后k8s等容器编排技术的出现,容器生态系统获得了快速的普及和发展,容器也迅速成为应用打包分发和开发测试的主流形态,逐渐成为云计算的主要运行单元。函数

图片

这就是CNCF定义的云原生了,但它只是“狭义”的,操做系统在这个“狭义”云原生中起到了很大的做用,但其实它并非真正意义上的“因云而生的”,也没有在云上体现任何革命性的技术革新。测试

不过仔细观察一下上图,咱们能够发现——容器在安全方面的不足在云上成为了一个大问题。一方面传统的操做系统对于容器之间的干扰问题没有很好的解决方案,另外一方面容器之间还存在彼此攻击,共享一些关键资源等很是严重的安全问题。机会老是留给有准备的人,此时的操做系统终于须要因云而变、为云演进了。咱们基于操做系统实现了轻量级虚拟化和应用内核等技术,打造了一种全新的安全的容器,咱们称之为安全沙箱容器优化

沙箱容器在解决容器安全隔离问题的同时,仍然保留容器完整的技术生态和体验,能够跟普通容器无缝的混合使用。这是操做系统在容器场景上因云而生的一个重要演进,至此操做系统完成了“因云而生”的漂亮转型,成为一个云原生操做系统。目前这套系统已经服务于阿里集团各个云原生相关业务,也经过阿里云上各类容器实例产品服务于咱们的云客户。阿里云

图片

故事到这里尚未结束。面向将来的云原生,操做系统如何继续“因云而不同凡响”呢?这就不得不提云原生中另一个趋势Serverless

2019年,UC伯克利大学预测Serverless将会逐渐取代Serverful计算,成为云时代的新计算范式。随着云原生理念的推广以及各类云原生技术的不断发展,Serverless计算的趋势在加速。在这种新场景中,用户只须要专一于应用和业务逻辑,更多的通用功能、资源和系统能力都下沉到云,用户不须要提早规划容量,不须要运维底层系统,能够真正像用水、用电同样按需使用按需付费,Serverless将大幅提高云的生产效率。

图片

背景介绍完,问题也来了——Serverless和操做系统有啥关系呢?我认为要构建好Serverless服务,操做系统必定不能缺席。因为Serverless场景下服务边界的上移,对用户来讲应用容器或函数代码之下的系统就是一个总体,用户再也不感知底层系统的技术栈分层。这个变化给技术垂直整合创造了条件。咱们认为云原生的操做系统须要进行总体性的全栈优化和重塑,这样才能为Serverless提供更优的底层系统能力,基础运行环境、资源弹性、高效执行等能力也将所以获得极大的释放。

图片

若是说在容器和K8S时代操做系统是“因云而演进”,那么到了Serverless时代,咱们则要完全创造出一个全新的云原生操做系统。经过底层系统全栈技术的协同融合,为云原平生台和应用提供高效和创新的云原生系统服务。此次变革和创新的力度对于传统操做系统而言是史无前例的,可是咱们坚信,操做系统必定会为云而改变,为云而重生。在阿里内部,咱们给这样的云原生操做系统起了一个响亮的名字——“袋鼠”

图片

多年以后,也许大学课程“操做系统原理”里的内容会由于此次变革而发生翻天覆地的改变,但咱们坚信,这就是云带给咱们这一代操做系统研发人员的使命:从新定义操做系统。只有经过因云而生的技术创新打造出来的操做系统,才是真正的云原生操做系统