为研发效能而生|一场与 Serverless 的博弈

时间:2022-11-21 17:00:44

为研发效能而生|一场与 Serverless 的博弈


2022 年 11 月 3 日,第三届云原生编程挑战赛即将迎来终极答辩,18 支战队、32 位云原生开发者入围决赛,精彩即将开启。


云原生编程挑战赛项目组特别策划了《登顶之路》系列选手访谈,期待通过参赛选手的故事,看到更加生动鲜活的中国开发者。


2022 云原编程挑战赛共吸引了 17900+ 支队伍,超过 18000+ 选手报名参赛,覆盖中国、美国、德国、加拿大、新加坡等 13 个国家和地区,汇聚 440+ 国内外顶尖高校和 240+ 领先企业,企业选手占比达 30%+,其中决赛企业选手占比达 75%,大赛规模再创新高!


本次我们邀请了来自中原银行股份有限公司的战队「为研发效能而生」—徐志亮、岳同书同学,针对参赛历程与感悟进行了一次深度采访。


深度采访


两位是在什么背景下了解到阿里云云原生编程挑战赛,是什么吸引了你们组团参赛? 


徐志亮:我们是通过阿里云云原生公众号了解到,作为云原生*品牌赛事,已经举办到了第八届,它的比赛内容都是围绕热门技术领域,对于开发者来说非常有影响力和挑战性。同时,大赛的奖励也很有吸引力。


中原银行对云原生架构建设高度重视,已经制定了完善的云原生技术发展战略。我们所在中原银行的工程效能团队,致力于持续改进提升企业级研发效能水平。通过参加本次比赛有助于加深我们对于云原生架构的理解,进一步拓展我们的技术视野,为今后云原生架构相关应用研发实践提供更多的思路与启发。


本次为何选择了赛道三作为参赛方向?


徐志亮:Serverless、云端开发都是近些年的热门话题,之前对于 Serverless 的了解更多地处于技术原理认知层面,本次参赛能够给我们一个深入技术实践的机会。同时IDE 是我们开发者每天都在用的软件开发生产力工具,所以对于赛道三题目的理解上会更加深入一些,因此选择了赛道三作为我们的参赛方向。


对赛道三:之前对Serverless架构方向有接触吗?针对实现一个 Serverless 架构的 Web IDE 服务的理解如何? 


岳同书:之前了解过 Serverless 架构的一些知识,但并没有深度进行过Serverless架构应用实践,所以本次参赛对于我们来说,挑战还是比较大的;


就赛道三的赛题来看,Serverless 架构的特点与 WebIDE 服务的业务场景是契合的,但美中不足的是 Serverless 架构要求的“无状态”与 WebIDE 服务的“有状态”之间存在矛盾,如何安全、高效的存储和恢复数据便是重中之重,参赛期间赛道三的导师也给了我们很多的帮助和启发,在这里要特别感谢他们;


Serverless 架构按量付费、灵活的弹性伸缩策略,以及更高的资源利用率,都是相较于其他方案的显著优势。


两位在参赛过程中有遇到什么挑战吗?你们是如何解决的?攻破后对您的技术方面有什么帮助吗?

岳同书:第一个挑战是我们对于函数计算平台并不熟悉,大概花了几天的时间通读了所有的技术文档,列出了一些我们可能会用得上的特性,逐步论证形成了最终的技术方案。高质量的技术文档对于提升开发质效至关重要,这点要给函数计算团队点赞,通过阅读文档,基本解决了绝大多数问题。


第二个挑战是技术方案的经济性,如何以最小的成本投入来完成参赛目标,这也很大程度上影响了我们技术方案的制定和优化调整。举个印象最深刻的例子:最初我们计划通过泛域名解析来实现不同租户的 WebIDE 服务访问,但后来动辄几千块的泛域名 HTTPS 证书使得我们最终放弃原先方案,促使我们进行了第一次技术方案的优化调整。


第三个挑战是开发过程中不断出现的技术难题,如:如何中断 Open VSCode 的长链接实现资源利用率的优化、如何解决多个 WebIDE 实例在同一域名下访问时出现的静态资源文件丢失、IndexedDB 错乱等问题。面对这些长时间困扰的阻碍问题,我们耐心深入钻研源码,最终圆满解决上述问题,进一步提升了我们研究解决技术难题的实践能力。


两位目前任职的公司岗位经验,在参赛过程中有带来什么灵感吗?


