专访|SOFAStack 社区 陈文韬:记第一次开源项目实践

开源之夏专访持续开放中,欢迎已从开源之夏毕业或正在参与开源之夏活动的学生、导师一同加入专访行动,扫描文末二维码填写专访问卷,与大家分享你眼中的开源之夏!
本期采访人物是开源之夏 2023 活动 SOFAStack 社区中选学生陈文韬同学,他所承担的项目是 开发一个客户端,支持 Biz 模块的热部署和热卸载,初步实现 Serverless 体验。
项目链接:https://summer-ospp.ac.cn/org/prodetail/2395a0267

# 关于陈文韬
OSPP:请简单介绍一下自己。
陈文韬:大家好,我是来自南京航空航天大学的陈文韬,今年大四,参与了 OSPP 2023 活动,现在为 SOFAStack 社区的 SOFAServerless 开源项目做维护工作。
OSPP:最开始是怎么接触到开源的呢?你眼中的开源是什么样的?
陈文韬:最开始接触开源社区是在自己的专业课的实验上。刚接触 CS 的本科生在熟悉了基本的工程理论后,总是喜欢去迫不及待地使用各种新颖的组件。当然最开始的我,对开源的惊喜还只是停留在效果之上。渐渐地我开始关注“开源”的含义,源码公开的意义在于让作为消费端的开发者能够在社区中提出最直接的使用体验,并且有机会将自己关于开源的优化逻辑纳入项目总体的考虑中,从而参与组件与架构的维护与拓展。鉴于此,关于开源的想法在我心里萌生。
# 参与开源之夏与开源
OSPP:最开始是如何了解到并决定参与开源之夏活动的?第一次通过此类活动参与开源实践你的感受如何?
陈文韬:接触到开源之夏并非偶然,我的同学 catch22 也是开源的爱好者,他参与了 OSPP 2022 的项目开发,与我分享了开源带来的收获与喜悦,鼓励我参与来年的开源活动。在第二年的五月,我的学校迎来开源之夏的一次宣讲,我就由此顺着开源热潮投入其中,在了解并尝试部署了 10 多个项目的架构后,最终选择了 SOFAStack 社区的开源项目:开发一个客户端,支持 Biz 模块的热部署和热卸载,初步实现 Serverless 体验。
OSPP:请简单介绍一下这个开源项目以及你的开发过程。
陈文韬:开源之夏是我加入开源的一个入口,而真正参与到开源活动是来自 SOFAStack 的最新孵化项目,SOFAServerless。基于蚂蚁金服的新生开源项目自然更能接纳社区新人,让我充分意识到本次开源任务不仅是对开源之夏的一次承诺,更是对 SOFAServerless 的一次交付。SOFAServerless 主要是在 SOFA 的基础架构上,完成 Arklet,Arkctl 与 ModuleController 的开发。而我需要在熟悉 SOFAArk 源码后,针对客户端 Arklet 已有的部分设计与逻辑的基础上完成进一步优化,并在后续提供相应的特性支持,例如基于指令拓展与 SpringEndpoint 的健康检查能力。

在 Arklet 项目组中,主要由我、宋国磊(卫恒)老师、来自蚂蚁的赵真灵(有济)老师、张冯君(远远)老师和来自阿里的张建明(明门)老师参与,其中真灵老师是 SOFAServerless 的 Maintainer,由国磊老师以及冯君老师、建明老师提供思路和技术上的指导。由于 7-9 月是密集开发时期,我们 SOFAServerless 每双周都会开一次开发迭代会议,对焦各个组件的开发进展。在后续也会针对组件的能力与特征更进一步的拓展。

