Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blog: add apisix-2024-ospp #1839

Merged
merged 3 commits into from
Jan 13, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions blog/zh/blog/2025/01/13/apisix-2024-ospp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
title: "学生专访|Apache APISIX 陈焕新——开源不是拦路虎,勇敢迈出第一步"
keywords: ["Apache APISIX", "开源之夏", "OSPP", "云原生"]
description: 本期开源之夏 2024 学生专访来自 Apache APISIX 社区中选学生陈焕新,他在本届活动中承担的项目是:集成 AWS 和 GCP 的 Secrets Manager。
tags: [Community]
image: https://static.apiseven.com/uploads/2025/01/13/LP9Z0ZkM_ospp-cover.jpg
---

> 本期开源之夏 2024 学生专访来自 Apache APISIX 社区中选学生陈焕新,他在本届活动中承担的项目是:集成 AWS 和 GCP 的 Secrets Manager。
<!--truncate-->

项目链接:[https://summer-ospp.ac.cn/org/prodetail/248020128](https://summer-ospp.ac.cn/org/prodetail/248020128)

![ospp-2024-apisix-contributor](https://static.apiseven.com/uploads/2025/01/13/YyPI4iTX_ospp-1.webp)

## 自我介绍

### OSPP:请介绍一下自己。

陈焕新:大家好,我叫陈焕新,目前在广州大学网络空间安全专业读大三。主要的技术栈围绕后端开发/安全研发展开,平时写得比较多的语言为 Java/Go/PHP。在学校会打一些 ACM/CTF 比赛,喜欢摄影/开源/旅行。我的 GitHub 账号为 HuanXin-Chen,未来的一段时间里将会专注于服务端开发,如果有同学和我志同道合,欢迎随时和我交流 👏

### OSPP:你是何时开始接触开源和开源项目的?有什么契机?

陈焕新:我是在大二上 11 月份的时候,开始接触开源。很早之前,我就开始关注OSPP官方公众号,但是我一直没有勇气去尝试,感觉开源是那么的遥不可及。但正好去年,我隔壁学校的一个学长他的参与经历出现在了公众号,当时对我来说是一种很大的鼓舞。我相信学长可以做到,**我只要努力,一定也可以**。在那之后我加了学长微信,了解了一些参与开源的流程,自此慢慢接触开源。同时开始选择性去参与一些线下的 meetup,并**在 meetup 上去开始发表一些自己的疑问和看法**。

![Huanxin Chen at Open-Source Meetup](https://static.apiseven.com/uploads/2025/01/13/tpUm2K1a_ospp-2.webp)

而对于我所选的开源项目,Apache APISIX,我是在实习的时候开始了解到它。因为我当时在实习公司负责 API 网关的建设性工作。网关对于我来说很是陌生,而深度了解学习这一背景的技术路径也很明确,那就是站在巨人的肩膀上学习。所以我在那个时候,开始在 GitHub 看看前辈们的代码,开始研究 Kong/APISIX/Higress 的源码。而刚好 OSPP 今年 APISIX 有课题,与我的专业也比较契合,便毫不犹豫选择参与其中。

### OSPP:据了解,你积累了不少竞赛经验和项目实习经历,结合自己的实际体验,不同形式的项目实践和开源项目实践有什么区别?

陈焕新:是的,我在学校属于“又菜又爱玩”的计算机玩家,什么都会去尝试一些。

**关于比赛**,对于我来说更多锻炼的是基础知识的扎实能力以及团队合作能力。我在中学的时候开始学习编程,第一门语言是 C++,当时也和奥赛班的同学学了一些基础的算法知识。所以到了大学,更多的是通过比赛,去锻炼自己的基本功:编码能力+数据结构理解能力。当然还有的就是团队精神,像 CTF 这种团队比赛,获得成功永远不是一个人的队伍,你需要和队伍密切合作,达成共识,才有机会胜出。

**关于开源项目实战**,我觉得是在竞赛的基础上再上一步,这个时候你已经有改造创造世界的能力。除了基本编码能力,你需要有一定的技术积累,你需要达到这个项目的沟通门槛。所以往开源实战这步走,是一种技术人成长之路的自驱吧。与之相比就是项目实习,我觉得这两者从技术的帮助上,对个人成长都差不多。不过后者会有 DDL+OKR 等限制,你是在为公司创造利益,面向 PM 编程。而开源不是,**你可以随心所欲在互联网上表达自己的技术热情,在互联网上创建属于自己的东西**。其次就是解决的问题,开源项目解决的更多是一些通用问题,提供强有力的基础设施,而项目实习更多是解决一些企业特有的业务问题。

## 参与开源之夏

### OSPP:请介绍一下你在本届开源之夏中承担的项目,分享一下你对该项目的理解和成果产出。

陈焕新:本次我承担的项目是 Apache APISIX,它是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

网关嘛,很简单的理解就是代理转发,但“横看成岭侧成峰,远近高低各不同”,从不同的角度理解,你会发现很多不一样的知识。随着我的深入,你可以理解为它也是一个大而全的 Web 系统,可以在这里接触到一些分布式/微服务的知识。

从服务提供方视角,提供能力越来越多,接入业务也越来越多;从内部研发视角,人力越来越多,需求越来越多。API网关相当于一个聚合者作用,将各子服务聚会在一起,做了一个业务层面的聚合管控,减少服务之间的笛卡尔积,提升研发效率。

APISIX 是站在前人基础上做的开发,基于 Nginx+LuaJIT 来做开发。而市面上也有其他的网关采用此技术,比如 Kong,但 APISIX 与之相比有如下的优势:

- 无数据库依赖:选择 etcd 存储信息,可以控制做毫秒级别更新
- 高性能路由匹配:基于 RadixTree,达到 O(K) 的复杂度匹配
- 精细化路由:除了基础的内置配置,APISIX 还自研了很多特性
- 多语言插件:用户可以选择 Lua、Go、Wasm 等编写自己的插件

篇幅有限,这里列举了一些比较容易理解的优势,很多的特性与思想,值得我们去学习。

![Apache APISIX Diagram and Advantages](https://static.apiseven.com/uploads/2025/01/13/kdwIbRuB_ospp-3.webp)

而本次我负责的,是将 Apache APISIX 与这些 secret manager(HCV/AWS/GCP)集成,可以简化用户在 APISIX 中使用敏感信息的流程,让用户更加便捷地管理和使用存储在云端的敏感信息,提高整体系统的安全性和易用性。

### OSPP:目前项目开发进展如何?在开发过程中是否遇到了挑战或者有趣的经历?你是如何应对的?有什么收获么?

陈焕新:目前项目进展全部顺利完成。在开发中确实有遇到一些比较有趣的经历,我举一个测试遇到的困难吧。因为我需要集成流水线跑测试,那么在不提供任何现有服务情况下,解决方法是通过 docker 拉一个本地模拟,或者是通过 Mock 去拦截。其中有一个 URL 我需要去 Mock 掉他。但是因为 URL 中出现 “:” ,导致 Mock 规则方法失效。我想了很多方法,后面我利用 APISIX 的本身,去解决了这个问题,即通过 Serverless 拦截转发。感觉非常有趣的一次思考,像是“以己之矛,攻己之盾”,也进一步加深了我对于网关的理解。

### OSPP:导师对你的评价颇高,不仅局限在项目产出本身,还体现在社区的参与和导师的沟通上,在这方面有什么经验可以分享给大家。

陈焕新:其实我觉得我是一个不太会沟通的人,所以正是因为不会,我在每次需要沟通的情况下,都会**努力降低好每一次沟通成本**。比方说:我在学校当助教给同学讲课,那么我会**提前制作好讲义+感知好同学一些可能的疑问,从而去减少真正沟通时的思考成本**。再比如说:开源过程或者实际项目的对接过程中,我都会**把自己的思考梳理成一个别人也能看得懂的文档,这样能快速让别人陷入自己的 idea 中**,避免过多的解释成本,从而提升效率。

### OSPP:在开源社区的体验如何?你对开源有没有新的理解?

陈焕新:这次开源活动的体验非常棒,不管是从前期准备,再到后面的开发中,沟通研发体验都非常顺畅。很开心能遇到一个氛围很好的开源社区,以及一个很给力的导师。我的导师白泽平也是之前 OSPP 的参与学生,他以一个过来人给了我很多经验帮助,非常感谢!对于开源理解,我觉得很大的感悟就是:开源从来不是什么拦路虎,从来不是什么权威,时刻保持好奇心,将你的想法大胆展现出来,勇敢迈出第一步!

## 寄语

### OSPP:你会一直参与开源吗?你觉得参与开源对于计算机专业的大学生有何帮助?你所在的高校目前是否有开设开源相关课程?你身边同学参与开源的情况是否有了解?如果让你来鼓励高校学生参与开源,你会从哪些方面进行?

陈焕新:对于计算机专业的学生帮助,我觉得有如下几点:一是通过开源之夏这个平台,提升工程能力;二是通过开源参与,丰富自我作品集,提升就业竞争力;三是培养协作能力,提前掌握企业级的协作沟通能力;四是通过开源活动,辐射出去,扩充交际圈,认识更多优秀的人。

目前我所处的高校并没有开设相关课程,但是隐隐约约感受到学校其实也在开设注重学生的工程能力。有一些老师开始引导同学去使用改造一些开源软件,比如说我之前的数据库就是让我们去修改 postgre,开始让我们去了解开源软件并改造它。

我身边的同学并不是很了解开源,可能是我所处的圈子问题,大部分同学还是专注于一些比较知名的比赛,如 ACM/挑战杯等。所以如果让我来鼓励同学参与开源活动,我想我会参考挑战杯之类比赛,力争达到其知名度,让大家知道有这个活动可以参与。其次就是通过开源学生,让每个学校的中选者为代表,在其学校散播这种活动宣传,提升本土影响力和代表性。

### OSPP:有什么话想对计划参加开源之夏活动的学弟学妹们说?

陈焕新:想说的话:首先,学弟学妹不用害怕,请勇敢迈出第一步,也许可能努力,但没有中选,但不要气馁,活动参与是形式,相信你在准备的过程中,也会有一个质的飞跃。其次,可以提前了解好自己感兴趣的领域知识,在开源前息保证自己有项目沟通的能力,达到参与的门槛。最后,请多和身边的人沟通,多和导师沟通,不断磨练自己的想法,切勿闭门造车。
Loading