数据保护背景下,安全团队引入了哪些新技术进行防控升级?点击学习案例 了解详情
写点什么

解决研发数据分析瓶颈,开源项目 DevLake 加入 Apache 软件基金会孵化器 | InfoQ 专访

  • 2022 年 5 月 20 日
  • 本文字数:4142 字

    阅读完需:约 14 分钟

解决研发数据分析瓶颈,开源项目DevLake加入Apache软件基金会孵化器 | InfoQ专访

近日,研发数据平台开源项目 DevLake 顺利通过投票,正式成为 Apache 软件基金会(ASF)的孵化项目。这意味着 DevLake 社区协作将朝着更加开放、规范以及国际化的方向演进。借此机会,InfoQ 专访了 DevLake 项目主创团队,进一步了解 DevLake 的开发背景、目标和未来规划。



为什么加入 Apache 软件基金会?

 

Apache 生态内数据类开源项目非常丰富且活跃,而 DevLake 项目致力于打造可扩展、可定制、灵活而健壮的研发效能数据分析平台。作为第一个专注研发数据这一垂直领域的数据平台,DevLake 项目团队一方面希望向 Apache 生态其他项目学习,密切交流、共同成长,另一方面也希望为 Apache 生态带来一些新的视角。

 

据介绍,DevLake 选择加入 Apache 软件基金会主要出于两方面考虑:首先,项目团队希望能够建立一个具有包容性、多元化和崇尚知识的社区,而 The Apache way,比如“开放”,“社区高于代码”等,能帮助 DevLake 更好地成长和持续发展;其次,DevLake 项目方向与 Apache 软件基金会的关注点高度契合,进入 Apache 生态能让项目近距离地向 Apache 的导师和其他数据类项目学习。

 

在进入 Apache 软件基金会孵化器前,DevLake 项目团队主要做了以下准备:学习和了解了 Apache 基金会的运作方式和对孵化器项目的要求,深刻理解 The Apache Way,明确未来 DevLake 在 Apache 生态的定位、方向和发展;对既有的代码仓库进行开源合规性扫描,替换和 Apache license 不兼容的依赖,确保代码库合规;搭建项目官网,汇总了 DevLake 所有的项目信息 (技术文档、博客等),为开发者加入社区提供统一入口。

研发效能数据平台的痛点

 

当前,研发效能数据平台方向仍存在诸多问题和挑战。

 

首先,研发工具种类繁多,工具组合更多,集成非常困难。如果一个 PMO 或者技术 Leader 想看项目、代码、测试、构建的数据,需要在不同工具之间频繁切换,还必须记住各种访问地址、用户名、密码等,非常麻烦。

 

其次,研发工具间无法互通。比如项目管理工具 Jira、代码托管平台 GitLab、 CI/CD 工具 Jenkins,以及 IM 和文档工具飞书之间都是无法互通的。如果管理人员想要了解修复每个 Bug 用了多少代码,或者在功能、Bug、基建等方面的代码投入比例,或者分析不同产品(应用)的构建频率、成果率和时长等,就需要花费颇多功夫将工具关联起来。

 

再次,研发过程数据非标准化,导致难以直接进行研发效能度量。如果管理人员使用单纯的数据集成工具,虽然可以快速集成数据,但数据形式往往是原始的 API 请求结果(以 json 格式为主),没法直接用来分析。如果能够提供便捷的数据转换,使用户能通过标准 SQL 分析,体验就会好很多。

 

最后,业内缺少研发数据平台的基础框架,无法满足一些用户的定制化分析需求。虽然市面上已有一些研发效能分析工具,但基本都聚焦于数据收集、转换、指标可视化等。这种做法的好处是用户可以很快上手,但不足的地方在于“只能集成这些工具支持的数据源”、“指标计算方式不透明”且“无法定义新的指标”。

 

而 DevLake 就是为了解决上述问题而生的。以解决定制化分析需求为例:


  • 从数据源支持的角度,DevLake 提供了一套简明的插件编写范例和说明文档,帮助大家快速开发插件。如果 DevLake 暂不支持某个 DevOps 工具 X,用户可以很方便地实现插件 X 并贡献给社区;

  • 从指标透明度和灵活性的角度,不同用户在不同场景下,可能会需要不同的效能指标计算方法。以“测试覆盖率”为例,有的团队会使用基于“代码行”的覆盖率,有的会使用基于“函数”或者“逻辑分支”的覆盖率。现在工具往往只能支持固定的指标计算方式,而 DevLake 作为研发数据平台,在数据的应用上给予用户更大的自由度,用户可以方便地自定义指标,或调整计算方式,如果缺乏指标计算所需的原始数据,用户也可以使用 DBT 自定义数据模型来实现数据转换。

 

总体而言,DevLake 的目标是帮助研发团队更好地理解开发过程,挖掘关键瓶颈与提效机会。


  1. DevLake 可以帮助研发团队汇集并分析散落、非标准的研发过程数据,快速建设研发数据分析能力,从数据中发现研发过程的短板,有针对性地提升软件质量和开发效率;

  2. 对于开发者而言,如果开发者需要为团队搭建研发数据分析平台,那么 DevLake 已经搭建好了基础设施,能够帮助开发者节省很多造轮子的工作;如果开发者做的是其他垂直领域的数据分析平台,也能从 DevLake 中获得一些数据集成、处理的经验。

