在軟件開發(fā)中,“制品”指的是軟件開發(fā)過程中產(chǎn)生的所有文件和信息,包括源代碼、配置文件、編譯后的二進(jìn)制文件、庫文件、文檔、測試腳本、設(shè)計(jì)文檔等等。
在傳統(tǒng)的軟件開發(fā)模式中,開發(fā)和運(yùn)維是兩個(gè)相對獨(dú)立的團(tuán)隊(duì),彼此之間的協(xié)作和溝通相對較少。開發(fā)團(tuán)隊(duì)將代碼交給運(yùn)維團(tuán)隊(duì),然后運(yùn)維團(tuán)隊(duì)負(fù)責(zé)將代碼部署到生產(chǎn)環(huán)境中。這種傳統(tǒng)的開發(fā)和運(yùn)維分離模式導(dǎo)致了許多問題,例如延遲的交付、手動(dòng)的部署過程、高錯(cuò)誤率和缺乏可靠性等。
01.原始階段
制品的概念并不是天生就存在于軟件開發(fā)當(dāng)中。最早可以追溯到早期的80年代,即原始階段,軟件開發(fā)尚處于“瀑布式”的前線模式。在這個(gè)階段,軟件開發(fā)主要關(guān)注的是源代碼,而其它的如編譯后的二進(jìn)制文件、配置文件等被視為次要的或者是暫時(shí)的,沒有列入系統(tǒng)的管理。
制品通常被保存在開發(fā)者自己的開發(fā)環(huán)境中,或者通過比如FTP這樣的簡單方法共享給其它的開發(fā)者。這些制品的版本追蹤和管理主要依賴于開發(fā)者自身的記憶或者一些簡單的文本文件記錄。對于制品的使用和依賴關(guān)系,也大多是手動(dòng)管理。
在這種情況下,制品管理會(huì)面臨很多問題。
1)制品的存儲(chǔ)和共享方式
在制品的一致性和唯一性上面會(huì)有很大的風(fēng)險(xiǎn)。同一份制品可能會(huì)存在多個(gè)不一致的拷貝,或者被誤操作覆蓋或者刪除。
2)制品的版本管理
在沒有專門工具輔助的情況下,制品的版本很難做到準(zhǔn)確追蹤和控制。更糟糕的是,這種方式完全無法管理制品之間的依賴關(guān)系。
3)制品的協(xié)同方式
開發(fā)者很難找到需要的制品,更沒有一個(gè)統(tǒng)一的平臺(tái)來支持制品的協(xié)同修改和更新。
在這個(gè)階段,我們看到了最原始制品管理的形態(tài)。
02.工業(yè)階段
2001年,Apache Ant發(fā)布,這是一個(gè)用于自動(dòng)化構(gòu)建Java應(yīng)用的工具,首次在項(xiàng)目中引入了類似制品庫的“l(fā)ib”目錄來存放所有的依賴庫。這是首次原始概念的提出,同一年,十七位軟件開發(fā)領(lǐng)域重量級(jí)人物發(fā)布了“敏捷軟件開發(fā)宣言”,包括 Extreme Programming(XP) 的創(chuàng)建人 Kent Beck,Scrum 方法的創(chuàng)始人 Jeff Sutherland 和 Ken Schwaber,以及許多其他知名的編程方法和工具的創(chuàng)造者。這次會(huì)議也帶動(dòng)了很多的軟件開發(fā)方法和流程開始向敏捷方式轉(zhuǎn)變,同時(shí)也標(biāo)志著制品管理逐漸向標(biāo)準(zhǔn)化,規(guī)范化演變。
2006年,JFrog公司發(fā)布了Artifactory,這是業(yè)界首個(gè)提供完全的制品生命周期管理的商業(yè)制品庫。Artifactory對接了Maven的中央倉庫,并提供了諸如訪問控制、復(fù)制、存檔、元數(shù)據(jù)、搜索等高級(jí)特性。從這一年開始,制品庫成為DevOps工具鏈中一項(xiàng)重要的能力,并且也為DevOps理念的誕生以及廣泛傳播,筑造了堅(jiān)實(shí)的基礎(chǔ)。
同時(shí)DevOps理念的提出,將開發(fā)和運(yùn)維的關(guān)系推向了一個(gè)新的階段,這個(gè)階段要求開發(fā)和運(yùn)維不再分隔,而是要求他們緊密的協(xié)作,研發(fā)與運(yùn)維團(tuán)隊(duì)也迫切地需要一種能夠支持高效部署和管理的方式。這無疑給制品管理帶來了巨大的壓力,但也帶來了前所未有的機(jī)遇。
在這個(gè)背景下,制品管理的標(biāo)準(zhǔn)概念應(yīng)運(yùn)而生。即制品管理的基本思想是將軟件交付過程中的構(gòu)建產(chǎn)物、依賴和配置等全部統(tǒng)一管理起來。它提供了一個(gè)集中的庫或存儲(chǔ)空間,使得開發(fā)人員和運(yùn)維人員可以方便地訪問和共享這些制品。通過制品管理,團(tuán)隊(duì)可以更好地控制和管理軟件制品的版本、變更和發(fā)布,實(shí)現(xiàn)持續(xù)集成和持續(xù)交付的目標(biāo)。
03.信息化階段
隨著CI/CD等DevOps實(shí)踐的普及,越來越多的組織開始認(rèn)識(shí)到制品管理的重要性,即制品管理的信息化階段。在2014年,Nexus Repository Manager首次發(fā)布。這是一個(gè)開源的制品管理工具,主要用于管理軟件的依賴和構(gòu)建制品。Nexus的出現(xiàn)標(biāo)志著制品管理工具開始得到更多關(guān)注和應(yīng)用。各種制品管理工具和平臺(tái)也紛紛涌現(xiàn),例如最早的Jfrog,國內(nèi)的嘉為藍(lán)鯨CPack、Coding制品庫等。這些工具提供了豐富的功能,如版本控制、依賴管理、構(gòu)建流水線等,同時(shí)也有豐富的部署實(shí)施方案,如企業(yè)私服、唯一可信源等等,幫助團(tuán)隊(duì)實(shí)現(xiàn)高效的制品管理。
制品管理作為軟件開發(fā)一種重要的方法論,正從前線作戰(zhàn)逐漸轉(zhuǎn)變?yōu)楹笄谥С郑罱K會(huì)實(shí)現(xiàn)從開發(fā)到運(yùn)維的全生命周期管理。透過對制品管理發(fā)展歷程的審視,我們可以明顯地看到制品管理越來越重要,而這只是一個(gè)開始,未來制品管理還將有更廣闊的應(yīng)用前景,智能化、自動(dòng)化、跨平臺(tái)與云原生等新概念、新能力、也在融進(jìn)現(xiàn)在的制品管理。
SRE轉(zhuǎn)型:銀行SRE模式推廣策略
查看詳細(xì)
從設(shè)備到數(shù)據(jù):存儲(chǔ)監(jiān)控的關(guān)鍵與實(shí)踐
查看詳細(xì)
AI破圈爆火!殊不知運(yùn)維才是幕后“定海神針”!
查看詳細(xì)
AI賦能DevOps:智能排錯(cuò)、代碼修復(fù)與需求生成,打造高效開發(fā)新范式!
查看詳細(xì)
LLMOps+DeepSeek:大模型升級(jí)一體化運(yùn)維
查看詳細(xì)
DeepSeek賦能企業(yè)研發(fā):DevOps+AI 新時(shí)代再升級(jí)!
查看詳細(xì)
申請演示