封面故事
看Serverless工程师如何演绎代码魔术

2022年5月14日,星期六,晚上8点整,一场面向两位开发者的采访终于开始了。

两位研发工程师都来自华为云Serverless团队,一支“神秘之师”。一位是身经百战的架构师南风,另一位则是初入华为的开发工程师瑞冬。两人在谈及自己的工作经历时,虽然轻声细语,谦逊中略带“攻城狮”特有的一丝腼腆,但是在介绍华为云FunctionGraph技术上的创新与项目落地过程中的种种细节时,却不乏如电影大片般的紧张刺激,让听者有热血沸腾之感。

华为云FunctionGraph作为Serverless解决方案的重要产品之一,是一款无服务器(Serverless)计算服务。无服务器计算是一种托管服务,服务提供商会实时为用户分配充足的资源,而不需要预留专用的服务器或容量,真正按实际使用付费。

“代码老兵”一天写出别人一个月的代码量

采访为什么被安排在周末晚上的8点?原因很简单,因为南风、瑞冬和他们团队的兄弟们刚刚结束一次内部封闭培训,“破关而出”。从南风的语气中似乎可以感觉到一丝疲惫,但同时也有一种如释重负般的轻松。据说类似的培训是家常便饭,目的就是让开发人员能够写出Clean Code,做一个更优秀的Committer。

工作已经十五六年的南风可以称得上是团队中的“老大哥”了,但不仅仅是因为工作时间长,更因为他一天之内可以写出别人一个月才能完成的代码量。南风娓娓道来:“当时一个客户遭遇了性能上的瓶颈,而且希望在短时间内攻克这一难题。我心里只想着如何帮助客户尽快解决这一问题,沉浸于那种状态,不知不觉中一两天时间就写出了几千行核心代码,解决了客户面临的难题。”

“只要思路对了,写起代码来就像行云流水,似乎没有什么难度。”南风说的这样轻描淡写,但这背后离不开他的刻苦钻研,以及啃过的无数客户项目的“硬骨头”。说起来,南风加入华为云Serverless团队,还是“跨界”而来。因为他最开始一直在做开源中间件,后来又投入到中间件云化的工作中,即将中间件做成云服务对外提供给客户。

在做中间件云服务的时候,南风经常会遇到底层虚拟机弹性伸缩的问题,但是传统虚拟机的弹性扩容性能根本满足不了短时间突增的海量并发请求,所以当时南风所在的部门也在做与Serverless相关的开发,目标就是借助Serverless强大的弹性伸缩能力,满足业务快速上线的需求。

从技术发展脉络来看,从中间件服务到Serverless的开发和应用,其实也是一脉相承。对Serverless产生了浓厚兴趣的南风,主动向领导请缨加入华为云Serverless团队,承担起FunctionGraph架构师的角色,主要负责FunctionGraph的架构设计、竞争力规划等。

从中间件云化到Serverless云原生,南风的工作岗位虽然有了调整,但是一路走来没少与云底层架构打交道,技术开发和应用实践的经验不断累积和深化,让他对云计算的演进过程有了更深的体会,更能准确地把握用户的应用痛点,因此在设计FunctionGraph架构时才能做到更有针对性,也更得心应手。

这就不得不提到南风职业生涯中的另一个高光时刻,由于他的出色表现,在大代码包场景下,Serverless端到端冷启动时延由原来的5秒缩减到400毫秒,速度提升10倍以上此项技术还申请了带有依赖包场景下的Serverless冷启动优化相关专利。南风回忆说,那是一个微服务Serverless化的的应用场景,代码包特别大,而且依赖的库非常多,因为是从传统微服务迁移过来的,而传统微服务是没有冷启动这回事的。但在Serverless场景中,冷启动过程首次拉起时需要“漫长”的5秒,这是用户根本没法接受的。

