”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Next.js 是下一次演进还是只是昙花一现的趋势? Dora Metrics 案例研究

Next.js 是下一次演进还是只是昙花一现的趋势? Dora Metrics 案例研究

发布于2024-11-19
浏览:706

Next.js 是一个存储库,它是一个相对较新但功能强大的 JavaScript 框架,正在席卷现代 Web 开发场景。 Next.js 通过服务器端渲染、静态站点生成和 SEO 优化增强了 React。

开发人员喜欢它的多功能性,数字不言而喻。在最近的一项调查中,60% 的开发者表示,他们更喜欢 Next.js 来构建生产就绪的应用程序,因为它易于部署和可扩展。在比较部署时间时,Next.js 在速度和效率方面始终优于 React,使其成为旨在实现无缝构建过程的开发人员的首选。

本案例研究重点关注 OpenSource Next.js 存储库,特别强调其出色的部署频率。

作为使用 Next.js 来构建动态电子商务网站和快速启动博客的开发人员,我们不禁想知道——他们是如何以如此高效的方式创建和管理这样一个传奇的存储库的?因此,我们使用开源中间件进行了更深入的挖掘。

如果您很高兴进一步探索这些见解并与其他工程领导者建立联系,请加入我们 The Middle Out 社区 或订阅我们的时事通讯以获取独家信息案例研究等等!

但是,首先要做的事情。让我们了解一下 Dora Metrics 是什么。

什么是朵拉指标?

Dora Metrics 是显示项目从软件交付开始到最终生产的进展效率的关键指标。请随意阅读我们关于 Dora Metrics 的详细博客以及它们如何帮助您的工程流程!

  • 部署频率:代码投入生产的频率。

  • 更改的前置时间:提交生效需要多长时间。

  • 平均恢复时间 (MTTR):从故障中恢复所需的时间。

  • 更改失败率:有多少部署破坏了某些内容。

既然我们都在同一页面上,让我们看看 Next.js 表现如何。

我们的主要发现

Next.js:以卓越的部署频率设定高标准

OpenSource Next.js 存储库因其卓越的部署频率而脱颖而出,远远超过行业标准。在过去的三个月中,该存储库持续推动大量部署,反映了团队的效率和自动化能力。

2024 年 6 月,部署了 247 次,其次是 7 月的 261 次,以及 8 月的 279 次,令人印象深刻。这些数字凸显了存储库对持续集成和快速功能发布的承诺,使其成为开源社区部署频率的基准。

Is Next.js the Next Evolution or Just a Passing Trend? A Dora Metrics Case Study

这几乎是每 3 小时部署一次!这种高频部署不仅仅是为了展示;而是为了展示。它使项目以令人难以置信的速度发展。他们是如何做到的?有几个关键因素很突出:

  • 自动化 CI/CD 管道:通过适当的自动化,部署变得快速而顺利——几乎就像魔术一样。

  • 频繁、小型 PR:通过将更改分解为小型拉取请求,他们可以更快地合并和部署,风险更低。

  • 快速解决问题:错误很快就会被消除,并且部署失败的情况很少见。

周期时间留有改进空间

尽管部署频率很高,但存储库在周期时间上显示出显着的波动,这影响了总体变更交付时间。周期时间包括所有 PR,而前置时间仅包括具有可用部署数据的 PR。 2024 年 6 月,平均周期时间约为 3.5 天,7 月略有增加至 3.6 天,然后到 8 月飙升至 5.3 天。

Is Next.js the Next Evolution or Just a Passing Trend? A Dora Metrics Case Study

周期时间一直在增加,从 3.5 天增加到 5.3 天,这表明开发过程出现了一些延迟。识别瓶颈,无论是在代码审查、测试还是手动任务中,以及实施自动化测试或改进冲刺计划都可以帮助减少这种情况。

可能需要一些工作的其他关键指标

首次响应时间

2024 年 6 月,平均首次响应时间为 1.6 天(38.4 小时),这表明 Next.js 存储库中问题和拉取请求的处理快速高效。到 2024 年 7 月,这一时间略有增加至 1.8 天(43.2 小时),暗示存在轻微延迟,可能是由于问题数量不断增加或团队可用性降低所致。

然而,在 2024 年 8 月,时间大幅跃升至 2.6 天(62.4 小时),这表明存在明显的延迟,这可能是由于工作量增加、审稿人分配的瓶颈或假期导致团队成员减少造成的。

Is Next.js the Next Evolution or Just a Passing Trend? A Dora Metrics Case Study

