注:本文作者马涛,阿里云智能研究员、阿里巴巴集团内核团队创始人之一、阿里云基础软件部操作系统团队负责人。先后在ORACLE、阿里巴巴负责Linux以及操作系统内核相关的研制工作。十五年以上操作系统和内核相关研制经验,国外著名Linux内核研制人员,在文件系统、内存管理、通用块设备层等方面均有深厚的积累,多次受邀在国外外著名Linux操作系统以及内核相关大会上发表讲堂。
如今我们在各个场合可以见到各类各样的“云原生XXX”,云原生已然成为IT界最流行的一个宾语,虽然不谈云原生就out了。但哪些才是真正的云原生?把老的技术跑在云上就可以了么?似乎不太行!用阿里云中级研究员蒋江伟的一句话来定义——“因云而生才是云原生”。
简单来说,一个产品或则技术要能真正加上云原生这个宾语,一定要有因云而生的创新和演化,所以想加上云原生这个宾语可不是容易的。假如诸位读者感兴趣,可以上网搜索文章“阿里云蒋江伟:哪些是真正的云原生?”今天,我就毛遂自荐来讲讲云原生操作系统。
你们可能比较好奇,操作系统不是所有用笔记本的人每天都在使用的玩意儿么?“操作系统原理”不是通常计算机系同事的第一门深奥的专业课么?现今最流行的操作系统Linux不是1991年就由LinusTorvalds高手创办了么?以上问题的答案都是肯定的。
这么,那么一个颇为传统的系统软件也可以云原生了么?
对,操作系统也要与时俱进!
所以,明天我站在操作系统的角度,来说说这个颇为传统的系统软件是怎样因云而生、因云而变,成为“云原生操作系统”的。在展开讲技术之前。
我先简单介绍一下自己。我是从2006年开始与操作系统结缘的,最开始是在Oracle从事操作系统的开发工作,2010年加入天猫核心系统做操作系统,作为阿里最早一批做操作系统的朋友,从天猫到阿里云仍然固守在操作系统领域,一路参与和见证了操作系统在阿里因云而生的演化发展。
尽管天猫也是一家互联网公司,并且天猫的操作系统和传统的操作系统虽然区别并不大。一切因云而生的改变从我2012年从天猫转到阿里云开始。那种时侯,阿里云的操作系统和天猫的有区别么?客观来说区别不大。惟一的一点点区别:在天猫,操作系统是天猫的一个基础组件;而在阿里云,操作系统和虚拟化成为了第一代云估算的基石,这是操作系统和云的第一次亲昵接触。2000年左右,VMware和Xen虚拟化技术陆续出现,操作系统通过将数学资源虚拟化达到提升资源借助率和灵活调度的目的,最终催生了云估算的诞生。初期的AWS、阿里云都是借助这一技术提供虚拟主机的服务。
这是云原生么,是因云而生的么?
其实不是。首先这种云厂商大都是在线下硬件上实现一个虚拟化层(hypervisor),把原先直接操控硬件的操作系统架到hypervisor上运行,之后服务器化学资源层面的具象和管理都由hypervisor重新实现。这么,这个事情线下能做么?绝对可以linux怎么读,所以其实这不符合云原生的定义。其实这是云的开端,但这不是云原生的。
时间来到了2013年,操作系统和云的第二次亲昵接触始于容器的诞生和发展。与虚拟机的服务器资源虚拟化不同,容器是操作系统虚拟化云操作系统与传统操作系统的比较,在技术栈上上升了一层——通过内核里实现的cgroup和namespace等技术为不同应用提供轻量、隔离的运行环境。
2013年docker的横空出世,致使应用容器的打包分发显得十分简单易用,此后k8s等容器编排技术的出现,容器生态系统得到了快速的普及和发展,容器也迅速成为应用打包分发和开发测试的主流形态,渐渐成为云估算的主要运行单元。
这就是CNCF定义的云原生了,但它只是“狭义”的,操作系统在这个“狭义”云原生中起到了很大的作用,但毕竟它并不是真正意义上的“因云而生的”,也没有在云上彰显任何革命性的技术革新。不过仔细观察一下上图,我们可以发觉——容器在安全方面的不足在云上成为了一个大问题。一方面传统的操作系统对于容器之间的干扰问题没有挺好的解决方案,另一方面容器之间还存在彼此功击,共享一些关键资源等特别严重的安全问题。
机会总是留给有打算的人linux shell,此时的操作系统总算须要因云而变、为云演化了。我们基于操作系统实现了轻量级虚拟化和应用内核等技术,构建了一种全新的安全的容器,我们称之为安全沙箱容器。沙箱容器在解决容器安全隔离问题的同时,依然保留容器完整的技术生态和体验,可以跟普通容器无缝的混和使用。
这是操作系统在容器场景上因云而生的一个重要演化,至此操作系统完成了“因云而生”的漂亮变革,成为一个云原生操作系统。目前这套系统早已服务于阿里集团各个云原生相关业务,也通过阿里云上各类容器实例产品服务于我们的云顾客。
故事到这儿还没有结束。面向未来的云原生,操作系统怎样继续“因云而与众不同”呢?这就不得不提云原生中另外一个趋势Serverless。2019年,UC伯克利学院预测Serverless将会逐步替代Serverful估算,成为云时代的新估算范式。随着云原生理念的推广以及各类云原生技术的不断发展,Serverless估算的趋势在加速。
在这些新场景中,用户只须要专注于应用和业务逻辑,更多的通用功能、资源和系统能力都下沉到云,用户不须要提早规划容量,不须要运维底层系统,可以真正像用水、用电一样按需使用按需付费,Serverless将急剧提高云的生产效率。
背景介绍完,问题也来了——Serverless和操作系统有啥关系呢?我觉得要建立好Serverless服务,操作系统一定不能缺席。因为Serverless场景下服务边界的上移,对用户来说应用容器或函数代码之下的系统就是一个整体,用户不再感知底层系统的技术栈分层。
这个变化给技术垂直整合创造了条件。我们觉得云原生的操作系统须要进行整体性的全栈优化和重构,这样就能为Serverless提供更优的底层系统能力,基础运行环境、资源弹性、高效执行等能力也将为此得到极大的释放。
假如说在容器和K8S时代操作系统是“因云而演化”,这么到了Serverless时代,我们则要彻底创造出一个全新的云原生操作系统。通过底层系统全栈技术的协同融合,为云原生平台和应用提供高效和创新的云原生系统服务。此次改革和创新的力度对于传统操作系统而言是前所未有的,并且我们深信,操作系统一定会为云而改变,为云而重生。在阿里内部,我们给这样的云原生操作系统起了一个响亮的名子——“袋鼠”。
多年以后,其实学院课程“操作系统原理”里的内容会由于此次改革而发生翻天覆地的改变,但我们深信,这就是云带给我们这一代操作系统研制人员的使命:重新定义操作系统。只有通过因云而生的技术创新构建下来的操作系统云操作系统与传统操作系统的比较,才是真正的云原生操作系统。(完)