OSPP:在开发过程中有遇到什么困难或挑战么?你是如何克服的呢?导师和社区成员们有为你提供帮助么?
陈文韬:最大的问题并不是在于 Arklet 本身的开发,而是在设计健康检查模块的时候,我额外地去编写一个庞大且冗余的模块,完成指令的扩展。在我完成能力的实现后,建明老师的意见让我十分印象深刻:因为 Arklet 不只支持 Spring,所以我一开始的设计思路是核心业务与 Spring 依赖分离;而面对新的特性时,应该是需要分开地去实现核心应用与支持依赖。这种思路不仅适应于中间件开发,在后续多维度开发中也可以应用。在了解到具体拓展的思路之后,我也重新梳理代码,并成功交付。
我对于项目的持续集成并不熟悉,但是很幸运的是,本次活动也让我第一次参与高效的工作流开发。由于维护的开源不只有我个人负责开发,因此需要更为重要的版本控制流程。除了正常的为项目配置 PR 准入规则之外,SOFAServerless 还额外配置了更加健全的 CI,通过启动了 CodeCov,在自己的分支下编写单测,在行测覆盖率到达一定指标后才能被维护者 review,这也让我全新地认识到 CI 的流程已经可以如此专业,打消了我对工业型项目管理的疑虑。
OSPP:你眼中的 SOFAStack 是一个什么样的开源社区?
陈文韬:SOFAStack 是在我眼中是年轻有活力,创新且友好的社区,从蚂蚁来的开源爱好者都有很强的业务与工程能力。并且老师们也愿意带我逐渐理解整套开发思路与工作流程。而且 SOFAServerless 每双周的月会我们都会跟踪一下各自的任务,并且讨论一下开放的 issue,这样负责且充满活力的生态我真的非常喜欢,也让我对开源提高了兴趣。
关于 SOFAStack 社区
SOFAStack™(Scalable Open Financial Architecture Stack)是一套用于快速构建金融级云原生架构的中间件,也是在金融场景里锤炼出来的最佳实践,并且具备以下特点:
* 开放:技术栈全面开源共建、 保持社区中立、兼容社区 兼容开源生态,组件可插拔, SOFAStack 组件与其它开源组件可相互集成或替换
* 金融级:包含构建金融级云原生架构所需的各个组件,让用户更加专注于业务开发,满足用户场景的现状和未来需求,经历过大规模场景的锤炼,特别是严苛的金融场景
* 云原生:基于 SOFAStack 可快速搭建云原生微服务体系,快速开发更具可靠性和扩展性、更加易于维护的云原生应用
官网:https://www.sofastack.tech/
OSPP:之后是否打算继续参与开源社区或开源项目?为什么?
陈文韬:之后我会继续参与开源社区与开源活动,因此很感谢开源之夏的活动给我一个机会参与 SOFAServerless 的构建,并且之后我将投入到 Arklet 的维护与拓展工作中。同样地,本着对云服务的热爱,后续我也会参与服务架构的开源社区中,以及会申请 CNCF 基金会的项目。
# 收获与寄语
OSPP:参加开源之夏活动为你带来了哪些收获?
陈文韬:本次开发过程中,我对于整体的项目规划与项目开发有了更加系统的了解,在工程部署上也有了更加成熟的思想。在代码上也会更加遵守规范,并且最关键地是在部署模块时,建明老师和我说了关于核心模块与依赖模块的分离思路,这让我在后续遇到中间件开发时有着更为成熟的经历。本次的工程经历,对我整体项目统筹与代码编写都有很大的提升。最后要感谢我的导师宋国磊老师,来自蚂蚁金服的赵真灵老师和张冯君老师和来自阿里国际的张建明老师在开发的过程中给我提出的修正与鼓励,你们的肯定将会是我在开源路上前进的动力!
OSPP:你认为高校学生如何才能更快的融入社区更好的参与开源?有什么经验和建议么?
陈文韬:对于高校的学生而言,参与开源的首要前提就是了解开源的动机。除了作为开源社区可以在高校内开展开源沙龙等技术交流活动来宣传之外,我觉得作为学生可以更加主动地去了解开源。针对专业课上的知识与科研的工程实验,我们不妨从更加宏观的,商业的角度去思考关于课上或工程上的需求在当今有哪些主流解决方案?而又有哪些社区在针对这一系列问题研发出了成熟的运维体系?在尝试体验之后,我们就需要去关注使用的体验,以及辩证地去思考增强与拓展的可能性。
OSPP:你是否会推荐高校学生参与开源与相关的开源活动?为什么?
陈文韬:我会推荐高校学生参与开源与开源相关的活动。对于科班生而言,参与开源将会锻炼自身的工程能力,系统地了解多人协同办公的工作流程。相比于高校内部开展的工程与设计,开源活动的工作会有不一样的收获。而对于非科班生而言,开源活动是接触工程最直接的媒介,具备上述带给科班生同样的锻炼机会外,更能带来非常爽快的开发体验。
OSPP:有什么话想对计划参加开源之夏活动的学弟学妹们说?
陈文韬:可能开源活动对你们来说很陌生,也有难度,但是请勇敢迈出第一步。当你们开始参与开源活动后,定会收获非凡的体验!
END
专栏编辑:大梦
校对:校大山、陈文韬
制图:GoodWhite

专栏投稿请联系开源小助手:kaiyuanzhixia 或专栏编辑:Hungryfish34(备注“专栏投稿”加速通过),或填写下方专访信息收集问卷。
