写点什么

制品库是什么?

作者:雨后小溪
  • 2022 年 8 月 10 日
    广东
  • 本文字数:2502 字

    阅读完需:约 8 分钟

谈一个东西,就一定要讲历史,讲背景。早期软件开发多为瀑布模型,真正开发前需要做一大堆工作,例如可行性研究、项目实施计划、需求分析、概要设计等等,还要进行大量文档编写,每个步骤环环相扣,像瀑布一样,有序进行,下一个步骤依赖于前面步骤的文档输出,可以说瀑布模型是文档驱动。

但是近几年,由于互联网的新起,互联网具备业务变化快,黄金时间短,早前的瀑布模型开发模式,周期长,等你前面都研究好了,这个风口早就过去了。所以这个时候敏捷模型开始出现,目的让软件发布周期变短,更快的响应业务变化,从而占领市场。快就容易导致乱,所以这个时候 DevOps 开始出现,我用一句话简单概括 DevOps,就是制定一些标准规范,并且让它们自动跑起来。制定规范,就是为了防止人为出错,解决掉我们所说的乱的问题。自动跑起来,就是能缩短工程师们的时间,让工程师只聚焦于业务,也就可以让我们的开发周期缩短。实际上,就是保证了我们软件研发的稳(减少出错)、准(自动化)、狠(快速迭代)。

制品库就是 DevOps 里面重要的一个组成部分。制品库,顾名思义,就是存放制品的仓库。那什么是制品呢?制品就是软件开发过程中的产物,可以是代码编译产物,也可以是构建脚本等等。大多数人的理解,软件开发过程中,代码编写应该是更为重要的一个环节,但实际上无论是瀑布模型,还是 DevOps 中代码编写环节都只是其中的一小段过程。如下图:


这个图是最佳实践 SDLC 中标准的 DevOps 循环图。可以看到二进制文件在多个流程中都出现,占据了 3/4DevOps 过程。可见一个好的制品库,可以发挥出作用的重要性。那么为什么需要一个制品库管理软件,JFrog 曾给出八大理由:


这里我进行了的简单总结,详细可以参考 JFrog 文章 DevOps: 8 Reasons for DevOps to use a Binary Repository Manager[1]

  1. 单一可信源:统一制品仓库,方便管理。像大型企业都会有自己的内部仓库,如腾讯的腾讯软件源。

  2. SBOM(软件物料清单):表明软件的组成成分。软件行业流行开源,很多软件都会用到开源软件,但是又对 license 不清楚,有了 SBOM,可以避免侵权问题,同时也因为有了清单也可以及时发现问题组件,规避风险。

  3. 远程仓库代理:软件依赖于开源软件,需要从各类依赖源中央仓库拉取构件,通过远程仓库代理,可以加速软件拉取速度,进而加快构建过程。

  4. 一次构建,任意推广:保证构件的不变性,减少不同环境的相同版本构建。多次构建,就有可能产生差异,这样就会导致如测试的版本与真实部署的版本不一致,从而引发生产问题。

  5. 云原生:云原生是一个新兴起的技术,现在也是大势所趋。制品库,可以提供 OCI 仓库,帮助企业快速上云。

  6. 软件供应链保护:软件供应链攻击被 Gartner 列为 2022 年三大安全问题之一,根据《2022 年安全报告》显示,2021 年全球软件供应链攻击同比增长了 650%。可见它的严重性和广泛性。什么是软件供应链攻击呢,举个例子:你开发的一款软件,依赖于名字为 AaA 组件,不法分子抢注名字为 Aaa 的组件,这是个含有木马的组件,这个时候由于开发不小心将依赖组件的名字打错成 Aaa,则会下载木马软件。如果你的软件是公司里面的基础组件,那影响面就更广,导致全公司的软件都被感染,这就是一种简单的软件供应链攻击的方式。所以软件供应链保护至关重要。

  7. 连接全局工具:开放更多的接口,方便更多的自动化接入。

  8. 无限扩展:随着企业的快速发展,业务的增多和快速变化,越来越多的软件,和越来越多的迭代,所产生的构件也会快速增多,存储构件的软件也需要可以无限扩展。

现状

计算机起源于上世纪的 40 年代,发源于美国。所以先进的计算机技术和软件也大多引进国外。包括很多先进的开发理念和核心的基础软件都是来源于美国,DevOps 和制品库也不例外。主流的制品库软件,Nexus Repository,JFrog Artifactory 也都来自于国外。如下图:


国内新势力

随着 DevOps 行业的发展,国内制品库产品也逐步兴起。比如阿里的云效制品库 Packages、coding 的 WePack、华为云的 CloudRelease、嘉为的 CPack 等等。从功能上来看,coding 的 WePack 和嘉为的 CPack 功能更加全面,毕竟 coding 和嘉为是 DevOps 厂商,靠产品吃饭的,而几大云厂商的制品库则简单了许多,只具备少量包类型和基础功能。

以上产品都是商业化产品。据我所知,国内开源的目前只有腾讯的蓝盾制品库,国外的有 Nexus repository OSS,如果还有其他的制品库也开源,欢迎留言告知。使用商业化软件,总会受限,或 license,或问题反馈,无法协同共建等等问题。开源能解决上述问题,所以这也是为什么软件行业发展的比较快,跟崇尚开源有莫大的关系。

蓝盾制品库

BkRepo(blueking repository)是腾讯蓝鲸旗下蓝盾(持续集成平台)孵化出的一款产品。根据《中国 DevOps 现状调查报告(2022)》,报告对 DevOps 平台类工具市场进行了深度调研,蓝鲸 DevOps 荣登 DevOps 平台类工具市场选择占比第一。


BkRepo 支持了腾讯内部大量业务,PB 级存储,日归档拉取数量达百万级别,稳定性高达 99.99%。是在经过腾讯内部大量验证和最佳实践出来的制品库产品。现已开源到社区,开源地址https://github.com/Tencent/bk-ci。在 bk-ci 下的 storage 模块,快速体验https://hub.docker.com/r/bkrepo/bkrepo。作为国产开源软件的优势:

  1. 自主研发,产权可控。

  2. 问题反馈,响应及时。

  3. 软件国产化是趋势,避免被人卡脖子。

BkRepo 和几款主流的通用制品库对比:


可以看到蓝盾制品库基本与 JFrog Artifatory 功能是对齐的,比 Nexus Repository OSS 多了许多功能。所以 BkRepo 应该是能满足绝大多数企业的,再者论制品规模,复杂度比腾讯还大的企业应该很少。

在通用包类型的支持上,BkRepo 相比较是少的,但是也支持目前比较广泛使用的语言的仓库,如 Generic(二进制仓库)、Maven、npm、oci(云原生仓库,如 docker、helm 等)、pypi、rpm、nuget、composer 等。未来还会支持更多的仓库类型。

写在最后

一道佳肴,食材是关键,一篇好的文章,干货是关键。我对自己的期望是小溪出品,必是精品。希望自己的文章能给他人带来收获。


References 

[1] DevOps: 8 Reasons for DevOps to use a Binary Repository Manager: https://jfrog.com/whitepaper/devops-8-reasons-for-devops-to-use-a-binary-repository-manager/



发布于: 刚刚阅读数: 3
用户头像

雨后小溪

关注

还未添加个人签名 2019.02.21 加入

还未添加个人简介

评论

发布
暂无评论
制品库是什么?_DevOps_雨后小溪_InfoQ写作社区