阿里云原生开源大家族共有:开源数字生态地图的中国力量

作者|OpenYurt 社区

采访|和谐云开源团队成员(浙江大学软件学院研究生)陈涛;刘家文,和谐云开源团队成员(浙江大学软件学院研究生);陈璐,同济大学软件学院研究生

p>

01

背景

云原生

2021年,中国开源软件促进联盟COPU将牵头发布《2021中国开源发展蓝皮书》,涵盖全球开源整体形势分析、开发者分析、项目分析、现场案例等今天,又绘制了一张“开源数字生态”地图。让我们充分看到开源领域的中国力量。报告指出,在国内企业中,阿里巴巴的开源活动排名第一,一些指标甚至是总和其他公司,他们在社区/开放方面也做得很好。

同年,在中科院软件所面向大学生发起的第二届“开源软件供应链亮化计划系列暑期活动”,即“开源之夏”中,阿里云的原生开源家族共有14个开源程序。项目进去。通过积极参与活动,在顶级开源导师的指导下,学员们深入体验了现实世界的软件开发,感受了开源技术共建的魅力,为国内优秀开源的蓬勃发展做出了贡献。软件社区。 .

虽然距离“开源之夏”已经过去了半年多,但阿里云原生开源的OpenYurt项目,却因其非侵入式的设计理念、丝滑的体验而被多次提及。部署过程,“易用性”,社区活跃开放的氛围,可期的发展方向,依然吸引着越来越多热爱开源的伙伴参与。在“开源之夏——OpenYurt体验中心”开源社区源码,学生可以快速上手,以低门槛参与项目,解决实际问题。从旁观者到社区贡献者,让我们来看看他们的真实感受,以及他们通过采访获得了哪些意想不到的好处。

02

面试问答

云原生

请介绍一下自己,让大家都认识你~

陈涛:大家好,我叫陈涛,目前是浙江大学软件工程专业的研究生。刘嘉文:大家好,我叫刘嘉文,目前是浙江大学软件学院研究生二年级的学生。

陈璐:大家好,我叫陈璐。现为同济大学软件学院研究生。

你的爱好是什么?你是什​​么时候开始爱上编程的?以及如何接触“开源”文化?

陈涛:平时的爱好是看书、看电影、跑步。抛开高中的计算机课程,真正理解深度编程,是因为本科生选择了软件工程专业。作为一个新手,起初在与计算机建立“交流”的过程中遇到了很多困难,但随着专业知识的不断扩展,我逐渐爱上了编程这种直接而合乎逻辑的人机交流方式。 .

随着计算技术的飞速发展,很多技术问题在书本上可能是找不到的。在解决问题的过程中,你自然会接触到开源项目,因为你遇到的问题很可能会在最新的讨论中被讨论。这种开放共享的开源文化在我看来也是计算机技术快速发展的重要创新源泉。

刘嘉文:日常生活中除了搬砖,一般都是戏。对于编程来说,是因为专业的原因,当你慢慢接触的时候,当你产生一些东西的时候,它会带来积极的反馈,这会激励你不断地学习新的知识。在这个过程中,我接触到了开源项目。

陈璐:平时喜欢看书,乒乓球、追剧、篮球(排名依次为:>)。进入编程是因为大学时选择了计算机专业,但有幸发现自己误选的专业竟然符合我喜欢折腾的书呆子气质。

在“折腾”的路上,接触开源自然是顺理成章的事情。在服务器上建博客,尝试个人的RSS服务,去StackOverflow找答案,去GitHub提问题,有时遇到解决不了的问题自己写PR。在这个过程中,我不知不觉地参与了开源社区。

您为什么选择参加“开源之夏”,您希望获得什么?

陈涛:以前主要是在社区潜水。大部分时间只是看看有没有什么“轮子”可以解决问题,但一直有造轮子的想法,也希望能参与到开源暑期的进程中。 ,从旁观者到贡献者。

刘家文:在参加开源之夏之前,我已经在参与 OpenYurt 社区。后来看到OpenYurt也参加了Open Source Summer,所以选择了参加这个活动。一方面想对相关技术有更深入的了解开源社区源码,另一方面可以积极参与社区贡献。

陈露:“开源之夏”有安利同学参加。一开始,我只是抱着试试看的心态,为自己的暑假找点事情做的。现在看来,这次活动给我带来的收获远远超出了我最初的预期。

您在参加 Open Source Summer 之前了解过 OpenYurt 吗?为什么在众多项目中选择 OpenYurt?

陈涛:由于研究生的方向是边缘计算,所以他把注意力集中在边缘计算相关的项目上。选择 OpenYurt 是因为它的非侵入式设计理念。刚接触 OpenYurt 的时候,我只用过 Docker 和 Kubernetes。我下意识地觉得,涉及到边缘的项目使用起来会比较复杂,但是无论是部署还是使用过程都非常流畅,是通过Kubernetes、容器等云原生技术实现的。融合得很好。我认为兼容云原生特性的同时支持很多边缘特性和场景是一种很好的设计模式。

陈璐:参加活动之前,我完全是边缘云原生领域的新手。只在几篇技术文章中听说过OpenYurt,OpenYurt对我来说还处于“拿着琵琶捂脸”的状态。 选择OpenYurt也希望通过这个项目在一个新的领域“看世界”,开辟新的地图。

您如何看待OpenYurt所在的边缘云原生领域的技术价值?

陈涛:随着云计算能力的不断下降,管理分散但丰富的边缘计算资源已成为趋势。同时,云原生技术作为在云背景下诞生的一系列技术,可以充分利用云计算资源,并逐渐成为一种标准。因此,在管理边缘设备的过程中,利用云原生技术屏蔽底层设备的差异,统一云上云下环境,是一个非常具有挑战性和价值的方向。

刘家文:相比其他方案,OpenYurt 对 Kubernetes 是无创的,无论是开发者还是用户都能感受到它的易用性。此外,OpenYurt还针对边缘场景的问题设计了多种解决方案,为边缘云原生领域的问题提供了不同的解决方案。

陈璐:OpenYurt 致力于打造边缘云原生领域的基础设施平台。由于Kubernetes作为事实上的云原生标准,最初是为数据中心设计的,它没有考虑很多边缘场景的特殊需求(比如不稳定的网络环境等)。 OpenYurt 正在做的是针对此类场景对 Kubernetes 进行一些非侵入性的改进和扩展。

您在刚开始 OpenYurt 项目时有遇到什么困难吗?如果有,请展开介绍一下~

陈涛:我一开始遇到的困难主要是在源码阅读上。这是我第一次面对大型结构,面对很多组件,我不知道从哪里开始。可能在看某个特性的过程中,会飘到其他代码中,甚至在阅读的时候忘记了之前的代码……这确实会给我这个初来乍到的人造成一定的挫败感,但我觉得是一个项目不熟悉时必须经过的每一个A阶段的接触。后来在熟悉的过程中逐渐积累了一些经验,比如:把握主要脉络,不沉迷于无关紧要的细节;熟练使用调试,在运行过程中可以很好的观察运行逻辑;并做更多的笔记,记录重点和想法。

刘嘉文:刚开始的时候,主要的难点是集群的建设。那时,构建社区集群的工具功能还比较简单,过程中遇到的问题还是需要人工去检查。但是现在社区相关的工具对新手来说是完美的和友好的。

陈璐:坦率地说,OpenYurt 有一定的学习成本。首先,它需要对 Kubernetes 有一个基本的了解。要了解它的设计背景,需要结合一些边缘计算的知识。那么,如果你想上手,你至少需要一个分布式的环境和一定的动手能力。当然,社区也在关注这些问题。比如我参与的体验中心项目,就是想降低使用OpenYurt的门槛。

我了解您的主要贡献是OpenYurt开发者体验中心,请介绍一下这个组件,包括设计背景、实现方法、面临的挑战、解决的问题等。

