01.背景:代理倉(cāng)庫(kù)的業(yè)務(wù)畫像
在研發(fā)領(lǐng)域,制品庫(kù)扮演著管理制品的關(guān)鍵角色。這里的制品是指由源代碼經(jīng)過(guò)編譯與打包后生成的二進(jìn)制文件,這些二進(jìn)制文件因開(kāi)發(fā)語(yǔ)言的不同而呈現(xiàn)出不同的格式。這些二進(jìn)制文件通常用于運(yùn)行在服務(wù)器上或者作為編譯過(guò)程中的必要依賴項(xiàng)。通過(guò)制品庫(kù)的高效管理,研發(fā)團(tuán)隊(duì)能夠確保二進(jìn)制制品的有序存儲(chǔ)與便捷使用。
制品庫(kù)根據(jù)其管理制品的類型,主要可以從兩個(gè)維度進(jìn)行分類:一是按照制品的開(kāi)發(fā)語(yǔ)言、二是按照制品的使用場(chǎng)景。在圖1中,展示了涵蓋主流開(kāi)發(fā)語(yǔ)言的大部分制品倉(cāng)庫(kù),其中包括但不限于 Docker、Maven、npm、pypi、helm、composer、nuget、Conan等。
圖2深入展示了制品庫(kù)在不同應(yīng)用場(chǎng)景下的多樣化運(yùn)用。根據(jù)實(shí)際應(yīng)用需求,行業(yè)內(nèi)通常將制品庫(kù)分為以下幾類:
02.解密代理倉(cāng)庫(kù)的玩法
在實(shí)際運(yùn)用三方依賴或官方鏡像的過(guò)程中,開(kāi)發(fā)者們往往會(huì)遭遇一系列棘手問(wèn)題,這些問(wèn)題不僅影響了研發(fā)效率,還帶來(lái)了安全隱患。具體來(lái)說(shuō):
然而,這些問(wèn)題在代理倉(cāng)庫(kù)的“魔法”都能得到妥善解決。讓我們先通過(guò)圖 3 看看代理倉(cāng)庫(kù)是什么。
代理倉(cāng)庫(kù),在制品庫(kù)中是一種特殊的倉(cāng)庫(kù),其核心價(jià)值在于能夠靈活配置代理多個(gè)源。當(dāng)私有倉(cāng)庫(kù)內(nèi)找不到所需包時(shí),它會(huì)按照預(yù)設(shè)的配置順序,自動(dòng)從代理源中拉取并返回給用戶。這一過(guò)程中,通過(guò)采用憑證管理,既保證了操作的便利性,又確保了數(shù)據(jù)的安全性。
引入倉(cāng)庫(kù)代理后,制品的拉取邏輯變得清晰而高效:
在代理倉(cāng)庫(kù)尚未融入研發(fā)流程之時(shí),每個(gè)代碼倉(cāng)庫(kù)或項(xiàng)目工程所需的三方組件,都要求研發(fā)團(tuán)隊(duì)逐一進(jìn)行依賴倉(cāng)庫(kù)源的配置。這些配置的關(guān)系,在圖4中得到了直觀的呈現(xiàn)。
圖 4 展示的是一種相對(duì)比較簡(jiǎn)單的依賴關(guān)系。有些復(fù)雜的項(xiàng)目工程,可能依賴的倉(cāng)庫(kù)源會(huì)是多個(gè),那么就需要在項(xiàng)目中配置多個(gè)依賴源和不同的拉取策略。使用代理后,研發(fā)對(duì)項(xiàng)目的依賴配置會(huì)進(jìn)一步精簡(jiǎn),只需要在項(xiàng)目工程中配置代理倉(cāng)庫(kù)的信息即可。
使用了代理倉(cāng)庫(kù)之后,代理倉(cāng)庫(kù)憑借其高效的拉取策略,輕松解決了依賴?yán)【徛@一困擾研發(fā)團(tuán)隊(duì)的問(wèn)題。同時(shí),通過(guò)代理跨網(wǎng)段的倉(cāng)庫(kù)源,可以做到通過(guò)網(wǎng)絡(luò)策略的方式保障網(wǎng)絡(luò)可控的隔離且不影響依賴?yán)〉男?;最后,因?yàn)樗械囊蕾囀褂?,都要通過(guò)代理倉(cāng)庫(kù),這樣可以在代理倉(cāng)庫(kù)中規(guī)劃安全策略,來(lái)實(shí)現(xiàn)依賴安全風(fēng)險(xiǎn)的可控。所以,代理倉(cāng)庫(kù)處理了依賴管理的業(yè)務(wù)場(chǎng)景下一系列的經(jīng)典問(wèn)題。下面,我們通過(guò)一些典型場(chǎng)景,來(lái)體會(huì)下代理倉(cāng)庫(kù)的實(shí)際應(yīng)用效果。
03.代理倉(cāng)庫(kù)在實(shí)踐中的力量
對(duì)于大多數(shù)的企業(yè),不管 IT 團(tuán)隊(duì)的大小,都會(huì)有訪問(wèn)遠(yuǎn)程公共資源的的場(chǎng)景,例如:Maven Centra、Docker Hub、http://npmjs.org 等公共資源。然而,在利用這些寶貴資源的過(guò)程中,企業(yè)往往會(huì)遇到一系列挑戰(zhàn),包括:
針對(duì)上述的業(yè)務(wù)場(chǎng)景,我們可以基于代理倉(cāng)庫(kù)的能力,建設(shè)企業(yè)私服依賴庫(kù):DMZ 隔離區(qū) + 多級(jí)代理的方案解決該場(chǎng)景下問(wèn)題。
如圖 5 中所示,業(yè)務(wù)區(qū)域,通過(guò) DMZ 區(qū)實(shí)現(xiàn)與公共互聯(lián)網(wǎng)環(huán)境的隔離。DMZ 環(huán)境與組織內(nèi)部網(wǎng)絡(luò)之間,通過(guò)網(wǎng)絡(luò)策略連接。在 DMZ 區(qū)域,對(duì)拉取同步過(guò)來(lái)的依賴執(zhí)行安全掃描,并實(shí)施安全策略,對(duì)于不滿足安全要求的組件依賴,不允許其被拉取到業(yè)務(wù)生產(chǎn)區(qū)域使用。
基于這樣的設(shè)計(jì),中央倉(cāng)庫(kù)、DMZ 私服庫(kù)、業(yè)務(wù)區(qū)域依賴庫(kù)三者間,形成多級(jí)的代理。業(yè)務(wù)區(qū)域構(gòu)建使用依賴,會(huì)優(yōu)先從依賴庫(kù)中拉??;在依賴庫(kù)中不存在的情況下從私服庫(kù)獲取,私服庫(kù)中可用的組件一定是滿足安全要求的制品;DMZ 區(qū)私服庫(kù)中不存在,則私服庫(kù)會(huì)從中央倉(cāng)庫(kù)獲取,獲取后執(zhí)行安全掃描的動(dòng)作,不安全的依賴將會(huì)禁止內(nèi)部網(wǎng)絡(luò)使用。
在上述的網(wǎng)絡(luò)結(jié)構(gòu)和部署策略中,DMZ 區(qū)上的實(shí)例制品主要包括:
另外,業(yè)務(wù)區(qū)域(內(nèi)部環(huán)境)依賴庫(kù)中的實(shí)例制品,主要包括:
04.總結(jié)
在當(dāng)前行業(yè)發(fā)展趨勢(shì)中,各大企業(yè)愈發(fā)重視安全與效率的提升,代理倉(cāng)庫(kù)的能力以及倉(cāng)庫(kù)代理結(jié)合網(wǎng)絡(luò)拓?fù)?/span>模型的應(yīng)用已經(jīng)越來(lái)越普遍,也越來(lái)越體現(xiàn)出其價(jià)值。倉(cāng)庫(kù)代理的能力已經(jīng)無(wú)需過(guò)多論證,也有類似嘉為科技、騰訊、華為等各大廠商提出了各種企業(yè)級(jí)解決方案。亟需行業(yè)從業(yè)者們繼續(xù)推廣,放大其價(jià)值。
CMDB治理:CMDB數(shù)據(jù)消費(fèi)與應(yīng)用指南
查看詳細(xì)
1分鐘解鎖開(kāi)箱即用價(jià)值流:研發(fā)效率飆升實(shí)戰(zhàn)指南
查看詳細(xì)
CCI持續(xù)集成平臺(tái):高效集成K8s集群,流水線容器構(gòu)建集群上線
查看詳細(xì)
嘉為藍(lán)鯨CCI持續(xù)集成平臺(tái):Matrix Job 帶你開(kāi)啟流水線編排 2.0 時(shí)代
查看詳細(xì)
告警管理:如何從零散事件中挖出關(guān)鍵信息
查看詳細(xì)
嘉為藍(lán)鯨CPack制品庫(kù):全新ML模型管理功能,助力AI交付與企業(yè)級(jí)DevOps實(shí)踐無(wú)縫結(jié)合
查看詳細(xì)
申請(qǐng)演示