monorepo

Mar 28, 2025 am 09:11 AM

monorepo

CodePen的DevOps實踐:回歸單體代碼庫(monorepo)的優勢

雖然我不是大型DevOps專家,但CodePen正在轉向單體代碼庫(monorepo),這與多個小型代碼庫的系統相比,具有諸多優勢,至少對我們而言是如此。您的挑戰和結論可能完全不同。

我讀了Ben Nadel的“為什麼我在InVision將微服務合併回單體架構”後,想到了這一點。儘管我們的結論相似,但我可以看出他面臨著一組完全不同的問題。

微服務解決技術和人員問題

技術問題是指應用程序的某個方面給基礎設施帶來了過大的負擔,進而可能導致糟糕的用戶體驗(UX)。例如,圖像處理需要大量的CPU。如果此CPU負載過大,它可能會開始使應用程序的其他部分缺乏處理資源。這可能會影響系統延遲。而且,如果情況嚴重到足以影響系統可用性

人員問題另一方面,與應用程序幾乎無關,而與團隊的組織方式有關。在應用程序的任何給定部分工作的人員越多,開發和部署就越慢,越容易出錯。例如,如果您有30名工程師都在爭先恐後地“持續部署”(CD)相同的服務,那麼您將獲得大量的排隊;這意味著,許多本來可以交付產品的工程師實際上是在等待輪到他們部署。

單體代碼庫(monorepo)的優勢(對我們而言)

  • 一統天下。您只需git pull一個代碼庫,就能與其他人完全同步,並擁有完整開發環境所需的一切。
  • 井然有序。 GitHub上的操作位置不會造成混淆。您針對單體代碼庫進行拉取請求。您在單體代碼庫上打開問題。這避免了分散的活動而導致信息丟失。
  • 代碼共享。您可以共享代碼。在整個代碼庫中共享實用程序或組件特別有用。我們嘗試過將共享部分發佈到npm供其他代碼庫使用,但與在一個地方擁有代碼相比,該工作流程很笨拙。
  • 統一維護。只有一個代碼庫,不存在舊的和被忽略的代碼庫。對於我們的小團隊來說,擁有數十個代碼庫意味著其中一些代碼庫具有舊的過時依賴項、舊版本的Node、與其他代碼庫不同步的代碼風格檢查和格式化規則等。

單體代碼庫(monorepo)的劣勢(對我們而言)

  • 部署複雜性。我認為我們最初拆分代碼庫的主要原因是這些代碼庫中的代碼需要部署到不同的位置。它們可能代表某個單獨的Lambda或其他服務器上的單獨服務。單個代碼庫意味著更容易連接特定於該服務器/服務的組件,例如CI/CD。

是的,我知道這有爭議。

我其實不太在意。我不會像空氣炸鍋愛好者和CrossFit狂熱者那樣對此過於激烈。這是Matt Klein對單體代碼庫的強有力論證。

我只是說:這對我們來說非常有用。我可以看出其他公司的情況會有所不同。我可以看出,與承包商合作的公司可能希望將其訪問權限限制在小於整個單體代碼庫的範圍內。我可以看出git代碼庫可能會變得龐大而難以管理。這些目前對CodePen來說都不是問題,因此單體代碼庫的優勢勝出。

以上是monorepo的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1414
52
Laravel 教程
1307
25
PHP教程
1255
29
C# 教程
1228
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

如何通過CSS選擇第一個類名為item的子元素? 如何通過CSS選擇第一個類名為item的子元素? Apr 05, 2025 pm 11:24 PM

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? 為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? Apr 05, 2025 pm 05:51 PM

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

See all articles