陈涛:OpenYurt 开源以来,吸引了很多关注边缘计算的开发者和用户。但由于用户背景不同,可能缺乏Kubernetes等云计算的相关知识。在使用和搭建OpenYurt集群的时候,会出现各种问题,无法发挥OpenYurt的能力。

在这种情况下,OpenYurt 社区正在考虑推出一个 OpenYurt 体验中心。用户只需通过体验中心申请账号,即可获取并连接OpenYurt集群。同时,由于体验号不在生产环境中,为了提高资源利用率,OpenYurt体验中心将采用软多租户技术,让多个租户共享一个OpenYurt集群,保证用户可以看到完整的 OpenYurt 集群,同时确保资源的隔离和安全。

在这个项目中,我主要负责运营商的开发,管理租户和相关资源的生命周期,包括租户CRD的设计,控制器的开发,以及租户证书的颁发。其中,最令人印象深刻的挑战可能涉及租户证书,因为要对租户进行身份认证,必须将相关租户信息添加到证书中。所以需要在短时间内理清整个Kubernetes和OpenYurt相关的证书管理逻辑,设计一个非侵入式的情况下,完成认证信息的注入,当时耗时较长.

刘家文:OpenYurt体验中心由多个部分组成。我主要负责多租户组件的设计和开发。简而言之,我根据请求中的租户信息对请求进行检查和修改,使租户看不到其他租户。资源状况。

在设计开发过程中,需要综合考虑租户的各种要求,以及如何处理相应的要求。最终,体验中心可以为租户提供高安全性。另外,为了实现请求处理的全过程,还需要对API-Server处理请求的流程有一个详细的了解,所以需要在短时间内阅读API-Server源码时间并能够掌握应用程序。这对我来说是一个很大的挑战。

图片[1]-阿里云原生开源大家族共有:开源数字生态地图的中国力量-唐朝资源网

陈璐:体验中心的架构比较复杂。具体设计和实现请参考OpenYurt体验中心的介绍文档[1]。我主要负责yurt-dashboard部分,其实就是一个前端后端的web应用。由于这个项目的前后端开发都是我一个人完成的,所以对自己的开发能力要求很高。在设计和实现的过程中,我也遇到了一些琐碎的问题,这里我举个例子:

如何设计 Kubernetes API 客户端?为了在项目中更方便的使用client-go提供的访问Kubernetes API的能力,如何设计一套满足易用性和可扩展性的访问接口。这个问题困扰了我很久。对于这部分逻辑,我前后重构了几个版本,希望能找到合理的解决方案。

一个。直接调用client-go中提供的接口函数,抽象常用函数,不封装类。 (扩展性不足,代码冗余严重,难以测试) b.抽象一个resourceClient 类,通过它发送所有访问请求。 (扩展性不足,不同的资源需要不同的请求逻辑通过switch来区分,不符合*扩展大于修改*的设计原则) c.为每个资源定义一个Client类,将所有资源共享逻辑放在baseClient基类中。 (具有一定的冗余性和很强的扩展性)

另外,与我之前熟悉的“防御性编程”玩具项目不同,这个项目最终还是会上线供实际用户试用。这种直接面对用户的压力,对我提出了高水平的编码标准化和设计合理性。要求。在开发过程中,很多地方需要仔细考虑是否实用,是否会影响系统的可用性,是否会影响系统的可扩展性。软件开发中有句名言:“Make it work, make it right, make it fast”。如果说我之前的开发经验大多停留在“make it work”的阶段,这个项目让我站在了一个更高的台阶上,尝试从“make it right, make it fast”的角度去思考。当然,受限于个人水平,最终的效果只是不尽人意,但是非常感谢在开源暑期项目中能有这么宝贵的机会。

距离 2021 年开源之夏已经过去半年多了。是什么促使您留在 OpenYurt 社区并做出贡献?

陈涛:除了自己的研究方向外,由于社区活跃开放的氛围,他也有一个很有希望的发展方向。在 OpenYurt 社区,您可以找到深度参与的兴趣点。从一开始解决一些好问题,到承担重要功能并获得认可,您可以获得很大的成就感。

