说在前面
在扬帆破浪的2022年里,有一批可爱的数帆同事在工作中、工作外凭热爱发光发热。
一个个小故事背后,呈现出他们在数字化技术与应用实践中,步履不停的探索和开拓进取的力量。
今天是「破浪人」栏目第2期。
受邀成为Envoy 社区国内首位且唯一的 Maintainer,网易数帆资深架构师王佰平讲述个人四年开源贡献的心得体会。
Envoy Maintainer 是 Envoy 项目多个技术领域的 owner,负责这些领域的发展方向、质量保障等,是项目的核心人物,需要具备高度的责任心和足够的技术敏感度。
王佰平获评截图
数字化浪潮下,云原生底层核心技术趋于成熟。根据中国信通院《云计算白皮书(2021年)》,2020年国内微服务架构采用率超过50%,服务注册发现与服务代理技术已进入成熟期,而作为新一代微服务架构的服务网格(Service Mesh),也即将从技术爆发期进入整合期。
网易数帆是国内云原生应用的先行者,率先实现了经典微服务框架与服务网格的整合、服务网格与 API 网关的整合,更实现了云原生架构与金融、制造等传统行业需求的整合,这些整合也获得了中国信通院以及银行、证券行业头部客户的认可。在这结果的背后,是云原生社区技术和生态不断成熟,更是网易数帆云原生团队坚持参与开源社区贡献。
本文所说的 Envoy,是云原生计算基金会(CNCF)第三个毕业项目,也是网易数帆轻舟服务网格及 API 网关的数据面选型,和重点贡献项目之一。目前轻舟团队已累计向 Envoy 社区贡献 60+ PR,超过 14000+ 新增代码,覆盖了 Envoy 的有状态会话保持、Tracing 能力增强、Lua script 的支持和 Dubbo 治理能力增强等核心功能。
Envoy(github.com/envoyproxy/envoy )是由 Lyft 开源的高性能数据和服务代理,以可观测性和高扩展性著称,可通过 L3/L4/L7 插件机制在各个层级实现功能扩展,从而为业务构建灵活易扩展、稳定高性能的服务网格、API 网关等基础设施。
近日,Envoy 社区邀请网易数帆云原生专家、资深架构师王佰平成为社区 Maintainer——这是国内首位且唯一的 Envoy Maintainer,同时也是 Dubbo Extension Senior Maintainer,表明了社区对网易数帆持续贡献的认可。在本文中,小编邀请王佰平分享了他从参与开源到成长为知名项目 Maintainer 的经验心得。
演讲者为王佰平
2019 年,网易对服务网格技术应用的探索到了一个新阶段,网易数帆与网易严选基于 Istio 共建的第二代服务网格平台逐步成型,王佰平在这个时候加入网易数帆,从事和数据面 Envoy 相关的工作。秉承网易数帆坚持开源开放的技术路线,王佰平从那个时候起关注 Envoy 社区的一些动态。
此后,在轻舟微服务平台采用 Envoy 落地 API 网关、服务网格的过程中,王佰平偶然间发现了 Envoy 的一些小 bug ,就尝试把这些 bug 的修复贡献给 Envoy 开源社区,意料之中地被社区立即接受,这成为他 Envoy 开源贡献的良好开端。
随着网易数帆云原生实践的不断深入,轻舟微服务团队对 Envoy 的侵入性修改越来越多,维护内部单独的 Envoy 分支的成本也逐渐增加。为了避免后续和社区的分歧越来越大,也为了更好的借助社区的力量往后演进,团队开始投入较多的精力到开源社区当中,将内部的一些增强抽象化、通用化之后,贡献到开源社区。
整个过程下来,一方面,轻舟微服务团队的技术积累和对 Envoy 的理解程度提升了很多。因为社区有来自全球不同地区、风格习惯各异的贡献者,为了保证工程的长期健康,除了功能的完善,各种编码的约束和规范也细致得多,所以贡献给 Envoy 社区的代码,编写要更为小心谨慎,要求非常高,当然在此过程中也会获得很多社区大佬的帮助。另一方面,Envoy 社区也获得了更多有生力量的支撑,轻舟团队的贡献使得 Envoy 项目的优势得以充分发挥,也更适合国内大量 Dubbo 用户的需求。
“这是一个 win-win 的过程。”王佰平说。
2021年,在网易集团的引导和鼓励下,网易数帆自主开源工作迎来了一个小高潮:一方面,在云原生领域一口气开源了4个项目,包括基于 Istio 和 Envoy 的服务网格管理器 Slime(github.com/slime-io/slime )和云原生 API 网关 Hango(github.com/hango-io/hango-gateway );另一方面,作为 Spark 生态的 Kyuubi 项目被纳入 Apache 基金会孵化器,Spark 和 Kyuubi 的负责人燕青成为 Apache Spark Committer,并入选 Databricks 灯塔。这些成果获得了管理层的肯定。
在这背景下,王佰平也立下了一个小小的 flag——希望能在 2022 年成为 Envoy 社区 Maintainer。一方面,他向社区说明了自身成为 Maintainer 意愿。另一方面,除了创建 PR 向社区贡献之外,他开始在自己较为熟悉的领域做一些 PR review,帮助其他的贡献者完成他们的 PR。“开源社区其实很纯粹简单的。”他说。
付出终有收获,王佰平提前 8 个月达成了目标。谈到自己的感受,他这样说:
在成为 Maintainer 之前,我曾想过如果能成为 Maintainer,一定能给我乐疯了。实际上,高兴确实是高兴的,可是也没有那么激动,只是一种自己付出得到承认的舒心感。
对于 Envoy Maintainer 的角色,他表示,之前之后所做的事情其实差别并不大,包括日常的社区的相关 PR 的一些 review,问题解答,引导新人,做一些新的贡献。当然,责任是更重了一些。因为之前做 PR review、做贡献其实都是非强制的,而成为 Maintainer 之后,就有了相关的义务。
回顾之所以能成为 Envoy Maintainer,王佰平给出了三个关键因素:
第一个,是团队的支持。团队给予的角色定位让他有更多的机会去深入的研究 Envoy,也给了他充分的自由去投入到开源社区。这也是最关键的因素。
第二个,是持之以恒。做开源贡献是很需要耐心的。有时候,因为 reviewer 很忙,可能一个 PR 要挂在那里十几天,要适应这种节奏。
第三个,是 Envoy 社区提供了巨大的帮助,有很多大佬仔细地帮忙 review 方案和 PR,给出修改建议。
谈到为什么国内的 Envoy Maintainer 如此稀少,而 Istio 社区有更多的关注度和国内 Maintainer,王佰平认为这是一件很正常的事情。他解释说,虽然服务网格很火,但是目前多数团队对于数据面 Envoy 还是停留在“使用”的阶段——Envoy 设计复杂,且采用 C++ 编写,性能更有保证,但在人均 Golang 的云原生社区颇显另类,较难驾驭,而借助 Service Mesh 或者说 Istio(国内 Mesh 基本就等价于 Istio 了)的封装,大家不用太关注 Envoy 的细节。这其实也是 Istio 存在的很重要的意义。
不过,他也希望后面会有越来越多的国人能够参与到 Envoy 社区当中。根据网易数帆的经验,Envoy 在更多业务的深度实践,必然对技术团队的 Envoy 关键基础组件掌握能力提出更高要求,如此才能保证团队对项目的理解和有效控制,保持云原生落地过程中微服务平台对业务需求的强力支撑。比如在一些金融领域场景中,就会存在私有协议代理或者复杂协议转换等需求,团队如果对数据面没有足够的把控,就很难覆盖此类需求。而参与开源社区显然是学习和掌握 Envoy 最快的方法。
对于参与开源社区贡献,王佰平总结了三个普遍的原则。
一是要保持谦虚。因为技术领域真的是人外有人,天外有天。而谦虚真诚的态度更容易获得他人的帮助。
二是要持续学习。在一个大开源社区当中,由于模块众多,领域划分很细,所以一个人很难一开始就能 cover 所有问题。这就需要参与者保持持续学习的精神,取长补短,逐步成长。
三是要遵守规则。任何开源社区都有一些基本的规范,作为社区的后来参与者,应该尊重社区前人构筑的规范。
这些原则可以在参与社区的过程中慢慢体悟。王佰平认为,最重要的其实还是第一步,就是主动去参与。
提出 issue 和建议也好,辅助代码 review 也好,做最简单的一些贡献也好,千里之行,迈出第一步是最重要的。
以 Envoy 而言,社区对新人还是非常友好的,大家会非常热情地提供新人需要的帮助。当然,考虑到很多社区成员不是全职做开源,Envoy 是国外团队发起的项目,交流时间不同步是正常的,所以可能有一些延迟响应的情况。“不要羞涩,多 ping 几次就好了。”王佰平说。
那么,非全职参与开源的情况下,商业化客户项目工作繁重,如何能做出想要的成绩?对此,王佰平的答案仍然是要迈出第一步并坚持。他表示,首先,作为商业化团队,保障客户项目任务始终是第一位的。其次,假设项目任务当中,可以汲取出对于开源有价值的一些点,那是最好的。再者,相比于突击式开源,细水长流,持之以恒,可能更有价值。最后,万事开头难,虽然中间也难,结尾也难,但是开头尤其难,先走出第一步,然后坚持下去,加上适当的宣传,会有一个好结果的。
谈到团队自身开源的项目,王佰平表示,希望 Slime 能够成为服务网格落地的必不可少的标配组件,希望 Hango 可以成为开源云原生网关领域的领头羊。当然,目前这些项目在开源领域还是新人,还需要沉淀和积累更多的东西,也需要更多的来自用户和社区本身的意见。
他也意识到, Envoy 这样的项目很可能是不可复制的。
对于我个人来说,我们的开源项目只要能够为一部分用户或者社区成员带来价值,同时能够给团队带来正向反馈,那就算是成功了,路可以慢慢走嘛。
权威机构和头部客户的认可,以及 Envoy 社区的承认,让团队相信,自己是走在正确的道路上的。
相关链接: