七牛云姬长军:企业技术栈向云原生转型的实践与思考

“云原生”引爆亿万级苍穹,“分布式云”启动新商业引擎,“分布式存储”开创未来新篇。伴随着 5G 商用时代的到来,在新一轮技术革命的关口,CDN +边缘计算迎来新阶段,分布式云将加速这一变革的发生。

12 月 17 日至 18 日,“ Distributed Cloud 2020 全球分布式云大会”在深圳正式拉开帷幕。本次大会以“技术变革保障用户体验 , 引领国际部署全球节点”为宗旨,就“云原生”、“分布式云”、“分布式数据”、“分布式存储”、“实时音视频技术”等几个技术方向进行讨论。大会邀请到华为云、腾讯云、阿里云、七牛云、政府主管部门、标准制订方,以及深圳 TOP 200 流量主及运营商等云原生、边缘云计算开发者相关企业共同参与,以推动技术变革,适应时代发展。

在 12 月 17 日下午的“云原生领导力论坛”上,七牛云业务效率负责人姬长军带来《企业技术栈向云原生转型的实践与思考》的主题演讲。演讲中,姬长军讲解如何通过研发赋能,来推动企业技术人才升级云原生技能,以及他们的总结与思考。

从 CNCF 2020 最新的调研报告可以看到,在采用容器技术时,受访者普遍反馈其复杂性和对开发文化的改变是最大的挑战。事实也确实如此,云原生涉及的技术栈较多,研发人员需要一定的时间去了解和实践,因此在做技术栈升级时,技术领导者需要充分考虑到这一点。

如何优雅地应对云原生技术挑战?

一、基于云原生的测试左移生态

姬长军通过三个维度分享七牛云测试左移技术落地实践全貌,首先这个生态主打的还是业务质量保障,是基于 PR (变动)构建多维反馈,包括单测、全量集测、系统测试,甚至是增量覆盖率分析,以及受影响服务反馈等等,能够在源头保障入库代码质量。其次是工程效能提升,姬长军认为这是切入测试左移所带来的价值。核心是在 QA 未介入的情况下,能够自动化的提供多维度的质量反馈,对研发来讲足够优雅,也让整个迭代足够流畅。最后是云原生技术的落地,七牛云选择 Prow 作为 CI 平台,充分利用云原生技术,做到体验最优。姬长军表示,这种测试左移的模式,能够在源头保障质量,极大的提升研发整体迭代效率。

那七牛云在技术决策上为什么选择 Prow ?姬长军介绍,Prow 基本上是云原生测试基础设施的一个标配,主流云原生项目都在用 Prow ,比如 Kubernetes ,Istio 等。Prow 有很多优点,比如它轻量,基本是无状态的,基于 CRD 实现。且 Prow 采用 Yaml 作为配置语言,基于 PR 的 CI 环境用完即销毁,拥有很好的隔离性,场景需求完美契合,其丰富的 GitOps/ChatOps plugin,方便二次开发。姬长军讲解道:“有看到一些企业在考虑云原生时,会将重点放在封装 Kubernetes 的复杂性,企图通过一套 UI 去降低用户上容器的负担。虽然这个想法很好,但实践下来可能不太现实,因为大家知道 YAML 基本上是 Kubernetes 声明式 API 的标配。而声明式 API 是云原生五大技术特性之一,如果这个时候还考虑绕过他,基本是走了弯路。因此我认为在云原生时代,技术人员应该对 YAML 比较亲和才对,就像面对自己擅长的编程语言一样。”

姬长军表示通过云原生技术,把 CI 场景做透。在解决问题的同时也给研发同学提供了一个接触云原生的场景。而这个场景又足够聚焦,不会让不熟悉的 Kubernetes 技术的同学一下子被其复杂性所淹没。所以这其实是云原生技术布道很好的一个落脚点。

除了平台,基于云原生的测试左移里有很多技术细节,姬长军着重分享了两个场景。一是基于PR 的增量覆盖率精准分析,通过测试覆盖率做精准反馈,极方便从 PR 中查看修改代码的单测和集测覆盖详情。“这背后对应的是一款 Go 语言精准测试覆盖率收集系统,名叫 goc。该系统已经开源,且在测试开发圈有着不错的反响,我们看到很多使用 Go 语言的企业已经在使用,甚至包括一些头部企业。”姬长军说。

另一个是基于 PR 的受影响服务自动反馈。这一实践背后也是涉及到一个小工具,且已经开源。它解决问题的价值比较实在。此系统能够精准反馈修改代码影响的应用服务列表,帮助我们在发布时,避免遗漏服务。

对于第一个实践玩法,姬长军总结道:“基于云原生的测试左移战略让单个团队体验到云原生技术的魅力,但我们知道,一个人可能走得很快,一群人才走的更远。而我们要想更大的利用云原生技能提升企业研发效能,那就必须让更多的人都能玩转云原生技术。”

二、将研发流程彻底搬到 Kubernetes 之上

带着这个思路,七牛云开启了第二个玩法,就是将研发流程彻底搬到 Kubernetes 之上去探索全员云原生姿势。姬长军表示,他们主要做了以下几件事:首先,所有业务均在 Kubernetes 测试集群容器化,其次,各业务能够基于最新代码一键部署一套容器化开发测试环境,随用随起。然后提供姿势,能够一键将变动的服务直接发布到容器化开发环境,不需要 CI/CD。最后是拉平办公网络和 Kubernetes 集群网络,做到直连 Pod IP/Cluster IP。姬长军表示,最终的收获效果是研发可以在日常业务开发中,自由玩转 Kubernetes。

在介绍完两个实践玩法之后,关于企业技术栈升级,姬长军分享了他的总结与思考。他表示,一定要从价值导向出发,通过解决和优化实际问题来推动技术升级,同时掌握好节奏,要能阶段性的拿结果。其次要以人为本,企业技术栈升级本质也是企业人才的升级,若能促进现有人才的升维,当能获得最大 ROI 。