版权声明: 本文转载于公众号 [JavaGuide] 。
原文链接:【https://mp.weixin.qq.com/s/A7...】
前言
大家好,我是 Gudie。今天的内容主要是为了帮助大家在进行代码托管工具选型时能够考虑得更加全面。
大家平时也接触Github、Gitee 这些开源场景的代码托管平台,他们对个人开发者友好,可以接触到很多优秀的开源项目。但对团队代码管理,光这些还不够,还需要考虑成本、速度、和其他研发工具打通等。最近在帮初创企业团队做代码托管的选型,由于公司业务属性,迭代比较快,人力紧张,没有足够资金成本投入自建代码托管,而且最担心的是自己搞的话容灾安防做的不到位,导致企业代码数据出问题。
网上代码托管选型的文章不少,不过大多内容有点久远,很多最新的平台没有包括进来,个人花了大概一个星期的时间,把目前市面上比较火的代码托管平台(开源托管平台:Github、Gitee;企业级托管平台:Gitlab、阿里云效Codeup、 腾讯Coding)做了一些比较,比较的维度包括速度、成本、产研工具链完整性、安全、统计报表等,希望可以帮助正在进行代码托管选型的技术同行做决策选型。
在展开详细比较前,先给出个人体验的结论供大家参考,方便大家对应到关注的内容:
维度 | Github(国外) | Gitlab(国外) | Gitee | 阿里云云效Codeup | 腾讯Coding |
---|---|---|---|---|---|
平台性质 | 国外开源托管平台 | 国外企业级托管平台 | 国内开源托管平台 | 国内企业级托管平台 | 国内企业级托管平台 |
适用对象 | 开源,个人向 | 企业级,各种类型规模团队均适用,而自建版本有维护成本和风险,适合有人力有资本的大企业选择 | 开源,个人向 | 企业级,功能全面,各种类型规模团队均适用,代码托管、CICD、测试管理等产品模块可以自由搭配组合 | 企业级,功能全面,但产品能力较简单,例如CICD原生支持的组件少,资源权限管理能力弱,适合小团队场景使用 |
速度 | 慢(无代理 KiB/s 级) | 慢(无代理 KiB/s 级) | 中 | 快 (MiB/s 级) | 快(MiB/s 级) |
研发工具链完整性 | 托管功能完整,但平台原生支持如测试管理、部署管理较弱,不过可以方便地通过集成三方和插件市场补足 | 托管功能完整,且具备DevOps一站式管理能力 | 托管功能完整,基本无DevOps其他模块支持 | 托管功能完整,且具备DevOps一站式管理能力 | 托管功能完整,但DevOps其他模块如测试管理、持续集成与部署支持较弱 |
安全功能 | 国外产品不评价 | 国外产品不评价 | 开源平台不评价 | 高 | 较高 |
数据度量 | 插件、无企业视角 | 维度丰富(企业、库视角,研发价值流视图) | 看上去维度较少,主要是提交、行数的代码贡献指标 | 维度丰富(企业、库视角,除了提交、代码行这类代码贡献外,还有成员的评审活动参与率、千行代码评论数、扫描问题趋势等) | 维度较少(企业视角,目前看到提交、代码行、合并请求次数这3个指标) |
价格/容量 | 基础版免费,高级功能付费 ; eam:4美元人/月 ; Enterprise:21美元人/月 | 基础版免费,安全规范等企业特性付费 Premium:19美元人/月Ultimate:99美元人/月 | 免费企业版;人数:5人;仓库总容量:5G 单仓库:<=500MLFS:无 | 免费企业版:人数:不限仓库总容量:不限单仓库:<=5GLFS:不限 | 免费企业版:人数:不限仓库总容量:100G单仓库:<=2GLFS:? |
使用场景
在选型时,首先要明确你的使用场景,是想在开源社区里协作开发(通常是个人开发者),还是想要拥有私密的代码仓库(通常是企业团队)。
开源协作场景
如果在意开源场景,目前可选择国外的 Github,或是国内的 Gitee。
Github
GitHub 代码托管平台,包含了全世界很多优秀的开源项目,可以从GitHub获取到很多很多优秀的开源项目来进行学习,也可以将自己的项目上传上去与他人分享,现在已被微软收购。GitHub最开始并没有免费的私有仓库,被微软收购之后,个人用户才支持了创建私有仓库,虽然也能支持私有库,但他的主要场景还是集中在开源协作这件事上。
对于微软收购GitHub,不少用户的反应比较激烈。人们觉得开源必须得中立,有了微软背景就不独立了,GitHub跟开发者之间的距离,可能会越走越远,后续如何发展得继续观察。
Gitee
Gitee 码云是国内的一个开源代码托管社区(哈哈这名字总让人觉得和阿里有关系,其实阿里云有自己的代码托管服务),由于GitHub属于国外的网站,因此国内用户访问的时候,经常会很慢,影响体验,而 Gitee 不存在访问速度慢的问题,而且中文化也比较友好,比较适合国内的开源爱好者们使用。不过由于百度大力投资了Gitee,不少开发者认为它也不这么中立了。
虽然对比 Github 还有较大差距,不过随着国家政策的鼓励,国内开源也正在快速发展的过程中。
企业/私有托管场景
如果你对代码私密性要求比较高,通常在企业、团队私有代码管理场景下使用,那么国外的Gitlab,国内的阿里云云效Codeup、腾讯Coding 是更好的选择。
Gitlab
GitLab 利用 Ruby on Rails 开发,据说最早也用过 Github 进行托管,后独立发展为知名的代码托管平台,同时支持 SaaS 版和自管理的私有化部署版本,由于其丰富的代码协作管控能力,备受企业青睐,不过因为是国外的平台,云服务的访问速度还是存在慢和不稳定的问题。
对于企业,还有一个选择是私有化部署托管服务。例如 Gitlab 就开放了基础版本供企业自行部署使用,目前在国内企业中的使用量还是比较广泛的。然而私有化部署是一把双刃剑,如果企业有足够的资本和人力,将托管服务部署在自己的服务器上感觉最安全,可是如果容灾和防护不到位,宕机数据丢失、黑客拖走代码也不是没有发生过。所以,如果自信有足够的技术实力的企业,可以选择私有化部署,反之,选择大公司提供的 SaaS 托管云服务是更好的决策。
阿里云云效 Codeup
提到阿里云的代码托管,一搜全是阿里云 Code,然而事实是这个平台早在 2020 年就已经升级成阿里云 Codeup (https://codeup.aliyun.com/)了,同时带了个云效的品牌名,升级为提供覆盖项目管理、代码管理、测试管理、持续集成、制品管理、发布管理的 DevOps 一站式研发管理平台。
听起来挺复杂,简单说就是你在开发过程中需要用到的各种工具都在一个平台上提供给你了,愿意用哪些你自己选。这对于企业来说大大降低了管理难度,以前有一堆账号一堆工具,切来切去自己都混乱了,数据也分散在各个工具里,人也不好管,来个新人教半天讲不明白。现在一个平台一套账号就搞定了。
鉴于本文主要聊代码托管,就把云效里面托管产品 Codeup 拎出来看。它提供基于 Git 的代码托管服务,主打企业级托管,因此在管控和安全层面做了不少加强,由于在国内,访问速度相比 Gitlab、Github 快不少。
Codeup 也提供私有化部署服务,不过目前看价格相比公有云稍贵,适合有预算、对代码上云有顾虑的企业。
腾讯 CODING
CODING 是面向软件研发团队的研发协作管理平台,发展方向和上面阿里云一样,也是 DevOps 一站式。
CODING 本来专注做代码托管,产品比较小而美,很适合个人开发者使用,正因为迎合年轻开发者的形象,所以其 LOGO 是个可爱的小猴子(程序猿)。然而在 2019 年被腾讯收购成为其全资子公司后,开始转型做企业服务,将个人空间升级成为了团队空间,陆续加入了测试、持续集成、制品库、部署管理等模块,也支持对接腾讯云账号体系了,功能维度逐渐丰富,虽然有的功能模块能力还相对简单,但是支撑小团队的简单研发场景是完全没问题的。
同样的,因为是国内的云服务,访问速度比较快:
在聊场景的时候,顺便简单介绍了国内外这几家比较有名的平台背景,接下来我会从不同的特性上比较这几个平台的差异,分享我的经验给大家参考。
企业/团队托管场景的比较
由于如果是开源场景,选型已经非常明确了:国外的 Github 或国内的 Gitee。
接下来谈谈适合企业、团队使用的代码托管我建议关注些啥,这部分主要分析 Gitlab、Codeup 和 Coding 这三个企业级的代码托管产品。
速度
我个人对代码托管平台的要求首先就是速度一定要快,毕竟每天都得用,如果推拉速度慢非常影响体验。
我使用 5M 做 PUSH 测试, 180 M 的示例代码库做 CLONE 测试,在固定网络下分别在三个平台推拉,统计的时间如下:
参考维度 | Gitlab(国外) | 阿里云云效Codeup | 腾讯云 Coding |
---|---|---|---|
SSH PUSH | 2.9s | 1s | 0.9s |
SSH CLONE | 59.2s | 15.1s | 18.5s |
总结:
- 在推拉速度这一条上,除非机场好,否则国外的平台就已经被 PASS 了;
- Codeup 和 Coding Push 速度差不多,阿里 Codeup 的 Clone 速度稍微快一点。国内这两家速度都是秒级ok的,操作体验都挺好。
价格和容量
其次,价格也是需要考虑的一个因素。
在代码托管这个白热化市场里,大家的价格都已经打到地板上趴着了,不计成本抢开发者是现状。
对于适合企业使用的套餐,三个平台价格和容量限制如下:
总结:
- Gitlab 适合企业使用的功能是需要付费的,除了购买 SaaS 版本的高级套餐外,还可以选择自建 Gitlab,不过这个成本和风险都比较高,仅建议有技术实力和经费的企业考虑,而且国外产品的技术支持也会比较困难;
- 国内的两家来看,免费企业版 Codeup 给的容量会更多一些,人数、总容量和LFS都是不限制,单个仓库容量也比 Coding 大一倍以上;从付费高级版来说,价格相差19块,基本持平。但是 Coding 的一些付费功能在 Codeup 是可以免费使用的,例如 IP 白名单、访问审计,而且付费后 Coding 代码、制品、流水线时长仍有限制,看起来 Codeup 的不限更加划算;因为我们公司不考虑私有化部署,我就没有咨询了,大家有需要可以去他们官网上直接联系客服咨询。
研发工具链功能完整性
在基础托管的能力上,大家都是 Git 的托管,功能大差不差,都能满足企业诉求。然而企业的研发生产过程光代码托管一个工具肯定不够,所有有了 DevOps 工具链这么一说,从 DevOps 工具链完整性上来看,对比如下:
总结:
- Gitlab 扩展性很强,能够灵活定制,有技术能力、能保障网络速度的企业可以选择它;
- 基于阿里的研发管理经验,Codeup 的一站式产品能力更加成熟,能够支持大中小各类型的企业分别在复杂、简单的场景下按需使用其产品模块,组装出适合企业自己的研发流程规范;
- 腾讯 Coding 相对来说功能较简单,对复杂的研发发布过程支持会弱一些,例如CICD原生支持的组件少、构建没有容器化、资源权限管理粒度较粗,比较适合十几人的小企业或团队使用;
安全性
安全是个严肃的话题,特别是对于企业来说,代码可是关乎身家性命的重要资产。造成安全风险的原因有很多:
- 有可能是不经意使用了不安全的开源软件包,例如前一阵子全网轰动的 Log4j 漏洞事件;
- 也可能是使用了不安全的开源工具,例如国家信息安全漏洞共享平台发布的《关于SonarQube系统存在未授权访问漏洞的安全公告》(CNTA-2021-0031),对SonarQube系统未授权访问漏洞(CNVD-2021-84502)作出预警,攻击者利用该漏洞,可在未授权的情况下获取代码的敏感数据;
- 还有可能是人为操作不当造成,例如某公司程序员把代码不经任何处理上传到了 Github 的公共代码库,泄露了 IP 和用户名密码,导致黑客对整个数据库进行了拖库。
安全问题十面埋伏,代码托管平台给企业提供什么保护呢?在这一块咱们不看国外的产品,他们安不安全我也拿不准,就看看国内这两家在安全方面做的怎么样吧。
Codeup 和 CODING 都是大厂背书,阿里和腾讯基于自己的云安全产品,平台基础设施的安全性相信还是比较有保障的。例如 Codeup 对外宣称的安全白皮书里明确说明了基础设置安全、云效应用安全、数据存储安全、数据传输安全等是如何实现的:
对于国内云 SaaS 的托管平台来说,阿里云 Codeup 对安全性提的最多,官网上也是把安全放在第一位进行宣传,可能和它宣传的企业级代码托管平台定位有关,安全性是它最看重的能力。
在平台基础设施安全方面,两家大厂都有保障。Codeup 还支持用户自己可以定时将代码自动备份到自己的OSS,不过这OSS得你自己买存储空间。Codeup 还支持了所谓仓库加密的能力,号称能把存储在云端的代码都加密存储,阿里的工作人员和黑客都没法破译存储在云上的数据代码,第一次看到这功能还挺有意思。
总结: 从安全性来说,基础安全能力两家都不错,其中阿里云云效 Codeup 看上去更加全面一些。
数据度量
企业度量大概率会和人员绩效挂钩,企业场景的度量就得 全面、准确、可定制 。在数据度量这件事上,阿里和腾讯最近都铆足了劲在建设。
腾讯 CODING 刚上了「研发度量」模块,还在Beta阶段,可以自定义卡片和视图,数据包括三类:
- 提交次数
- 增减代码量
- 合并请求
视图包括团队和个人视图,目前看内容还太简单,期待下后续的发展:
阿里云 Codeup 也开放了「效能洞察」模块,里面的数据维度看起来是多了不少,简单看了看有:
- 代码总行数和变更增减量统计;
- 代码提交次数、时段统计;
- 代码变更量、提交次数人员排名;
- 代码库提交评审率、千行代码评论数;
- 代码安全问题趋势和个数排名;
支持分别从团队、用户组和个人视图查看研发活动数据,可以辅助评估成员研发贡献情况和项目进展情况,截几个图示意下:
结论:
企业的数据度量除了代码研发的,还有项目管理的。目前看 Coding 的「工作负载」模块收费才能使用,所以无法体验内容,但从代码数据统计来说,阿里云 Codeup 数据维度相对多一些,除了代码贡献这个维度外,还可以从评审活动参与率、扫描问题趋势等维度去了解人员对代码质量的投入度。
最后
由于我是为企业选型,老板认为国外 SaaS 平台的变数太多了,还是让我关注国内的产品。在速度差不多的情况下,对比了成本、安全性和数据报表这几个重点特性后,我们团队讨论最终选择了 阿里云云效 。
这个决定还有一个重要的原因,我们公司正在用阿里云的 ECS 服务器,配合用阿里云云效这一套研发工具非常顺手,以前用 Jenkins 对接 ECS 要配一堆东西,用云效选择几个参数就连接上了,这点挺让人惊喜。
当然,代码托管产品还具备其他能力如代码检测、代码评审等,我就没有一一比对了,目前只列举了我最关注的几个方面,有兴趣你们也可以去操作体验一下。