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

單體中心代碼庫 vs. 分布式代碼庫

開發 開發工具 分布式
一些正在快速增長或者需要轉型的中小型公司,是應該學習Google的核心代碼庫,還是學習Linux,Android以及OpenStack等開源項目?

去年中旬兩位Google工程師在《美國計算機學會通訊》發表了一篇論文“Why Google Stores Billions of Lines of Code in a Single Repository”,它介紹了谷歌為什么采用一個定制的大型單體中心代碼庫,并且在多個大會上分享了這個話題。InfoQ中文網站也發表了一篇較為客觀的文章”Google為什么要把數十億行代碼放到一個庫中?”來評論Google這種代碼管理方法 ,其中總結了Google宣稱的這種唯一中心庫代碼管理方式的優勢,包括:

  • 統一版本控制
  • 廣泛地代碼共享和重用
  • 簡化依賴管理,避免菱形依賴
  • 原子修改
  • 大規模重構
  • 跨團隊協作
  • 靈活的團隊邊界和代碼所有權
  • 代碼可見性以及清晰的樹形結構提供了隱含的團隊命名空間

并且也總結了Google這種唯一中心庫代碼管理方式的一些問題,包括:

  • 工具投入(Google開發了自己專用的Eclipse ID插件)
  • 代碼庫復雜性(需要有依賴重構和代碼清理輔助工具)
  • 代碼健康(專用工具可以自動檢測和刪除無用代碼、分派代碼評審任務等)

[[196923]]

對于Google這樣的大型團隊或者公司,他們的代碼管理看起來是簡單的單體代碼庫管理方式,其實真正管理起來并不簡單,甚至需要大量的額外投入來輔助管理,因為它是在各種前提和限制條件下的歷史產物,其中最為重要的兩點是:

(1) 由于當前大部分的商業和開源代碼管理工具或者系統在管理一個超過10億個文件,20億行代碼的中心庫時效率都十分低下,而且隨時都有大量的代碼同步(包括代碼獲取和提交)請求。

所以為了在不影響程序員日常工作效率的前提下對海量代碼進行高效管理,一般情況下這樣的團隊或者公司都會開發或者定制自己專用的代碼管理工具和系統,比如Google開發的Piper,Facebook定制化的Mercurial和Microsoft定制化的Git系統GVFS等。

(2) 大型公司一般是經過長時間的積累才有如此巨量的代碼,并且都有自己特定的經歷和原因,比如開發了大量定制化的外圍輔助工具和系統,形成了特有的一套代碼管理模型和流程。所以更換這種大型代碼庫的管理工具成本非常高,而且現實中很難找到一個代碼管理系統能滿足已有的管理和流程需求,所以一般情況下都不會更換。

比如Google最開始使用Peforce來管理其單體中心代碼庫,后來發現它無法支持其巨大的代碼量,所以開發了Piper用以管理中心庫管理,并且其在代碼健康上投入了大量的成本,比如開發了專用的工具來自動檢測和刪除無用代碼、分派代碼評審任務等。雖然Google也嘗試過向Git進行遷移,最終由于文化和工作流程的巨大變更而放棄了,但是仍然對于一些新的實驗性的或者一些開源的項目會嘗試使用一些新的代碼管理工具。

[[196924]]

雖然說Google的大部分核心代碼都是使用Piper在一個中心代碼庫進行管理和維護的,但是它仍然有不少開源項目,其中包括Android Open Source Project(2008)和Chromium(2014轉向Git)這樣的大型項目,或者創新的初始項目依然可以選擇使用Git這樣的開源代碼管理工具進行代碼管理,所以應該給予項目組足夠的權利去選擇適合自己項目的代碼管理工具,從而讓團隊感受到足夠的尊重和動力。

而世界范圍內像Google和Microsoft等有財力和物力去開發或者定制一款適合自己的專用代碼管理及其周邊輔助工具的公司是很少的,而絕大多數公司只適合通過購買商用,使用開源免費或者使用基于云的代碼管理系統來管理自己的代碼。

