成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為何大廠開發者紛紛拋棄小倉,轉向大倉monorepo?

開發
你怎么看待大小倉之爭?今天就讓我們來一起聊聊“為什么要用大倉,monorepo比multirepo好在哪里?”

話題背景

在軟件開發領域,代碼倉庫的管理方式對項目的效率和協作有著重要影響。

隨著項目結構的日益復雜和開發挑戰的不斷增長,傳統的單一代碼庫(Monolith)在應對多項目、多庫和多服務的情況下顯得力不從心,正是在這個背景下,Monorepo(微服務大倉)和Multirepo(微服務多倉)的概念應運而生。

你怎么看待大小倉之爭?

今天就讓我們來一起聊聊“為什么要用大倉,monorepo比multirepo好在哪里?”

鵝廠工程師的看法

@cheater-CSIG模型開發組長▼

我寫過一篇文章《單一大倉實踐與工業化》。里面講到大倉主要好處是:

  • 能在同一個地方建設輔助開發者的工具
  • 保證開發者對整個項目的可見性,易于獲取性
  • 能批量集中地修復任何一類工程問題。

有人說,他們用了monorepo,實際上是一個超級大shi山。但是,同樣是shi山,集中在一起,就比散落在很多地方的無數小shi堆,治理起來要容易一些。在monorepo下,我們能評估治理的工作量,如果是無數小shi堆兒,根本就沒法治理了。

@tide-CSIG后臺開發工程師▼

個人感覺,monorepo是面向管理者的,是為了簡化項目管理者的管理難度,增加對開發過程的控制力度的工具。

有些一體性強的超大單體應用可能還比較適合,但是對于一個追求靈活、快速迭代的分布式系統強行使用就是災難。

圖片

@thom-PCG后臺開發工程師▼

分布式和集中式類似的區別,集中在一個點做好 ,程序員對代碼有理想的追求是值得肯定的,另外上面的都想一次性就做好,每次都更新到最好的版本,最好的代碼,所以可能傾向選擇monorepo。

但是一般理想很美好。顯示很骨感, 通常我們可能都在快速迭代,尋找新的業務增長點,這個時候

multirepo容錯性更好,迭代更快各有優劣~開發好了,就可以一直不改,不動了。

結論:multirepo和monorepo都是工具,作為工程師把工程做好,業務做好才是王道,誰優誰劣都要根據一定的應用場景

@les-CSIG后臺開發工程師▼

換一個角度,多倉庫 + 倉庫多版本,倉庫之間又常常存在依賴關系,這可以將多倉管理規約到依賴管理問題上,而后者又可以規約為3-sat問題,眾所周知,這是NPC問題… 

也就是說,帶有多版本的multirepo,使用者容易陷入版本泥潭,腦容量不夠用… 而規避這個由管理模式導致的依賴管理問題,一個簡單直接的方式:只用一個倉庫??

@lucasz-WXG前端開發工程師▼

大倉可能是一種重構后的選擇,也可能是一開始的選型方案,因為業務下的項目呈現是動態的。

主要優勢是能夠更低成本統一和維護 多應用的工程化方案,當然也會帶來工程復雜度的上升。因此判斷條件無非是收益和成本的權衡,以下是可以去考量的幾個點:

  • 人員在多個單倉來回開發的上下文差異,導致切換倉庫開發的成本越高,大倉收益越高
  • 工程化方案的中配置即代碼的部分占比越大,即工程通過代碼復用,大倉收益就更高
  • 復用更統一先進的工程化方案的收益 VS 分散開獨立支撐業務小步快跑獨立性的收益
  • 分散的單倉間工程化統一的難度 VS 集中力量應對工程復雜度提升的難度

圖片

@folger-CSIG前端開發▼

大倉擔心CI,試試CNB,現在在公測中~

@jom-PCG客戶端開發▼

大倉(Monorepo)與多倉(Multirepo)有各自的優缺點,兩者往往可以互補,具體選擇哪個取決于項目的規模、具體需求、以及團隊的分布,從Monorepo的優缺點來講:

優勢:

  • 復用工程化基建:可以統一工程化配置和DevOps流程,包括但不限于Lint規則、構建腳本、測試、CICD流程等,基建的事情只需要做一遍,包括后續統一改造和升級,從而降低多項目維護成本。
  •  利于代碼復用:由于所有代碼都在一個倉庫內,依賴的管理可以更加簡化和一致(本地npm包,自動解決依賴關系),依賴的安裝也更高效(共同依賴只會安裝一次)。這樣帶來的好處就是極大降低代碼復用成本,比如需要抽離新的「復用代碼」,創建個npm模塊子項目就能直接進行開發、調試,而如果是Multirepo,需要手動進行npm link或者npm發布,還要手動處理依賴關系,后續的版本升級也比較繁瑣,久而久之,就會降低大家做此類抽離工作的積極性。
  • 版本控制更統一:各個項目和模塊可以更容易保持版本的一致性,所有的依賴關系和代碼變更可以在同一個提交中進行更新,能確保整個代碼庫的一致性,這樣也更利于做跨項目的自動化工作流。
  • 團隊協作更簡單:代碼的可見性高,有助于跨團隊的知識共享和代碼審查,同時團隊成員之間的協作也更加順暢。

不足:

  • 規模和性能問題:隨著項目和代碼量的增長,clone和構建的時間可能會拉長,互相之間的影響也會被放大,任何變更都可能對其他項目產生連鎖反應,增加了變更管理的復雜性,需要更謹慎的規劃和協調。比如A項目修改了BCD都依賴的公共模塊,則需要BCD都經過完整的驗證才能一起發布上線,而不是BCD先保留舊版的公共模塊,按照自己的節奏實施升級;
  • 復雜度更高:對于小團隊和項目,大倉可能會引入沒必要的復雜性;
  • 工具鏈要求高:對工具和基礎設施提出了更高要求,需要構建和維護適合大型代碼庫的復雜工具鏈和基礎設施。比如使用lerna,rush 或者 Nx 來做Monorepo,要與司內各基建平臺打通就不是那么簡單。

綜上,Monorepo可能更適合大型組織或需要緊密協作的大團隊,而Multirepo則更適合獨立發展且相互依賴性較小的項目。

@shugen -CSIG應用開發▼

對基礎依賴的統一管理和升級很舒服,也更方便做底層能力封裝,CI/CD 方便也簡單不少。


責任編輯:趙寧寧 來源: 騰訊技術工程
相關推薦

2021-11-25 13:12:12

Mobileye英特爾寶馬

2025-02-21 08:00:00

大型語言模型AI人工智能

2011-08-23 10:45:08

Linux蘋果Mac OS

2023-12-07 07:02:00

大倉權限設計

2012-03-23 22:32:38

iOS

2011-03-10 16:57:29

三星Symbianbada

2011-07-29 10:49:35

2009-01-19 16:09:31

SaaS軟件即服務開發者

2020-02-11 17:15:09

開發者拋棄 Executors

2020-02-13 09:14:16

Executors開發Java

2023-07-12 20:12:57

前端Monorepo代碼

2013-08-29 14:11:00

開發者AndroidiOS

2009-05-22 09:46:13

開源Ruby on RaiRails

2013-06-05 13:49:41

EclipseIntelliJ

2022-02-04 23:15:36

手機折疊屏廠商

2013-11-11 13:35:44

虛擬化應用

2021-10-20 16:00:05

Windows 11操作系統微軟

2012-06-13 01:23:30

開發者程序員

2013-03-11 00:38:01

Android開發者版本

2017-03-31 20:16:53

華為開發者聯盟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区久久久蜜月 | 日韩一区av | 精品日韩一区二区 | 中文在线a在线 | 日产久久 | 一区二区久久 | 国产精品一区在线观看你懂的 | 伊人网站视频 | 国产精品美女久久久久aⅴ国产馆 | 久久精品屋 | 亚洲一区二区三区在线视频 | 国产主播第一页 | 99久久婷婷国产综合精品电影 | 99久久婷婷国产综合精品首页 | 亚洲一区在线播放 | 精品日韩在线观看 | 日韩av免费在线观看 | 国产成人小视频 | 91电影| 黄视频国产 | 精品久久久久久亚洲精品 | 国产精品国产成人国产三级 | 国产乱码精品一区二区三区忘忧草 | 久草在线影 | 成人aaa视频| 精品视频一区二区 | 精品影院 | 午夜久久| 国产美女在线观看 | 艹逼网 | 天堂一区二区三区 | 久久久久久精 | 一本在线 | 另类亚洲视频 | 久久极品 | 黄色一级毛片免费看 | 欧美精品一区二区三区在线 | 午夜久草 | 久久国产精品视频 | 日韩高清中文字幕 | 久久精品成人热国产成 |