DevLake 技术特性和用户案例

 

据介绍,DevLake 当前具备以下技术特性:

  1. Extensible(可拓展性):DevLake 基于 Golang plugin 系统设计了灵活的插件系统,支持用户独立开发接入任意数据源(包括自研工具),并可通过 dbt 插件运行用户自定义的数据转换/分析任务;

  2. Transparent(透明性): DevLake 会将收集来的数据清洗转换到自己的 domain model schema,并基于此来生成后续的分析指标,对用户来说简单易懂;用户也可以基于 domain model schema 自定义指标或调整指标计算方式;

  3. Minimal(架构简洁):框架简练,同时最大化地共用了插件的重复逻辑,尽量用最少的代码做最多的事情;同时数据收集、分析任务的编排方式参照 GitLab pipeline 设计,简单易懂,用户和开发者能够轻松地理解并操作;

  4. Customizable(定制性): DevLake 采用模块化设计, 底层存储可根据用户数据规模进行替换,适用于不同规模的开发团队;

  5. Robust(鲁棒性): DevLake 的数据收集模块能在数据源 rate limit 范围内高效收集数据,并且有良好的错误恢复能力;



DevLake 架构图

 

目前 DevLake 已经被用于为一些开源项目提供基于版本和模块的质量和贡献数据分析,如 PingCAP 的 TiDB、TiKV 以及 Clickhouse 等。

 

以 PingCAP 的 TiDB 项目为例,目前 PingCAP 有相当多的开源项目,需要了解各个版本的用户使用体验,以指导测试资源分配,并为架构演进方向决策提供参考。

 

但要达成这个目标还存在很多挑战,比如:

  • 缺乏工具来快速收集和转化 GitHub 数据进行分析,只能通过一个个独立的脚本获取数据,但数据是散乱的、非结构化的;

  • Issue 和 PR 上的标签不全,导致无法搞清楚一个 bug 是哪个版本发现的;

  • 缺乏更准确的指标,原来使用的基于代码行的“测试覆盖率”无法反应真实情况。

 

针对以上问题,DevLake 提供了一套更好的解决方案:

  • 基于 DevLake 研发数据平台,统一汇集并处理来自 GitHub 的研发数据,保障数据有效性,使其能够直接用于分析;

  • 通过分析各版本间解决 bug 的数量、严重等级等数据,预估版本的稳定程度,以更好地评估使用体验;

  • 通过分析模块间的 bug 数量、严重等级分布、代码变更频率等,发现质量缺陷密度高的模块,从而投入更多的测试和重构资源;

  • 通过函数 / 逻辑分支等替代基于行的“测试覆盖率”,通过计算覆盖率与最终 bug 数量的相关性,调整覆盖率算法,使其能更准确地反映真实的缺陷密度。


 

面向开源项目的版本/模块质量分析 Dashboard 截图 

未来规划

 

后续在技术与产品层面,DevLake 计划集成更多数据源,覆盖整个软件开发生命周期 (SDLC);提供更丰富的研发数据分析场景,与用户共建 Dashboard,实现更进一步的开箱即用;提升灵活性,用户能够根据自身业务需求,轻松地自定义数据模型和指标;优化用户体验,降低安装、配置、收集的成本,使用户专注数据分析;增强系统可伸缩性, 提升大规模数据场景下的系统性能。

 

在社区生态层面,加入 Apache 软件基金会孵化器后,DevLake 将遵循 Apache 之道,进一步提升 DevLake 在开源社区的知名度和友好度,打造活跃的开源技术生态和社区,包括:


  1. 组织多种多样的社区活动,积极进行线上和线下技术布道,以 “码” 会友,通过 Meetup、Hackathon 等活动吸引开发者和开源爱好者参与到 DevLake 的社区中来;

  2. 打造开放、友好的交流环境,完善和丰富 DevLake 相关内容体系,完善用户文档和贡献指南,提供邮件列表、微信群、Slack 等多种沟通工具和更及时的响应,降低用户使用和参与门槛,积极与用户互动,解决用户问题并进一步促进项目迭代;

  3. 积极与其他开源项目和社区展开合作,让越来越多的生态合作伙伴了解和参与到 DevLake 的社区,共建繁荣的数据生态。

项目导师介绍和寄语

 

姜宁:HugeGraph Champion、ASF Member,同时也是今年当选的 Apache 董事

 

“非常高兴能够成为 DevLake 的开源孵化领路人,帮助 DevLake 加入 ASF 孵化器。 DevLake 着力于解决软件研发领域数据收集,以及研发瓶颈分析的痛点问题。欢迎对提升软件研发效率感兴趣的小伙伴参与到 DevLake 的使用和开发中来,一同构建繁荣发展的社区生态。 ”

 

张亮:SphereEx 公司创始人 & CEO,ASF Member 、Apache ShardingSphere 创始人 & PMC Chair

 

