专栏首页CNCFCNCF项目超过了十亿行代码:与DevStats创造者Łukasz Gryglicki的问答

CNCF项目超过了十亿行代码:与DevStats创造者Łukasz Gryglicki的问答

你们中的一些人可能不知道CNCF社区有一个非常有价值的报告工具--DevStats。

CNCF从2017年开始开发DevStats,为Kubernetes社区提供关于Kubernetes如何应对几乎前所未有的增长的及时和相关的见解。今天,它已经发展到包含所有CNCF项目,并且由于它是开源的,几乎可以为任何项目或指标定制。

除了跟踪统计数据以度量所有托管项目的健康状况外,我们还在编译年度和项目旅程报告时使用DevStats。

在度量DevStats的过程中,我们刚刚遇到了一个不可思议的里程碑--所有CNCF项目加起来已经超过了10亿行代码。没错,10亿!

为了纪念这一成就,我们坐下来与DevStats创造者Łukasz Gryglicki了解更多的关于工具、它的历史、以及我们的社区如何从中受益。

CNCF:DevStats是什么?

Łukasz Gryglicki:DevStats是一个服务,从git和GitHub获取数据,然后将它转变成图表报告社区活动。这是CNCF资助的项目,也是对所有CNCF支持的项目提供的服务。它使用Grafana仪表板组织和显示项目数据。我们把它放在一些强大的服务器上,这些服务器是由Packet慷慨捐赠的。

它的工作方式是下载几PB的数据,这些数据代表了过去6年GitHub上的每一个公开行为,除了CNCF托管的1400多个仓库之外,它几乎把所有的数据都扔掉了。它处理数据并将其存储在Postgres数据库中,并且每小时下载更新的数据。

DevStats现在(大约9个月前)是一个Kubernetes原生应用程序,并使用许多其他CNCF项目,包括Helm、containerd、CoreDNS等。DevStats是一个完全开源的项目。它还使用Linux基金会项目,包括Linux(Ubuntu)和Let's Encrypt,以及Red Hat的Patroni来支持在Kubernetes上运行Postgres数据库。

DevStats还允许用户跟踪自定义指标,而不仅仅是PR问题或提交。它有许多非标准仪表板,例如分析bot活动、公司所属关系、贡献者位置、时区映射、性别、编程语言、许可类型等等。

问:DevStats是如何产生的?

LG:CNCF执行董事Dan Kohn提出了DevStats的初始架构,并聘请我来实施它。我们之前曾在一家医疗创业公司Spreemo共事。我的第一个实现是使用Ruby,但是当我在Go中重新实现时,我能够利用并发性获得20倍的性能改进。

我们在2017年创建了DevStats,作为Kubernetes社区度量开发人员和社区数据的一种方式。它是为Kubernetes指导委员会和SIG-Contributor Experience而创建的,他们需要一个工具来对社区中正在发生的事情进行深入的分析和理解。随着Kubernetes成为仅次于Linux的第二大开源社区,他们也在寻找一种方法来控制这样一个快速增长的项目的开发。他们需要一个能够理解他们工作流程的工具(比如bot命令,以及特定于Kubernetes的仓库标签)。最大的需求之一是允许对历史数据进行分析,以显示趋势是如何演变的。

我们首先在2018年欧洲KubeCon + CloudNativeCon哥本哈根大会上介绍了这个项目。然后,为了支持更好的扩展和更多的资源需求,它被转移到Kubernetes。它成为了一个完整的Kubernetes应用程序外观的范例,符合所有在2019年欧洲KubeCon + CloudNativeCon巴塞罗那大会上提出的最佳实践。现在,DevStats涵盖了所有CNCF项目、一些Linux基金会项目(比如Linux和Zephyr)、GraphQL基金会、CDF(持续交付基金会)、Core Infrastructure Initiative等等。

CNCF:CNCF项目跨越10亿行代码是一个令人印象深刻的里程碑!我们是如何走到今天这一步的?这意味着什么?

