爆测一周,22年必看最细致代码托管工具测评
簡介:網(wǎng)上代碼托管選型的文章不少,不過大多內(nèi)容有點(diǎn)久遠(yuǎn),很多最新的平臺(tái)沒有包括進(jìn)來,個(gè)人花了大概一個(gè)星期的時(shí)間,把目前市面上比較火的代碼托管平臺(tái)(開源托管平臺(tái):Github、Gitee;企業(yè)級(jí)托管平臺(tái):Gitlab、阿里云效Codeup、 騰訊Coding)做了一些比較,比較的維度包括速度、成本、產(chǎn)研工具鏈完整性、安全、統(tǒng)計(jì)報(bào)表等,希望可以幫助正在進(jìn)行代碼托管選型的技術(shù)同行做決策選型。
版權(quán)聲明: 本文轉(zhuǎn)載于公眾號(hào) [JavaGuide] 。原文鏈接:【爆測一周!22年必看最細(xì)致代碼托管工具測評(píng)】
前言
大家好,我是 Gudie。今天的內(nèi)容主要是為了幫助大家在進(jìn)行代碼托管工具選型時(shí)能夠考慮得更加全面。
大家平時(shí)也接觸Github、Gitee 這些開源場景的代碼托管平臺(tái),他們對(duì)個(gè)人開發(fā)者友好,可以接觸到很多優(yōu)秀的開源項(xiàng)目。但對(duì)團(tuán)隊(duì)代碼管理,光這些還不夠,還需要考慮成本、速度、和其他研發(fā)工具打通等。最近在幫初創(chuàng)企業(yè)團(tuán)隊(duì)做代碼托管的選型,由于公司業(yè)務(wù)屬性,迭代比較快,人力緊張,沒有足夠資金成本投入自建代碼托管,而且最擔(dān)心的是自己搞的話容災(zāi)安防做的不到位,導(dǎo)致企業(yè)代碼數(shù)據(jù)出問題。
網(wǎng)上代碼托管選型的文章不少,不過大多內(nèi)容有點(diǎn)久遠(yuǎn),很多最新的平臺(tái)沒有包括進(jìn)來,個(gè)人花了大概一個(gè)星期的時(shí)間,把目前市面上比較火的代碼托管平臺(tái)(開源托管平臺(tái):Github、Gitee;企業(yè)級(jí)托管平臺(tái):Gitlab、阿里云效Codeup、 騰訊Coding)做了一些比較,比較的維度包括速度、成本、產(chǎn)研工具鏈完整性、安全、統(tǒng)計(jì)報(bào)表等,希望可以幫助正在進(jìn)行代碼托管選型的技術(shù)同行做決策選型。
在展開詳細(xì)比較前,先給出個(gè)人體驗(yàn)的結(jié)論供大家參考,方便大家對(duì)應(yīng)到關(guān)注的內(nèi)容:
| 平臺(tái)性質(zhì) | 國外開源托管平臺(tái) | 國外企業(yè)級(jí)托管平臺(tái) | 國內(nèi)開源托管平臺(tái) | 國內(nèi)企業(yè)級(jí)托管平臺(tái) | 國內(nèi)企業(yè)級(jí)托管平臺(tái) |
| 適用對(duì)象 | 開源,個(gè)人向 | 企業(yè)級(jí),各種類型規(guī)模團(tuán)隊(duì)均適用,而自建版本有維護(hù)成本和風(fēng)險(xiǎn),適合有人力有資本的大企業(yè)選擇 | 開源,個(gè)人向 | 企業(yè)級(jí),功能全面,各種類型規(guī)模團(tuán)隊(duì)均適用,代碼托管、CICD、測試管理等產(chǎn)品模塊可以自由搭配組合 | 企業(yè)級(jí),功能全面,但產(chǎn)品能力較簡單,例如CICD原生支持的組件少,資源權(quán)限管理能力弱,適合小團(tuán)隊(duì)場景使用 |
| 速度 | 慢(無代理 KiB/s 級(jí)) | 慢(無代理 KiB/s 級(jí)) | 中 | 快 (MiB/s 級(jí)) | 快(MiB/s 級(jí)) |
| 研發(fā)工具鏈完整性 | 托管功能完整,但平臺(tái)原生支持如測試管理、部署管理較弱,不過可以方便地通過集成三方和插件市場補(bǔ)足 | 托管功能完整,且具備DevOps一站式管理能力 | 托管功能完整,基本無DevOps其他模塊支持 | 托管功能完整,且具備DevOps一站式管理能力 | 托管功能完整,但DevOps其他模塊如測試管理、持續(xù)集成與部署支持較弱 |
| 安全功能 | 國外產(chǎn)品不評(píng)價(jià) | 國外產(chǎn)品不評(píng)價(jià) | 開源平臺(tái)不評(píng)價(jià) | 高 | 較高 |
| 數(shù)據(jù)度量 | 插件、無企業(yè)視角 | 維度豐富(企業(yè)、庫視角,研發(fā)價(jià)值流視圖) | 看上去維度較少,主要是提交、行數(shù)的代碼貢獻(xiàn)指標(biāo) | 維度豐富(企業(yè)、庫視角,除了提交、代碼行這類代碼貢獻(xiàn)外,還有成員的評(píng)審活動(dòng)參與率、千行代碼評(píng)論數(shù)、掃描問題趨勢等) | 維度較少(企業(yè)視角,目前看到提交、代碼行、合并請求次數(shù)這3個(gè)指標(biāo)) |
| 價(jià)格/容量 | 基礎(chǔ)版免費(fèi),高級(jí)功能付費(fèi) ; eam:4美元人/月 ; Enterprise:21美元人/月 | 基礎(chǔ)版免費(fèi),安全規(guī)范等企業(yè)特性付費(fèi) Premium:19美元人/月Ultimate:99美元人/月 | 免費(fèi)企業(yè)版;人數(shù):5人;倉庫總?cè)萘?#xff1a;5G 單倉庫:<=500MLFS:無 | 免費(fèi)企業(yè)版:人數(shù):不限倉庫總?cè)萘?#xff1a;不限單倉庫:<=5GLFS:不限 | 免費(fèi)企業(yè)版:人數(shù):不限倉庫總?cè)萘?#xff1a;100G單倉庫:<=2GLFS:? |
使用場景
在選型時(shí),首先要明確你的使用場景,是想在開源社區(qū)里協(xié)作開發(fā)(通常是個(gè)人開發(fā)者),還是想要擁有私密的代碼倉庫(通常是企業(yè)團(tuán)隊(duì))。
開源協(xié)作場景
如果在意開源場景,目前可選擇國外的 Github,或是國內(nèi)的 Gitee。
Github
GitHub 代碼托管平臺(tái),包含了全世界很多優(yōu)秀的開源項(xiàng)目,可以從GitHub獲取到很多很多優(yōu)秀的開源項(xiàng)目來進(jìn)行學(xué)習(xí),也可以將自己的項(xiàng)目上傳上去與他人分享,現(xiàn)在已被微軟收購。GitHub最開始并沒有免費(fèi)的私有倉庫,被微軟收購之后,個(gè)人用戶才支持了創(chuàng)建私有倉庫,雖然也能支持私有庫,但他的主要場景還是集中在開源協(xié)作這件事上。
對(duì)于微軟收購GitHub,不少用戶的反應(yīng)比較激烈。人們覺得開源必須得中立,有了微軟背景就不獨(dú)立了,GitHub跟開發(fā)者之間的距離,可能會(huì)越走越遠(yuǎn),后續(xù)如何發(fā)展得繼續(xù)觀察。
Gitee
Gitee 碼云是國內(nèi)的一個(gè)開源代碼托管社區(qū)(哈哈這名字總讓人覺得和阿里有關(guān)系,其實(shí)阿里云有自己的代碼托管服務(wù)),由于GitHub屬于國外的網(wǎng)站,因此國內(nèi)用戶訪問的時(shí)候,經(jīng)常會(huì)很慢,影響體驗(yàn),而 Gitee 不存在訪問速度慢的問題,而且中文化也比較友好,比較適合國內(nèi)的開源愛好者們使用。不過由于百度大力投資了Gitee,不少開發(fā)者認(rèn)為它也不這么中立了。
雖然對(duì)比 Github 還有較大差距,不過隨著國家政策的鼓勵(lì),國內(nèi)開源也正在快速發(fā)展的過程中。
企業(yè)/私有托管場景
如果你對(duì)代碼私密性要求比較高,通常在企業(yè)、團(tuán)隊(duì)私有代碼管理場景下使用,那么國外的Gitlab,國內(nèi)的阿里云云效Codeup、騰訊Coding 是更好的選擇。
Gitlab
GitLab 利用 Ruby on Rails 開發(fā),據(jù)說最早也用過 Github 進(jìn)行托管,后獨(dú)立發(fā)展為知名的代碼托管平臺(tái),同時(shí)支持 SaaS 版和自管理的私有化部署版本,由于其豐富的代碼協(xié)作管控能力,備受企業(yè)青睞,不過因?yàn)槭菄獾钠脚_(tái),云服務(wù)的訪問速度還是存在慢和不穩(wěn)定的問題。
對(duì)于企業(yè),還有一個(gè)選擇是私有化部署托管服務(wù)。例如 Gitlab 就開放了基礎(chǔ)版本供企業(yè)自行部署使用,目前在國內(nèi)企業(yè)中的使用量還是比較廣泛的。然而私有化部署是一把雙刃劍,如果企業(yè)有足夠的資本和人力,將托管服務(wù)部署在自己的服務(wù)器上感覺最安全,可是如果容災(zāi)和防護(hù)不到位,宕機(jī)數(shù)據(jù)丟失、黑客拖走代碼也不是沒有發(fā)生過。所以,如果自信有足夠的技術(shù)實(shí)力的企業(yè),可以選擇私有化部署,反之,選擇大公司提供的 SaaS 托管云服務(wù)是更好的決策。
阿里云云效 Codeup
提到阿里云的代碼托管,一搜全是阿里云 Code,然而事實(shí)是這個(gè)平臺(tái)早在 2020 年就已經(jīng)升級(jí)成阿里云 Codeup?(阿里云登錄 - 歡迎登錄阿里云,安全穩(wěn)定的云計(jì)算服務(wù)平臺(tái))了,同時(shí)帶了個(gè)云效的品牌名,升級(jí)為提供覆蓋項(xiàng)目管理、代碼管理、測試管理、持續(xù)集成、制品管理、發(fā)布管理的 DevOps 一站式研發(fā)管理平臺(tái)。
聽起來挺復(fù)雜,簡單說就是你在開發(fā)過程中需要用到的各種工具都在一個(gè)平臺(tái)上提供給你了,愿意用哪些你自己選。這對(duì)于企業(yè)來說大大降低了管理難度,以前有一堆賬號(hào)一堆工具,切來切去自己都混亂了,數(shù)據(jù)也分散在各個(gè)工具里,人也不好管,來個(gè)新人教半天講不明白。現(xiàn)在一個(gè)平臺(tái)一套賬號(hào)就搞定了。
鑒于本文主要聊代碼托管,就把云效里面托管產(chǎn)品 Codeup 拎出來看。它提供基于 Git 的代碼托管服務(wù),主打企業(yè)級(jí)托管,因此在管控和安全層面做了不少加強(qiáng),由于在國內(nèi),訪問速度相比 Gitlab、Github 快不少。
Codeup 也提供私有化部署服務(wù),不過目前看價(jià)格相比公有云稍貴,適合有預(yù)算、對(duì)代碼上云有顧慮的企業(yè)。
騰訊 CODING
CODING 是面向軟件研發(fā)團(tuán)隊(duì)的研發(fā)協(xié)作管理平臺(tái),發(fā)展方向和上面阿里云一樣,也是 DevOps 一站式。
CODING 本來專注做代碼托管,產(chǎn)品比較小而美,很適合個(gè)人開發(fā)者使用,正因?yàn)橛夏贻p開發(fā)者的形象,所以其 LOGO 是個(gè)可愛的小猴子(程序猿)。然而在 2019 年被騰訊收購成為其全資子公司后,開始轉(zhuǎn)型做企業(yè)服務(wù),將個(gè)人空間升級(jí)成為了團(tuán)隊(duì)空間,陸續(xù)加入了測試、持續(xù)集成、制品庫、部署管理等模塊,也支持對(duì)接騰訊云賬號(hào)體系了,功能維度逐漸豐富,雖然有的功能模塊能力還相對(duì)簡單,但是支撐小團(tuán)隊(duì)的簡單研發(fā)場景是完全沒問題的。
同樣的,因?yàn)槭菄鴥?nèi)的云服務(wù),訪問速度比較快:
在聊場景的時(shí)候,順便簡單介紹了國內(nèi)外這幾家比較有名的平臺(tái)背景,接下來我會(huì)從不同的特性上比較這幾個(gè)平臺(tái)的差異,分享我的經(jīng)驗(yàn)給大家參考。
企業(yè)/團(tuán)隊(duì)托管場景的比較
由于如果是開源場景,選型已經(jīng)非常明確了:國外的 Github 或國內(nèi)的 Gitee。
接下來談?wù)勥m合企業(yè)、團(tuán)隊(duì)使用的代碼托管我建議關(guān)注些啥,這部分主要分析 Gitlab、Codeup 和 Coding 這三個(gè)企業(yè)級(jí)的代碼托管產(chǎn)品。
速度
我個(gè)人對(duì)代碼托管平臺(tái)的要求首先就是速度一定要快,畢竟每天都得用,如果推拉速度慢非常影響體驗(yàn)。
我使用 5M 做 PUSH 測試, 180 M 的示例代碼庫做 CLONE 測試,在固定網(wǎng)絡(luò)下分別在三個(gè)平臺(tái)推拉,統(tǒng)計(jì)的時(shí)間如下:
| SSH PUSH | 2.9s | 1s | 0.9s |
| SSH CLONE | 59.2s | 15.1s | 18.5s |
總結(jié):
- 在推拉速度這一條上,除非機(jī)場好,否則國外的平臺(tái)就已經(jīng)被 PASS 了;
- Codeup 和 Coding Push 速度差不多,阿里 Codeup 的 Clone 速度稍微快一點(diǎn)。國內(nèi)這兩家速度都是秒級(jí)ok的,操作體驗(yàn)都挺好。
價(jià)格和容量
其次,價(jià)格也是需要考慮的一個(gè)因素。
在代碼托管這個(gè)白熱化市場里,大家的價(jià)格都已經(jīng)打到地板上趴著了,不計(jì)成本搶開發(fā)者是現(xiàn)狀。
對(duì)于適合企業(yè)使用的套餐,三個(gè)平臺(tái)價(jià)格和容量限制如下:
總結(jié):
- Gitlab 適合企業(yè)使用的功能是需要付費(fèi)的,除了購買 SaaS 版本的高級(jí)套餐外,還可以選擇自建 Gitlab,不過這個(gè)成本和風(fēng)險(xiǎn)都比較高,僅建議有技術(shù)實(shí)力和經(jīng)費(fèi)的企業(yè)考慮,而且國外產(chǎn)品的技術(shù)支持也會(huì)比較困難;
- 國內(nèi)的兩家來看,免費(fèi)企業(yè)版 Codeup 給的容量會(huì)更多一些,人數(shù)、總?cè)萘亢蚅FS都是不限制,單個(gè)倉庫容量也比 Coding 大一倍以上;從付費(fèi)高級(jí)版來說,價(jià)格相差19塊,基本持平。但是 Coding 的一些付費(fèi)功能在 Codeup 是可以免費(fèi)使用的,例如 IP 白名單、訪問審計(jì),而且付費(fèi)后 Coding 代碼、制品、流水線時(shí)長仍有限制,看起來 Codeup 的不限更加劃算;因?yàn)槲覀児静豢紤]私有化部署,我就沒有咨詢了,大家有需要可以去他們官網(wǎng)上直接聯(lián)系客服咨詢。
研發(fā)工具鏈功能完整性
在基礎(chǔ)托管的能力上,大家都是 Git 的托管,功能大差不差,都能滿足企業(yè)訴求。然而企業(yè)的研發(fā)生產(chǎn)過程光代碼托管一個(gè)工具肯定不夠,所有有了 DevOps 工具鏈這么一說,從 DevOps 工具鏈完整性上來看,對(duì)比如下:
總結(jié):
- Gitlab 擴(kuò)展性很強(qiáng),能夠靈活定制,有技術(shù)能力、能保障網(wǎng)絡(luò)速度的企業(yè)可以選擇它;
- 基于阿里的研發(fā)管理經(jīng)驗(yàn),Codeup 的一站式產(chǎn)品能力更加成熟,能夠支持大中小各類型的企業(yè)分別在復(fù)雜、簡單的場景下按需使用其產(chǎn)品模塊,組裝出適合企業(yè)自己的研發(fā)流程規(guī)范;
- 騰訊 Coding 相對(duì)來說功能較簡單,對(duì)復(fù)雜的研發(fā)發(fā)布過程支持會(huì)弱一些,例如CICD原生支持的組件少、構(gòu)建沒有容器化、資源權(quán)限管理粒度較粗,比較適合十幾人的小企業(yè)或團(tuán)隊(duì)使用;
安全性
安全是個(gè)嚴(yán)肅的話題,特別是對(duì)于企業(yè)來說,代碼可是關(guān)乎身家性命的重要資產(chǎn)。造成安全風(fēng)險(xiǎn)的原因有很多:
- 有可能是不經(jīng)意使用了不安全的開源軟件包,例如前一陣子全網(wǎng)轟動(dòng)的 Log4j 漏洞事件;
- 也可能是使用了不安全的開源工具,例如國家信息安全漏洞共享平臺(tái)發(fā)布的《關(guān)于SonarQube系統(tǒng)存在未授權(quán)訪問漏洞的安全公告》(CNTA-2021-0031),對(duì)SonarQube系統(tǒng)未授權(quán)訪問漏洞(CNVD-2021-84502)作出預(yù)警,攻擊者利用該漏洞,可在未授權(quán)的情況下獲取代碼的敏感數(shù)據(jù);
- 還有可能是人為操作不當(dāng)造成,例如某公司程序員把代碼不經(jīng)任何處理上傳到了 Github 的公共代碼庫,泄露了 IP 和用戶名密碼,導(dǎo)致黑客對(duì)整個(gè)數(shù)據(jù)庫進(jìn)行了拖庫。
安全問題十面埋伏,代碼托管平臺(tái)給企業(yè)提供什么保護(hù)呢?在這一塊咱們不看國外的產(chǎn)品,他們安不安全我也拿不準(zhǔn),就看看國內(nèi)這兩家在安全方面做的怎么樣吧。
Codeup 和 CODING 都是大廠背書,阿里和騰訊基于自己的云安全產(chǎn)品,平臺(tái)基礎(chǔ)設(shè)施的安全性相信還是比較有保障的。例如 Codeup 對(duì)外宣稱的安全白皮書里明確說明了基礎(chǔ)設(shè)置安全、云效應(yīng)用安全、數(shù)據(jù)存儲(chǔ)安全、數(shù)據(jù)傳輸安全等是如何實(shí)現(xiàn)的:
對(duì)于國內(nèi)云 SaaS 的托管平臺(tái)來說,阿里云 Codeup 對(duì)安全性提的最多,官網(wǎng)上也是把安全放在第一位進(jìn)行宣傳,可能和它宣傳的企業(yè)級(jí)代碼托管平臺(tái)定位有關(guān),安全性是它最看重的能力。
在平臺(tái)基礎(chǔ)設(shè)施安全方面,兩家大廠都有保障。Codeup 還支持用戶自己可以定時(shí)將代碼自動(dòng)備份到自己的OSS,不過這OSS得你自己買存儲(chǔ)空間。Codeup 還支持了所謂倉庫加密的能力,號(hào)稱能把存儲(chǔ)在云端的代碼都加密存儲(chǔ),阿里的工作人員和黑客都沒法破譯存儲(chǔ)在云上的數(shù)據(jù)代碼,第一次看到這功能還挺有意思。
總結(jié): 從安全性來說,基礎(chǔ)安全能力兩家都不錯(cuò),其中阿里云云效 Codeup 看上去更加全面一些。
數(shù)據(jù)度量
企業(yè)度量大概率會(huì)和人員績效掛鉤,企業(yè)場景的度量就得?全面、準(zhǔn)確、可定制?。在數(shù)據(jù)度量這件事上,阿里和騰訊最近都鉚足了勁在建設(shè)。
騰訊 CODING 剛上了「研發(fā)度量」模塊,還在Beta階段,可以自定義卡片和視圖,數(shù)據(jù)包括三類:
- 提交次數(shù)
- 增減代碼量
- 合并請求
視圖包括團(tuán)隊(duì)和個(gè)人視圖,目前看內(nèi)容還太簡單,期待下后續(xù)的發(fā)展:
阿里云 Codeup 也開放了「效能洞察」模塊,里面的數(shù)據(jù)維度看起來是多了不少,簡單看了看有:
- 代碼總行數(shù)和變更增減量統(tǒng)計(jì);
- 代碼提交次數(shù)、時(shí)段統(tǒng)計(jì);
- 代碼變更量、提交次數(shù)人員排名;
- 代碼庫提交評(píng)審率、千行代碼評(píng)論數(shù);
- 代碼安全問題趨勢和個(gè)數(shù)排名;
支持分別從團(tuán)隊(duì)、用戶組和個(gè)人視圖查看研發(fā)活動(dòng)數(shù)據(jù),可以輔助評(píng)估成員研發(fā)貢獻(xiàn)情況和項(xiàng)目進(jìn)展情況,截幾個(gè)圖示意下:
結(jié)論:
企業(yè)的數(shù)據(jù)度量除了代碼研發(fā)的,還有項(xiàng)目管理的。目前看 Coding 的「工作負(fù)載」模塊收費(fèi)才能使用,所以無法體驗(yàn)內(nèi)容,但從代碼數(shù)據(jù)統(tǒng)計(jì)來說,阿里云 Codeup 數(shù)據(jù)維度相對(duì)多一些,除了代碼貢獻(xiàn)這個(gè)維度外,還可以從評(píng)審活動(dòng)參與率、掃描問題趨勢等維度去了解人員對(duì)代碼質(zhì)量的投入度。
最后
由于我是為企業(yè)選型,老板認(rèn)為國外 SaaS 平臺(tái)的變數(shù)太多了,還是讓我關(guān)注國內(nèi)的產(chǎn)品。在速度差不多的情況下,對(duì)比了成本、安全性和數(shù)據(jù)報(bào)表這幾個(gè)重點(diǎn)特性后,我們團(tuán)隊(duì)討論最終選擇了 阿里云云效 。
這個(gè)決定還有一個(gè)重要的原因,我們公司正在用阿里云的 ECS 服務(wù)器,配合用阿里云云效這一套研發(fā)工具非常順手,以前用 Jenkins 對(duì)接 ECS 要配一堆東西,用云效選擇幾個(gè)參數(shù)就連接上了,這點(diǎn)挺讓人驚喜。
當(dāng)然,代碼托管產(chǎn)品還具備其他能力如代碼檢測、代碼評(píng)審等,我就沒有一一比對(duì)了,目前只列舉了我最關(guān)注的幾個(gè)方面,有興趣你們也可以去操作體驗(yàn)一下。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的爆测一周,22年必看最细致代码托管工具测评的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dubbo-Admin 正式支持 3.0
- 下一篇: 阿里园区的这个“格子间” 成为企业高效协