“欢迎 Apache 孵化器的新成员 DevLake。它将使工程效能领域的发展更加开放和繁荣,进而推动整个领域的标准化进程。欢迎更多的贡献者参与 ASF 社区,望 DevLake 早日毕业!”

 

代立冬:ASF Member、Apache DolphinScheduler PMC Chair

 

“很高兴看到 DevLake 加入到 Apache 孵化器,DevLake 是一个专为开发团队分析和提高工程生产力的平台,欢迎广大的开发伙伴们一起参与让 DevLake 社区更加繁荣、早日成为顶级项目!”

 

郭斯杰:ASF Member, PMC on Apache Pulsar,StreamNative 创始人 & CEO

“祝贺 DevLake 进入 Apache 软件基金会孵化器,这是 DevLake 走向世界的一大步,期待有更多技术爱好者和用户加入,共建繁荣。祝社区快速成长成为顶级项目,成为研发数据平台的中流砥柱。”

 

Felix Cheung:ASF Member,Apache Zeppelin、Spark、SuperSet、YuniKorn、Pinot 等项目 PMC,SafeGraph 技术高级副总裁

 

Jean-Baptiste Onofré:ASF Member,Karaf PMC Chair,ActiveMQ、Archiva、Aries、Beam、Brooklyn、Camel、Carbondata、Felix 等项目 PMC

 

相关链接:

 


 

每一位开源参与者、每一个开源项目都可以成为舞台上的主角。

 

新的一波开源浪潮正在席卷中国,【开源聚光灯】是 InfoQ 重点打造的开源主题栏目,旨在通过新闻、系列访谈、用户调查、迷你书、视频等形式深入观察开源运动,围绕开源的价值和开源开发模式,与投身开源的每一个个体共同探讨开源发展现状,照亮每一个开源舞台上的参与者。

 

如果你有开源故事或对开源的深刻观点想要分享、或开源项目想要寻求报道,欢迎联系微信 caifangfang842852(请注明姓名和来由)。

2022 年 5 月 20 日 14:001464
用户头像
蔡芳芳 InfoQ高级编辑

发布了 696 篇内容, 共 366.9 次阅读, 收获喜欢 2422 次。

关注

评论 1 条评论

发布
用户头像
软件开发过程量化出来,确实不错
2022 年 05 月 26 日 09:19
回复
没有更多了
发现更多内容

架构师训练营第三周-总结

无心水

极客大学架构师训练营

还在埋头干活?给程序员的几个忠告

四猿外

Java 深度思考 程序员 随笔杂谈

SharePoint 往事之:一句话让 SharePoint 罢工

手艺人杨柳

SharePoint

小师妹学JVM之:JIT中的LogCompilation

程序那些事

JVM 小师妹 性能调优 JIT 签约计划第二季

GitHub 热榜:一款堪称作业终结者的开源神器!

JackTian

GitHub 开源 工具类网站 学生党 Text-to-handwriting

【写作群星榜】6.12~6.19 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

架构师训练营第二周课后作业

赵凯

框架设计

如何写出高质量的代码?(浅谈代码规范、重构、单元测试的重要性)

Nick

单元测试 重构 代码重构 代码规范

思想不进化的人都是可怜人

Neco.W

提升认知 思考 进步 进化

数据库如何弹性伸缩?

Aaron_涛

数据库 架构 云原生

加密与解密

返町

为什么Web开发人员在2020年不用最新的CSS功能

葡萄城技术团队

CSS

当你输入get/set命令的时候,Redis做了什么

老胡爱分享

redis 源码分析

架构师训练营第三周

Melo

架构师训练营作业 (第三周)

王海

极客大学架构师训练营

Android APP启动白屏优化

小菜鸟学php

android白屏

必知必会,程序员都应该会的Linux的50个知识点!

Java小咖秀

Linux 面试 运维 Shell 经验

flutter开发

InfoQ_1c4a1f813eb1

Cocoa 代码注释与文档生成

Edmond

ios CocoaPods 代码注释 Swift-Document iOS Document

《零基础学 Java》 FAQ 之 17-怎么理解Java中的数组

臧萌

Java

重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」

小傅哥

设计模式 小傅哥 重构 代码优化 责任链模式

英特尔宋继强:坚持科研的长期主义 推动AI向3.0时代跃迁

最新动态

对不起,我爱你

小天同学

小说 爱情 情感

你真的了解敏捷吗?听马丁福勒聊敏捷

涛哥

敏捷 数字化转型

培训机构出来的程序员常被鄙视,招谁惹谁了

程序员生活志

程序员 程序人生

第三周作业

LEAF

加入生财有术后,我获得了什么

Jay Wu

Flink on Zeppelin (5) 高级特性篇

章剑锋_Jeff

大数据 flink 流计算 Zeppelin

互联网人的娱乐精神之28岁退休 & P8和生活助理的故事

码农神说

程序员 漫画 退休

一种极致性能的缓冲队列

捉虫大师

Java 性能

跨云厂商部署 k3s 集群

米开朗基杨

k3s wireguard

解决研发数据分析瓶颈,开源项目DevLake加入Apache软件基金会孵化器 | InfoQ专访_文化 & 方法_蔡芳芳_InfoQ精选文章