岳同书:为了给开发者提供开箱即用的体验,我们决定给 WebIDE 增加“环境模版”这个特性,因此需要基于不同编程语言来定制基础环境、编译工具、构建工具与依赖源配置等。这里结合了函数计算平台的 Custom Container 功能,本质上不同的“环境模版”就是一个个不同的容器镜像。这个功能的实现借鉴了实际工作中的业务场景,即在持续集成流水线运行环境中也面临同样的问题,不同的工程使用不同的开发语言与不同的编译工具,解决构建环境的可复制性与 WebIDE 的“环境模版”特性不谋而合,这给我们带来了很大的灵感助力。


作为赛道三中的一支优秀团队,两位认为在这次参赛过程中,都收获了什么?有没有什么感悟可以跟大家分享的~


徐志亮:首先,通过此次参赛进一步加深了对于云原生架构的理解,比赛的过程也是我们对于云原生、函数计算等技术深入学习和应用的过程。其次是角色的转换,从IDE的使用者转换为了WebIDE的设计者和开发者,新的视角带来了全方位新的思考。另外,我们也是站在巨人的肩膀上进行具体实践,本次作品借助了开源 Open VSCode Server和阿里云一系列产品的能力,体验到了开源技术的力量和阿里云基础设施的强大。最后,团队合作的力量非常重要,在参赛过程中我们不断遇到问题、解决问题,最终达成了预期目标。


目前阿里云云原生编程挑战赛已经连续举办了很多年,近几年企业选手的参赛比例越来越高。其中,很多选手前期参与较多,但最后因为跟工作时间的冲突导致放弃或者需要熬夜去完成这个比赛,两位有这样的情况吗?


我们主要利用工作之余的时间,坚持完成了此次比赛,可以说是身体和心理的双重考验。在这个过程中经历了前期没有头绪和把握,中期不断遇到困难与挑战,几次调整甚至推翻已实现的功能,到后期争分夺秒地进行优化完善,最终尽我们最大努力完成了预期目标。


这次参赛经历会在两位自身的技术方面带来什么帮助吗?


徐志亮:一是加深了对于云原生架构的认识与理解,积累了相关实践经验,拓展了我们的技术视野,对今后工作也会有更多的思路启发。二是锻炼了我们学习新技术与钻研解决问题的能力,赛道三主要涉及Serverless、云端开发与IDE等多个技术领域,通过参赛进一步促进提升了我们的综合技术能力。三是促进提升了编码能力,巩固了我们对于前后端技术的综合应用能力。


之前有过使用阿里云的产品或参与过阿里云的一些开源项目吗? 


岳同书:本次参赛过程中我们团队就深度使用了阿里云“云效”产品的需求管理、持续集成等功能,解决了我们团队内部的需求协作、进度协同等问题,提升了我们研发协同的工作效率。尤其是“云效”的持续集成能力,有效解放了我们的生产力,让我们有更多的时间去思考设计与解决问题。


两位对 Serverless 和开源社区的看法,未来是否愿意投入到社区的建设中?


岳同书:参赛过程中,其实我们一直有用到 "Serverless Devs" 这个工具来做调试发布,经过我们深入了解,它是一个以开源形式建设,无厂商锁定的 Serverless 开发者平台。目前,国内越来越多的企业和开发者都积极参与开源社区,拥抱开源技术,为开源技术贡献自己的一份力量。一直以来,我们也在利用业余时间为开源社区贡献自己的力量,主要包括翻译文档、功能特性开发等。


徐志亮:我们也是抱着学习的态度来了解和尝试云原生架构应用建设的。云原生是以容器化为基石,以容器调度与编排作为基础能力,以 DevOps 和 CI/CD 为应用场景,帮助开发人员在云上构建和运行可扩展的应用程序。基于云原生架构理念,软件开发、测试、运维乃至整个软件工程生命周期都发生了变化。面向未来银行数字化战略实践,我们需要持续关注云原生等各项新技术的演进发展,拥抱变化,拥抱云原生。


11 月 3 日,两位将要来到杭州进行赛道三的决赛答辩,可以说说团队的口号以及灵感吗?


徐志亮:我们的口号是“为研发效能而生”,这也是我们所在的工程效能团队的 Slogan。我们致力于不断改进提升研发效能,打造基于云原生架构的企业级一站式研发运维协同(DevOps)平台,赋能研发团队持续交付高质量的业务价值,助力企业数字化转型创新发展。