LG:这对CNCF来说是一个巨大的里程碑。首先,这意味着CNCF和它的项目都在以令人难以置信的速度增长。当你想到“谷歌Chrome有670万行代码,而据报道微软Windows 10操作系统有5000万行代码”这个事实时,10亿行代码似乎更让人印象深刻。随着项目从沙箱和孵化阶段发展到毕业阶段,它们会逐渐成长,并变得更加坚固为企业所用。DevStats仪表板按项目显示代码行数。

CNCF:关于DevStats,还有什么是社区应该知道的吗?

LG:DevStats是开源的--任何人都可以使用它并为自己的项目部署自己的实例。我们通过在DevStats仓库中创建特性请求来定期添加新的仪表板,因此,如果你需要为你的项目创建一个特殊的仪表板,请提交一个特性请求,我们将为你检查仪表板!

CNCF:还有什么令人兴奋的新功能吗?

LG:最近,我们根据TOC和项目维护者的反馈,迭代了一个项目状态仪表板的几个修改版本。

我们还在为DevStats创建RESTful API。这意味着人们将能够编写自己的工具,并且有一个DevStats API服务器可以在他们的工具请求上返回数据。例如,他们可以编写一些东西来查询他们每天的项目使用情况,DevStats将以JSON的形式返回这些数据。

Łukasz Gryglicki自2017年以来CNCF高级开发人员。在加入CNCF之前,Łukasz为美国公司(包括Cleverstep、Jamis、以及Spreemo Health)远程工作。

本文分享自微信公众号 - CNCF(lf_cncf),作者:CNCF

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 成员网研会:使用Kong在Kubernetes做API网关和入口管理(视频+PDF)

    Kong for Kubernetes是一个基于Kong Gateway项目的开源Kubernetes Ingress控制器。

    CNCF
  • 成员网研会:成员网研会:保护您的无服务器之旅(视频+PDF)

    讲者:Ron Harnik,高级产品营销经理 @Prisma Cloud by Palo Alto Networks

    CNCF
  • 成员网研会:以应用程序为中心的抽象简化应用程序迁移到Kubernetes(视频+PDF)

    将微服务应用程序迁移到Kubernetes,尤其是涉及有状态服务和负载平衡器之类的应用程序,可能是一项艰巨的任务。在这个网络研讨会中,我们将讨论将一个基于微服务...

    CNCF
  • 大数据算法设计模式(1) - topN spark实现

    topN算法,spark实现 package com.kangaroo.studio.algorithms.topn; import org.apache....

    用户1225216
  • Spring框架源码分析(IoC):BeanFactory和ApplicationContext容器家族

    组件扫描:自动发现应用容器中需要创建的Bean。 自动装配:自动满足Bean之间的依赖。

    星如月勿忘初心
  • Java编程思想第五版精粹(五)-初始化和清理(下)

    以编译时错误的方式呈现。编译器可以为 i 赋一个默认值,但是未初始化的局部变量更可能是程序员的疏忽,所以强制程序员提供一个初始值,往往能帮助找出程序里的 bug...

    公众号-JavaEdge
  • 组织微服务

    微服务可能是我的开发伙伴朋友中最受欢迎的热门话题之一,我确实喜欢灵活,敏捷以及拥有更多选择的概念。但作为一名在软件集成领域工作多年的人,我开始看到一些类似于以前...

    Aaroncang
  • 势头强劲的 Python PK 强大的 C++,究竟谁更胜一筹?

    一直以来,在 TIOBE 编程语言排行榜中,简单易用的新贵 Python 和老将 C++ 是强劲的竞争对手,不过 C++ 和 Python 都是非常流行的编程语...

    CDA数据分析师
  • 「集成架构」Redhat 观点:理解企业集成

    应用程序和数据集成是交付新客户体验和服务的基础。通常,一个团队管理整个企业的单片集成技术,但是应用程序正变得越来越复杂——它们是分布式的,并且必须快速扩展和更改...

    首席架构师智库
  • webservices系列(三)——调用线上webservice(天气预报和号码查询)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚

扫码关注云+社区

领取腾讯云代金券