由于選擇單體代碼庫還是分布式代碼庫直接影響了團隊對于代碼管理工具的選擇和使用,所以一些正在快速增長或者需要轉型的中小型公司就對代碼管理方式和代碼管理工具的選擇產生了疑惑:是應該學習Google的核心代碼庫而繼續使用單體代碼庫的管理方式,然后自己開發和定制化自有的代碼管理工具,還是學習Linux,Android以及OpenStack等開源項目而轉向分布式代碼管理方式和免費的分布式代碼管理工具,或者直接使用基于云端的代碼管理系統等。

為此我總結了一個代碼管理工具,選擇四象限圖用以幫助中小型公司選擇代碼管理方式和代碼管理工具:

代碼管理工具

其中資源主要是指錢和人力資源,而技術是指項目組或者公司里面的大部分工程師的技術能力。

通過這個四象限圖,中小型公司就可以通過另外一個角度去思考和判斷自己應該選用什么樣的代碼管理方式和代碼管理工具。而對于大型軟件公司,比如類似于Google,Facebook,Microsoft等這樣規模的公司就不適合用這個四象限模型,而是需要根據自身具體的情況而自己開發或者定制的代碼管理工具,可以是中心服務器式,也可以是分布式,無論什么形式,只要適合自己的實際情況就可以了。

【本文是51CTO專欄作者“ThoughtWorks”的原創稿件,微信公眾號:思特沃克,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2025-05-13 03:22:00

2021-11-08 10:52:02

數據庫分布式技術

2020-09-17 11:12:03

分布式系統代碼檢代碼檢視

2025-03-06 11:30:15

2022-06-13 10:01:36

Apollo攜程框架

2024-10-09 17:12:34

2021-12-20 15:44:28

ShardingSph分布式數據庫開源

2013-04-26 16:18:29

大數據全球技術峰會

2023-03-26 12:43:31

數據庫KeyValue

2023-12-05 07:30:40

KlustronBa數據庫

2014-06-30 14:20:05

NoSQL數據庫

2024-03-18 08:50:20

分布式系統機制

2021-05-08 06:05:28

分布式數據中心數據中心網絡

2023-06-14 17:56:54

2009-12-04 10:43:53

VS部署

2018-09-30 10:47:46

存儲件定義數據中心

2011-11-29 09:49:16

數據庫其他數據庫NoSQL

2013-03-05 15:36:43

NoSQL分布式系統

2022-03-10 06:36:59

分布式數據庫排序

2021-07-30 06:58:28

數據庫分布式映射
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品中文字幕 | 热re99久久精品国99热观看 | 自拍偷拍亚洲一区 | 亚洲一区二区电影在线观看 | 欧美久久精品一级c片 | 亚洲精品中文字幕 | 日本三级网 | 九九九视频在线观看 | 古装三级在线播放 | 亚洲91 | 日韩高清国产一区在线 | 欧美日韩一区二区在线观看 | 国产在线播放av | 中文在线а√在线8 | 亚洲成人久久久 | 中文字幕一区二区视频 | 午夜在线 | 中文字幕在线精品 | 日韩一区二区精品 | 国产线视频精品免费观看视频 | 九九一级片| 成人影院在线 | 在线国产一区二区三区 | 成人视屏在线观看 | 午夜亚洲| 久久亚洲一区二区三区四区 | 国产成人免费在线 | 爱操av| 国产一区影院 | 一级黄色片一级黄色片 | 色免费视频 | 一级中国毛片 | 瑟瑟视频在线看 | 在线观看黄色电影 | 日韩免费网站 | 国产精品中文字幕在线播放 | 国产精品成人一区二区三区夜夜夜 | 天天操操操操操 | 国产一级电影在线观看 | 久久久国产精品网站 | 97视频精品 |