为了缩短启动时延,南风最初尝试采用一些传统优化手段,比如在网络传输上进行优化,以及以解压缩的方式优化,但效果都不明显。在对用户场景以及代码包特点进行了深入分析后,他脑海中突然灵光一闪,想到对用户代码进行拆分的办法,一部分是真正的代码,另一部分是其依赖的包,在此基础上对性能进一步优化,实现该场景下的冷启动只需400毫秒,开创了行业先河。

“我们在Serverless的开发和应用中,始终坚持从用户价值的角度出发。对于Serverless冷启动的优化,就是从用户的实际场景中提炼并解决问题,然后推而广之,解决同类用户的相同问题”,南风如是说。

作为架构师,在南风的日常工作中,多是平台架构和竞争力方案设计等按部就班的工作,但也不乏像Serverless冷启动优化这样让人肾上腺素飙升的挑战。在架构层面实现创新,让南风的工作充满了刺激与成就感。

比如,华为云内部的OBS客户,要用FunctionGraph函数对OBS中的文件进行处理。因为OBS中的文件每次大小不一,所需要的计算资源也不一样,而当前的函数计算只支持固定的一种规格。为了解决这一矛盾,南风从架构设计的角度,抽象了动态资源规格的能力,可以支持在同一个函数里根据请求动态指定规格,让用户真正享受到Serverless按需启动、按需计费的优势,显著降低应用成本。

“破局小子”仅用百行代码量,快速上线企业应用

作为架构师,南风在FunctionGraph整个研发生命周期中扮演着非常重要的角色。但从华为云Serverless整个业务来看,并不是某一个天才或精英单打独斗,而是一群天才和精英集体作战、相互协作,才能让FunctionGraph具备更强的竞争力。架构师南风与开发工程师瑞冬就是在公司那场“无人不晓”的“Serverless杭州会战”中结下了浓厚的“革命友谊”。

当时,华为云要将FunctionGraph的内核升级,采用2012实验室元戎团队提供的一套全新架构,所以在杭州搞了一次大会战,前后持续了一个月左右,汇聚了华为2012实验室元戎团队,以及华为云Serverless在南京、杭州、深圳、苏州等地的相关团队人员,甚至加拿大等海外的专家,协作攻坚。说起在华为云Serverless团队的经历,杭州会战让瑞冬至今记忆犹新:“我当时主要负责全面分析FunctionGraph升级前后两个版本的功能差异性,如接口、能力差异等。

当时我们需要两周完成切换并保证版本的正常运行,时间紧、任务量大,是挑战也是动力。我们团队将效率拉满、通力协作,成功在期限内,完成了FunctionGraph版本的升级优化,确保了业务的连续性,保障客户侧无感知的正常运行。”

与南风这样的“老资格”不同,瑞冬2020年5月才入职华为,成为了2021实验室元戎团队中的一员。作为元戎团队的研发工程师,瑞冬“初生牛犊不怕虎”,凭借上学时打下的坚实技术基础,再加上个人的刻苦努力,瑞冬很快从团队中脱颖而出,并作为团队的中坚力量,深入一线,贴近客户,了解客户痛点,响应客户诉求。同时指引客户快速上手FunctionGraph,获得多家客户好评,团队都称他为“破局小子”。瑞冬谦虚地表示,这是华为云Serverless整个团队通力合作的一个成果。

在瑞冬的工作中,最让同事们津津乐道的,是他成功地支撑了华为云海外CDN+OBS+FunctionGraph智能边缘创新解决方案的落地,并作为标杆案例在全国范围内推广。

比如,吉客印是一家跨境电商,其平台主要通过图片的形式对商品进行展示。一方面,用户对浏览的实时性要求非常高;另一方面,商品原图一般是PNG、JPG、JPEG等格式。高分辨率下,图片体积大、加载慢。

 与此同时,相同质量的WebP格式体积则比JPEG等格式小40%。因此,客户希望尽可能展示WebP格式的图片,给用户最好的响应体验。

由于客户的历史图片较多,在实际业务中,很多图片访问量很小甚至“无人问津”,若统一对所有图片做格式转换,将浪费存储空间。所以瑞冬他们考虑按用户触发实现动态转换,即:事件触发、按需转换。

