找回密码
 立即注册
搜索

从前线到后勤:制品管理的演变历史

haidaitou 2024-10-24 15:53:54

在软件开发中,“制品”指的是软件开发过程中产生的所有文件和信息,包括源代码、配置文件、编译后的二进制文件、库文件、文档、测试脚本、设计文档等等。

在传统的软件开发模式中,开发和运维是两个相对独立的团队,彼此之间的协作和沟通相对较少。开发团队将代码交给运维团队,然后运维团队负责将代码部署到生产环境中。这种传统的开发和运维分离模式导致了许多问题,例如延迟的交付、手动的部署过程、高错误率和缺乏可靠性等。

1.jpg


1

原始阶段

制品的概念并不是天生就存在于软件开发当中。最早可以追溯到早期的80年代,即原始阶段,软件开发尚处于“瀑布式”的前线模式。在这个阶段,软件开发主要关注的是源代码,而其它的如编译后的二进制文件、配置文件等被视为次要的或者是暂时的,没有列入系统的管理。

制品通常被保存在开发者自己的开发环境中,或者通过比如FTP这样的简单方法共享给其它的开发者。这些制品的版本追踪和管理主要依赖于开发者自身的记忆或者一些简单的文本文件记录。对于制品的使用和依赖关系,也大多是手动管理。


在这种情况下,制品管理会面临很多问题。

1

制品的存储和共享方式:

在制品的一致性唯一性上面会有很大的风险。同一份制品可能会存在多个不一致的拷贝,或者被误操作覆盖或者删除。

2

制品的版本管理:

在没有专门工具辅助的情况下,制品的版本很难做到准确追踪和控制。更糟糕的是,这种方式完全无法管理制品之间的依赖关系。

3

制品的协同方式:

开发者很难找到需要的制品,更没有一个统一的平台来支持制品的协同修改和更新

在这个阶段,我们看到了最原始制品管理的形态。


2

工业阶段

2001年,Apache Ant发布,这是一个用于自动化构建Java应用的工具,首次在项目中引入了类似制品库的“lib”目录来存放所有的依赖库。这是首次原始概念的提出,同一年,十七位软件开发领域重量级人物发布了“敏捷软件开发宣言”,包括 Extreme Programming(XP) 的创建人 Kent Beck,Scrum 方法的创始人 Jeff Sutherland 和 Ken Schwaber,以及许多其他知名的编程方法和工具的创造者。这次会议也带动了很多的软件开发方法和流程开始向敏捷方式转变,同时也标志着制品管理逐渐向标准化,规范化演变。

2.png


2006年,JFrog公司发布了Artifactory,这是业界首个提供完全的制品生命周期管理的商业制品库。Artifactory对接了Maven的中央仓库,并提供了诸如访问控制、复制、存档、元数据、搜索等高级特性。从这一年开始,制品库成为DevOps工具链中一项重要的能力,并且也为DevOps理念的诞生以及广泛传播,筑造了坚实的基础。

3.png


同时DevOps理念的提出,将开发和运维的关系推向了一个新的阶段,这个阶段要求开发和运维不再分隔,而是要求他们紧密的协作,研发与运维团队也迫切地需要一种能够支持高效部署和管理的方式。这无疑给制品管理带来了巨大的压力,但也带来了前所未有的机遇。


在这个背景下,制品管理的标准概念应运而生。即制品管理的基本思想是将软件交付过程中的构建产物、依赖和配置等全部统一管理起来。它提供了一个集中的库或存储空间,使得开发人员和运维人员可以方便地访问和共享这些制品。通过制品管理,团队可以更好地控制和管理软件制品的版本、变更和发布,实现持续集成和持续交付的目标。


3

信息化阶段

随着CI/CD等DevOps实践的普及,越来越多的组织开始认识到制品管理的重要性,即制品管理的信息化阶段。在2014年,Nexus Repository Manager首次发布。这是一个开源的制品管理工具,主要用于管理软件的依赖和构建制品。Nexus的出现标志着制品管理工具开始得到更多关注和应用。各种制品管理工具和平台也纷纷涌现,例如最早的Jfrog,国内的嘉为蓝鲸CPack、Coding制品库等。这些工具提供了丰富的功能,如版本控制、依赖管理、构建流水线等,同时也有丰富的部署实施方案,如企业私服、唯一可信源等等,帮助团队实现高效的制品管理。

4.png


制品管理作为软件开发一种重要的方法论,正从前线作战逐渐转变为后勤支持,最终会实现从开发到运维的全生命周期管理。透过对制品管理发展历程的审视,我们可以明显地看到制品管理越来越重要,而这只是一个开始,未来制品管理还将有更广阔的应用前景,智能化、自动化、跨平台与云原生等新概念、新能力、也在融进现在的制品管理。


CPack.png
您需要登录后才可以回帖 立即登录
共收到 0 条点评
返回顶部