“元戎”缘起:理想照进现实
“元戎”作为华为云Serverless的内核。华为“元戎”研发团队中的一名骨干专家,在闲暇时翻阅唐诗,柳宗元《剑门铭》中的一句——“鼖鼓一振,元戎启行”,触动了他的神经。“元”,大也;“戎”,戎车也。其寓意和气势,感觉与华为在Serverless上的布局谋篇十分匹配,元戎即“大兵车”,其寓意为分布式并行系统“大军出行”,打造新时代的Serverless架构与技术。
时光追溯到2017年,在一次技术讨论中,有人向2012实验室分布式与并行软件Lab主任谭焜博士提到,在美国硅谷,FaaS(Function as a Service,函数即服务)挺火的,但在国内鲜少有人提及。“我们几个人一碰,感觉FaaS确实挺有意思,于是组织了一个五六个人的小团队开始调查和研究。”谭焜博士回忆说。
在华为,新技术的研发往往会有一个内部“碰撞”的过程,比如2012实验室和某个业务部门都发现了一个值得研发的新方向后,可以“八仙过海,各显神通”,组织自己的力量和资源先期进行研发,最终经过深度的碰撞和协作,进行更深入的研发,最终转化为成熟的产品。
“从‘元戎’的研发过程来看,我们不仅和自己的领导碰撞,还和产品线碰撞。但这种碰撞是正向而积极的,让我们不断迎接并冲破挑战。”谭焜博士解释说,“所谓的挑战,就是不同的部门,站在自己的角度提出问题甚至是质疑,我们则要不断为这些问题找到正确的答案。这个过程促进了我们团队的思考,不断调整和修正思路,最终找到问题的症结所在,并解决它。经过反复的碰撞以后,我们对Serverless的认知和洞察也越来越深刻。”
“元戎”最开始时还不叫“元戎”,它就是被简单地称为FaaS。从功能来看,FaaS就是一个更细粒化的资源 虚拟化 过程。其实,云计算本身就是资源虚拟化的过程,从虚机到容器、再到FaaS,只不过现在可以把内核、内存搞得更加细致,用一个比容器更小的资源——“函数”来实现,并且它还是独立的。
灯不拔不亮,理不辩不明。琢磨透了FaaS的内涵,Serverless的未来远远不止眼前的这些“热闹”。“如果把云看成一台计算机,让它真正运行起来,就需要一个操作系统。但现在市场上的很多云操作系统并不是完全意义上的操作系统。对比Linux所做的将资源管理起来、实现资源虚拟化和提供一些基础服务,让程序更容易编写和运行,现在的云操作系统还稍微欠缺一点。”这让谭焜博士和他的团队找到了努力的方向,“如果将功能进一步扩展,就可以做到为程序员提供更加容易的编程和运行方式。在此基础上,未来面向云的编程范式,是把云的基础设施看作单台机器,把函数看作进程或者线程,把状态看作私有内存,把数据抽象看作共享内存,把数据流看作文件系统——这就是分布式内核‘元戎’的核心思想,开发者就可以基于元戎快速开发分布式程序了。”
随着研发的深入,从内核的研发到应用场景的挖掘,再到实际的客户应用,谭焜博士和他的团队的思路越来越清晰。“元戎”最重要的意义在于,作为分布式内核,它包含了计算、数据、网络三大抽象能力,以函数细粒度作为计算单元的抽象,通过数据系统提供KV、缓存、一致性状态、数据抽象和数据流的处理,并以高速的网络通信来降低分布式系统间的通信时延。从这个意义上说,“元戎”不仅仅是FaaS,而是一个通用运行环境和编程框架,或称之为通用Serverless。
Berkeley大学的David Patterson(图灵奖得主)和Ion Stoica(伯克利AMPLab主任,Spark共同创始人)曾经在《Communications of the ACM 》上发表文章《What Serverless Computing Is and Should Become: The Next Phase of Cloud Computing》,提出了General-purpose serverless的概念,这跟元戎的设计理念不谋而合。
“我们的思路与现在学术界的思潮是一致的,特别是Berkeley的几篇论文让我们产生了很多共鸣。我们也引用了论文中提到的‘通用Serverless’这一说法。所谓通用Serverless,应该是可以支持有状态的、程序能够自动并行的、可以在多云执行的,能够让所有的应用都可以基于通用Serverless开发。另外通用Serverless还要思考一个重要问题,就是如何能够将云中分布式、大规模的异构资源更好地利用起来,帮助企业解决更多的计算问题。这也是我们未来努力的方向。”谭焜博士表示。
从最初模糊的想法,到今天做成兼具广度和深度的Serverless框架,华为2012实验室及华为云研发团队刻苦钻研和坚持,凭借不拘泥于传统的创新精神,才让理想最终照进了现实。
“元戎”进阶:在正确的方向上稳步前行
众所周知,华为2012实验室是华为诸多“黑科技”的诞生之地。谭焜博士负责的华为2012分布式与并行软件实验室,集中了华为所有与分布式系统相关的研发工作,所以这里是个名副其实的“聚宝盆”。
说它是“聚宝盆”,除了技术多元化、创新迭代速度快以外,还因为这里的“博士浓度”最高,即博士占比在整个研发团队中最高,“五星人才”也最多。实验室下辖5个不同研究方向的实验室,每个方向都拥有一批在学术界、工业界有一定影响力的专家。
汇集诸多专家之力,“元戎”一步一个脚印,稳步前行。
随着整个业界对Serverless的关注度持续走高,Serverless的应用实践逐渐落地,“元戎”凭借有状态、快速冷启动等优势,能够支撑视频转码服务和一些特效处理,或者OBS中的数据处理分析服务,以及金融的大规模计算场景等更复杂更丰富的应用场景,引起了华为云Serverless的注意。“在充分研究和讨论之后,我们觉得这件事情可做,便投入了更多资源,并与华为云等业务部门沟通,结果一拍即合,将‘元戎’作为华为云Serverless FunctionGraph的内核,大家一起把技术产品化、商业化。” 谭焜博士介绍说。
华为并没有像有些厂商那样出于既得利益的考虑,将Serverless定位为整个云基础架构中的一个补充。因为如果遵从这一定位,我们可能也就看不到今天的“元戎”了。“从客户需求和技术方案的角度出发,解决客户的上云问题,将 云原生 技术用好。很显然,Serverless就是解决之道,而且是主流。”谭焜博士如是说。
华为云FunctionGraph 函数计算服务,是基于元戎内核,内置数据系统,业内首个支持有状态函数。相比无状态函数,FunctionGraph 有状态函数能够直接访问数据,将读写时延降低10 倍,极大地拓展了Serverless 的应用范围。
例如,某社区媒体平台客户需要开发一个安全监控的增值业务,对电动车进入电梯等事件发出报警,防范潜在危险。客户安装在电梯内的摄像头会定时上传图片,存储在 对象存储服务 OBS上,识别电动车进入电梯等安全问题的AI推理模型部署在华为云一站式 AI开发平台 ModelArts上,而预警等业务平台则部署在本地,如何串联这些服务快速上线业务,并能随业务量的增加方便的扩展是客户面临的最大问题。基于FunctionGraph做服务间集成串联,客户两个月就完成了业务逻辑的开发,且FunctionGraph毫秒级自动弹性的能力,保证了每天过亿次的请求下依然能平稳处理业务。
另外,在金融领域,传统金融分析师经常要通过Excel表格或者Python科学计算库来做风险、量化投资评估,随着计算数据量越来越大,无法快速获得计算结果,往往要到第二天才能出结果,无法做到实时评估,从而可能带来投资损失。基于“元戎”内核提供的能力,金融分析师只要在代码中加一些装饰器,就可以将原来单机计算任务自动转化成函数执行,实现单机程序自动并行到集群上运行,带来几个数量级的性能提升。既享受到云上算力优势,又享受到Serverless体验。
不止是以上这些场景,在“元戎”的加持下,华为云FunctionGraph函数计算服务能够广泛适用于多种应用场景,包括 大数据 、流处理、机器学习、金融、求解器、在线游戏等等。
匠心之作:每一份付出都会有回报
“元戎”是幸运的,不仅生存了下来,而且成了华为云Serverless真正意义上的内核。“元戎”出世固然让人备感振奋,但其研发过程的艰辛却难以想象,甚至是有些“折磨”,比如版本的联调工作经常要熬通宵。即使是这样,开发人员却苦中作乐,把研发工作看成是又一次“闭关修炼”。谭焜博士介绍说,在大约3个月的时间内,从TDT经理到项目经理,再到首席架构师,全部严阵以待,不断调试、磨合、适配。大强度的工作使得开发人员非常疲劳,所以,每到周末,大家也会自发搞些体育锻炼和活动,放松一下紧绷的神经。
现在看来,华为云FunctionGraph函数计算服务的成功发布,就是对整个研发团队最大的奖赏,一切付出都值得。“我非常感谢我的团队。”谭焜博士不禁感慨,“虽然研发过程比较痛苦,尤其是经历挫折甚至失败的时候。在这种情况下,团队的坚持就显得非常重要。”
谭焜博士负责的2012实验室“元戎”研发团队与华为云的研发团队相结合,共同致力于华为云Serverless的研发,整个团队的规模已经达到上百人,成为华为云Serverless腾飞的重要基石。
华为云Serverless的进阶之路与华为云提出的分布式云原生战略是非常契合的,都着重强调分布式资源整合以及面向未来的编程抽象的聚合。正如谭焜博士所说,Serverless将是微服务的“封顶之作”,也是推动应用现代化的基石。是华为人善于发现的眼睛、不畏艰难的攻关,以及持之以恒的信念和坚持,才奉上了“元戎”这一匠心之作。