在该用户场景中,华为云提供了CDN+OBS+FunctionGraph的组合方案,CDN用于访问加速,OBS用于图片存储,FunctionGraph用于图片格式的动态转换。

该方案具备灵活、免运维、弹性快等特点,仅需百行代码,3天即可完成上线,在客户端支持WebP格式的情况下,可帮助企业节省约40%的成本

不止于此,为了能更好地服务用户,赋能客户以少量代码即可快速、轻松地开发新的应用,瑞冬还会将典型的客户场景抽象为函数模板,并上架到FunctionGraph。比如在2K视频转码至4K视频的场景中,用户仅需使用FunctionGraph提供的视频转码函数模板,即可上线视频转码功能,省去了解OBS、FunctionGraph、MPC等接口和亲自写代码的过程,因为函数模板已实现业务逻辑,用户选择合适的函数模板,仅需要修改少量配置,1天内便可上线应用,大大提升了工作的效率。

 不管是负责架构设计的南风,还是负责FunctionGraph客户拓展和支撑工作的瑞冬,他们不仅要熟练地写代码,而且要经常性地走到客户业务的第一线,了解客户的需求,洞察其应用痛点,甚至要做与FunctionGraph相关的培训。“公司要求架构师,不仅做得了架构,还能写得了代码,更要见得了客户。”南风如是说。似乎华为云Serverless团队中的每一个人都是一专多能。华为云Serverless不是高冷的技术范儿,而是贴近客户需求的实用派。

铸就“传奇”的“天选打工人”

凭借上线速度快、按需计费、资源效率优、运维成本低、应用开发简化等与生俱来的优势,Serverless在行业用户中的渗透率正逐步提高。有预测显示,其渗透率将从当前的30%左右提升到2026年的80%左右。

同时,Serverless的应用场景也越来越广泛,从最热门的事件驱动类应用,到Web类、AI类等应用场景,不仅能够支撑快速部署开发、提升业务效率,还能有效降低企业成本。作为一种以应用为中心的新型云原生计算形态,Serverless有望在未来5-10年内成为云的首要交付模式。

以FunctionGraph为典型代表的华为云Serverless解决方案,是华为云布局云原生的重要一环,凭借持续的实践与积累,华为云FunctionGraph目前已经沉淀了多种应用模板,如视频转码、图片审核、缩略图生成、图片文字识别等函数模板。它具备极简开发、极致弹性、按需计费三大特性帮助各行各业的企业用户降本增效,满足了业务创新与发展的需求。

比如,金山办公使用FunctionGraph,天级集成OMS服务,实现跨Region的文档数据备份容灾;蜻蜓FM使用FunctionGraph,集成LTS服务进行海量日志过滤回存,实现天级上线。

在Serverless时代,用户只需要关注自己的业务逻辑或者业务代码,而不必再去关注底层平台、OS或中间件的运维等。作为云计算下一代的计算范式,Serverless给用户带来的最大价值就是实现了部署的敏捷性及弹性伸缩,在毫秒级时间内就能“弹”出一个运行环境。这也正是华为云FunctionGraph团队努力的目标和方向。

从众多行业客户成功部署Serverless的案例中,华为云不断总结经验、梳理场景,并与客户一起探索,形成了一些固定的模板,即把典型客户的个性化需求与实践变成更具推广价值的行业通用经验,嵌入到华为云Serverless产品及服务中,并在不同行业中加速复制和应用。这是华为云屡试不爽的成功经验,其背后正是得益于像南风、瑞冬这样的兢兢业业的团队成员的默默付出。

这几年你一定听说过业界流传的有关华为的“传说”,但当你了解了像南风、瑞冬这样的华为云Serverless团队中的骨干如何苦干、实干、巧干,你也许会感慨,其实所有的“传说”并不神奇,因为都来源于长期磨炼和辛勤付出。在具有开创性的云原生时代,我们希望看到更多“传奇”,当然更不会忘记那些塑造“传奇”的每一个“天选打工人”,因为他们“真帅”!