为了缩短第一响应时间,可以实施多种策略来解决最近延迟增加的问题。自动发出问题和拉取请求通知可以确保更快地分配给审阅者,从而减少等待时间。

针对响应时间引入 SLA(服务水平协议)可以建立问责制并鼓励更快的参与。此外,审查团队分配和工作量分配可以帮助平衡职责,特别是在需求高或团队可用性较低的时期(例如假期)。

鼓励跨职能协作还可以通过更均匀地在团队中分散负载来实现更快的响应。这些变化可以有效地缩短响应时间并保持效率。

变更准备时间

从 2024 年 6 月到 8 月,Next.js 存储库更改的交付时间逐渐从 3.3 天增加到 4.1 天。 6 月份,相对较快的 3.3 天周转反映了高效的工作流程和顺畅的协调。到 7 月,这一时间略有增加至 3.6 天,这表明效率略有下降,可能是由于代码审查时间更长或更复杂的任务所致。

然而,到了 8 月份,交付时间达到了 4.1 天,这表明可能由于工作量增加、审核瓶颈或假期导致团队能力下降而导致更严重的延迟。这一趋势表明需要优化流程并防止进一步放缓。

Is Next.js the Next Evolution or Just a Passing Trend? A Dora Metrics Case Study

原因?

  1. 审核时间延长。例如,PR #67498

  2. 涉及深入审查和测试的复杂任务。 PR #67391

  3. 首次响应时间的波动(从 1.6 天到 2.6 天)导致审核开始时间不均匀,从而延迟进度。

工作性质