刘家文:一方面,因为他的研究方向是边缘云原生,所以他的日常学习工作围绕着这个内容;另一方面,选择一个优质的开源项目,不断做出贡献,也会给他一种成就感。 .

陈璐:当然,动力是体验中心的不断迭代(逃)哈哈,开个玩笑。我觉得OpenYurt很棒的社区氛围让人开心。一句话总结就是“一个一群专业的人”,互相信任,做一些有价值的事情。”

回顾您在 OpenYurt 社区的贡献经历,您是否达到了参加开源之夏活动的预期?你有什么意想不到的收获,或者有趣的故事要和你分享吗?

陈涛:完全符合我的预期,从旁观者到参与者。意想不到的收获可能是,在不断审查代码和文档的过程中,它变得越来越规范。之前可能没有太关注这方面,但是参加了OpenYurt之后,自己写代码的时候就不知道了。考虑到易用性、便携性等,我认为这对我来说是一个很大的收获。

图片[2]-阿里云原生开源大家族共有:开源数字生态地图的中国力量-唐朝资源网

刘家文:如果有意外收获,应该是在报名这个活动的开始,以为只是根据需要开发,项目结束就是结束。没想到,活动期间和活动结束后,社区继续跟进我们的项目,让我们有机会与大家分享。这些持续不断的反馈让我感受到了开源的魅力。

陈露:如前所述,这个项目的收获远远超出了我的预期。在完成项目的过程中,昌普和新生两位导师给了我很多帮助,在系统设计、原型设计、具体实现细节等方面给了我很多积极的反馈和有效的建议。 Kubernetes 初学者有一些愚蠢的问题。这个项目的完成离不开他们的指导和帮助。另外,由于这个项目还涉及到与陈涛和嘉文两位同学的合作,我们也会定期召开同步会议,同步进度。一起分析和解决问题的经历也很愉快,让我认识了这些新朋友。

最后,您有什么想对正在为开源社区做贡献或参加开源暑期活动的同学们说的吗?

陈涛:通过这次经历,我意识到在参与开源的过程中,不仅仅是为了解决问题。由于开源项目的开放性,所有的集成代码都必须考虑到可读性和可访问性。可扩展性等,包括规范代码,如何让设计更优雅通用,编写相关文档等项目。在不断审查和修改代码和文档的过程中,将大大提高他们参与复杂项目合作的能力。

刘家文:我觉得对于已经参与过开源社区贡献的同学,可能会更加注重在社区中更加积极主动地参与社区讨论,提高参与度。没有参与过投稿的同学,就拿我来说吧,我不知道投什么给社区,怎么投。根据我自己的经验,如果有同学参与过开源,可以多问,如果没有,也可以在社区提交issue寻求帮助。

陈璐:不用太担心,放轻松,参与社区的门槛绝对没有你想象的那么高。参与讨论,提出 PR 以修复错字,这些都是您为改善社区所做的贡献。一旦你度过了最初的不熟悉阶段,社区最终会给你带来意想不到的奖励。

03

关于 OpenYurt

云原生

OpenYurt 基于原生 Kubernetes 构建,2020 年 5 月由阿里云开源,同年 9 月入选 CNCF 沙盒项目。是业界首个面向Kubernetes的非侵入式边缘计算云原生开源平台。

OpenYurt专注于“云边一体化”的理念,提供边缘自治、云边运维通道、单元化部署、一键集群转换等能力,通过云边节点的统一管理,赋能边缘节点具备与云相同的能力,帮助开发者轻松完成对海量边缘资源的大规模应用交付、运维和管控。

近两年,OpenYurt实现了全网覆盖和全场景本地覆盖。全网覆盖的应用场景包括CDN、音视频直播、物联网、物流、工业大脑、城市大脑等;本地覆盖应用场景及案例包括阿里云LinkEdge、优酷、盒马、AIBox、银泰商城等。

© 版权声明
THE END
喜欢就支持一下吧
点赞64 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片