」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Next.js 是下一次演進還是只是曇花一現的趨勢? Dora Metrics 案例研究

Next.js 是下一次演進還是只是曇花一現的趨勢? Dora Metrics 案例研究

發佈於2024-11-19
瀏覽:194

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 ...
    程式設計 發佈於2024-11-20
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於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() 讀取每一行並使用輸入字串流來解析該行。此技術對於整數數量一致的行非常有效。 #i...
    程式設計 發佈於2024-11-20
  • 為什麼 Goroutine 在 Windows 上有時會執行失敗?
    為什麼 Goroutine 在 Windows 上有時會執行失敗?
    理解 Windows 上非功能性 Goroutines 之謎在並發領域,Goroutines 在 Go 中充當輕量級線程。然而,一些程式設計師遇到了意想不到的挑戰:goroutines 無法在 Windows 上執行。為了解開這個謎團,讓我們深入研究根本問題。 根本原因:非同步執行與傳統執行緒不同,...
    程式設計 發佈於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-2 The 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::numeric_l...
    程式設計 發佈於2024-11-19
  • 如何使用 SHA-256 在 Java 中實作安全字串雜湊?
    如何使用 SHA-256 在 Java 中實作安全字串雜湊?
    使用SHA-256 的Java 哈希字串在Java 中使用SHA-256 雜湊字串可能看起來是一個簡單的任務,但是有雜湊和編碼之間的關鍵差異需要澄清。 SHA-256(安全雜湊演算法-256)是否是編碼機制;它是一種單向雜湊函數。這表示當您對字串進行雜湊處理時,您會產生不可逆的二進位資料序列。 要在...
    程式設計 發佈於2024-11-19
  • 如何使用 CSS 替換已棄用的 HTML5 表格屬性?
    如何使用 CSS 替換已棄用的 HTML5 表格屬性?
    HTML5 表格屬性:棄用和CSS 替換HTML5 中已棄用一些常用來設定HTML 表格樣式的屬性,包括cellpadding 、單元格間距、valign 和對齊。進行此變更是為了實現 Web 開發現代化並促進更嚴格地遵守 HTML5 標準。 在 Visual Studio 中,您可能會收到警告,指...
    程式設計 發佈於2024-11-19
  • Ember.js 只需幾秒
    Ember.js 只需幾秒
    在生成式人工智慧讓我們的世界充滿臃腫的文本之前,人類依靠語法上無關緊要的簡潔註釋來幫助他人和他們自己在軟體開發的浩瀚海洋中航行。以下是我認為關於 Ember 的重要內容,取自多年前出土的一張紙條: ember-data 是 Ember 預設使用的 ORM 風格的持久層。它使用模型、適配器、序列化器和...
    程式設計 發佈於2024-11-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3