OpenSource Next.js 存储库包括各种活动,从功能升级和错误消除到改进文档和完善测试。以下是一些关键见解的细分:

  • 功能和改进:大修,包括性能优化 (PR #67397)、新功能 (PR #67215)。

  • 文档:对文档的重大贡献确保清晰度和更容易采用(PR #67056)。

  • 错误修复:解决关键错误修复,突出显示 41.5 小时(约 1.7 天)的返工时间 (PR #67022)。

  • 性能优化:提高框架的速度和效率(PR #67065)。

这些更新使 Next.js 成为 Web 开发领域的领导者。然而,许多需要改进的领域——周期时间、首次响应和交付时间——可以从测试、代码审查和通知方面的自动化程度的提高中受益。

为了进一步优化,他们可以跟踪管道中的瓶颈,无论这些瓶颈是否出现在代码审查、测试或部署期间,并针对这些领域来提高整体性能。此外,通过更频繁的站立或回顾来促进持续反馈可以帮助识别和解决摩擦点。通过关注这些策略,您可以创建更高效​​、更精简的开发和部署管道。

这对 Next.js 社区有何影响?

对于内部贡献者来说,快速部署周期是一个梦想。功能和修复快速推出,这意味着团队可以近乎实时地获得反馈。然而,较长的交付时间可能会让一些贡献者感觉自己被排在长队中,等待他们的工作上线。

对于外部贡献者来说,了解这些瓶颈可以设定更清晰的期望。如果您正在为 Next.js 做出贡献,即使部署频繁发生,如果您的 PR 需要一些时间来合并,也不要感到惊讶。

要点

  • 投资自动化:坚实的 CI/CD 管道可以让部署像水一样流畅。

  • 鼓励小型、频繁的 PR:复杂性降低意味着更快的审核和更快的部署。

  • 解决周期时间的瓶颈:如果交货时间滞后,请深入研究导致延迟的原因——无论是返工时间还是审核时间。

朵拉评分:8/10

Next.js 的部署频率令人印象深刻,而且还在飙升,但它们的交付时间、周期时间和首次响应时间可能需要一些关注。通过一些战略调整,他们有潜力成为 Google 年度 Dora 报告中表现最佳的企业的有力竞争者,

Next.js 是否会让其他开源项目变得过时?

Next.js 在部署效率方面树立了新的基准,使其成为开源世界中值得关注的基准。凭借其无与伦比的速度、质量和不断创新的结合,它为竞争对手留下了几乎没有追赶的空间。无论您是积极的贡献者还是好奇的旁观者,这个开创性的存储库都有很多东西值得欣赏和学习。

随着 Next.js 的不断发展,它不仅仅满足网络的需求;它正在塑造他们。准备好迎接更多突破性的更新,因为它重新定义了开源的卓越性!

如果您很高兴进一步探索这些见解并与其他工程领导者建立联系,请加入我们 Middle Out 社区。并订阅时事通讯以获取独家案例研究等!

琐事

Next.js 由 Vercel(以前称为 Zeit)于 2016 年创建,由于其构建服务器端渲染 React 应用程序的强大功能而迅速流行起来。它支持静态站点生成(SSG)和服务器端渲染(SSR),使其成为开发人员的灵活选择。 Netflix、Twitch 和 GitHub 等大公司使用 Next.js 为其 Web 应用程序提供支持,展示了其可靠性和可扩展性。

更多资源

  • 中间件和 Dora Metrics

  • 持续集成指南

  • Dora Metrics 方法论

版本声明 本文转载于:https://dev.to/middleware/is-nextjs-the-next-evolution-or-just-a-passing-trend-a-dora-metrics-case-study-362c?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-11-20
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-20
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-20
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-20
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-20
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-20
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-20
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-20
  • 如何使用 C++ ifstream 从具有不同整数计数的文本文件中高效读取整数?
    如何使用 C++ ifstream 从具有不同整数计数的文本文件中高效读取整数?
    使用 C ifstream 从文本文件读取整数在以下情况下从文本文件检索图邻接信息并将其存储到向量中会带来挑战处理可变整数计数的行。这是使用 C 的 ifstream 的综合解决方案:传统方法包括使用 getline() 读取每一行并使用输入字符串流来解析该行。此技术对于整数数量一致的行非常有效。#...
    编程 发布于2024-11-20
  • 为什么 Goroutine 在 Windows 上有时会执行失败?
    为什么 Goroutine 在 Windows 上有时会执行失败?
    理解 Windows 上非功能性 Goroutines 之谜在并发领域,Goroutines 在 Go 中充当轻量级线程。然而,一些程序员遇到了意想不到的挑战:goroutines 无法在 Windows 上执行。为了解开这个谜团,让我们深入研究一下根本问题。根本原因:异步执行与传统线程不同,gor...
    编程 发布于2024-11-20
  • 如何使用 PHP 高效地将大型 MySQL 文件导入共享主机?
    如何使用 PHP 高效地将大型 MySQL 文件导入共享主机?
    PHP 中高效的 MySQL 文件导入:共享主机的拆分查询在 Web 开发领域,通常需要在使用共享主机提供商时导入大型数据库文件出现。不幸的是,通过命令行访问 MySQL 可能会受到限制,因此需要一个基于 PHP 的解决方案来解析和执行查询。为了解决这一挑战,开发了一个名为 SplitSQL() 的...
    编程 发布于2024-11-19
  • 可以仅使用 CSS 将图像大小调整为其大小的百分比吗?
    可以仅使用 CSS 将图像大小调整为其大小的百分比吗?
    仅使用 CSS 将图像大小调整为自身的百分比在网页设计领域,需要将图像大小调整为特定尺寸经常出现。一种场景涉及将图像的大小减小到其原始大小的一定百分比,而不改变其容器元素的大小。虽然 JavaScript 或服务器端脚本提供了解决方案,但本文探讨了潜在的纯 CSS 替代方案。是否可以使用 CSS 百...
    编程 发布于2024-11-19
  • 何时为 JavaScript 继承选择 Object.create 而不是 new?
    何时为 JavaScript 继承选择 Object.create 而不是 new?
    JavaScript 继承:Object.create 与 newJavaScript 中的继承概念可能会令人困惑,因为有多种实现方法它。本文旨在阐明最受接受的方法,并为您的特定场景提供解决方案。理解 Object.create 和 newObject.create 是一个创建对象的方法通过从现有对...
    编程 发布于2024-11-19
  • Bootstrap 网格类(如 col-md-4、col-xs-1 和 col-lg-2)中的数字如何确定元素宽度和响应能力?
    Bootstrap 网格类(如 col-md-4、col-xs-1 和 col-lg-2)中的数字如何确定元素宽度和响应能力?
    理解 Bootstrap 网格类中的数字:col-md-4、col-xs-1、col-lg-2The Bootstrap 框架引入了强大的网格系统,有助于创建响应式布局。该系统的组成部分是具有 col-* 格式的类,其中星号代表数字。这些数字在确定网格内的元素如何对齐以及它们如何响应不同的屏幕尺寸方...
    编程 发布于2024-11-19
  • 如何确定 C++ 编译器是否符合 IEEE 754 浮点标准?
    如何确定 C++ 编译器是否符合 IEEE 754 浮点标准?
    检查 C 中的 IEEE 754 浮点标准 确定 C 编译器是否遵循 IEEE 754 浮点标准通常通过以下方式完成编译器定义。然而,用于 C 的技术可能并不直接适用于 C 。C 特定方法幸运的是,C 提供了一种简单的方法来使用 numeric_limits 完成此检查class:std::nume...
    编程 发布于2024-11-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3