01.背景:代理倉庫的業務畫像
在研發領域,制品庫扮演著管理制品的關鍵角色。這里的制品是指由源代碼經過編譯與打包后生成的二進制文件,這些二進制文件因開發語言的不同而呈現出不同的格式。這些二進制文件通常用于運行在服務器上或者作為編譯過程中的必要依賴項。通過制品庫的高效管理,研發團隊能夠確保二進制制品的有序存儲與便捷使用。
制品庫根據其管理制品的類型,主要可以從兩個維度進行分類:一是按照制品的開發語言、二是按照制品的使用場景。在圖1中,展示了涵蓋主流開發語言的大部分制品倉庫,其中包括但不限于 Docker、Maven、npm、pypi、helm、composer、nuget、Conan等。
圖2深入展示了制品庫在不同應用場景下的多樣化運用。根據實際應用需求,行業內通常將制品庫分為以下幾類:
02.解密代理倉庫的玩法
在實際運用三方依賴或官方鏡像的過程中,開發者們往往會遭遇一系列棘手問題,這些問題不僅影響了研發效率,還帶來了安全隱患。具體來說:
然而,這些問題在代理倉庫的“魔法”都能得到妥善解決。讓我們先通過圖 3 看看代理倉庫是什么。
代理倉庫,在制品庫中是一種特殊的倉庫,其核心價值在于能夠靈活配置代理多個源。當私有倉庫內找不到所需包時,它會按照預設的配置順序,自動從代理源中拉取并返回給用戶。這一過程中,通過采用憑證管理,既保證了操作的便利性,又確保了數據的安全性。
引入倉庫代理后,制品的拉取邏輯變得清晰而高效:
在代理倉庫尚未融入研發流程之時,每個代碼倉庫或項目工程所需的三方組件,都要求研發團隊逐一進行依賴倉庫源的配置。這些配置的關系,在圖4中得到了直觀的呈現。
圖 4 展示的是一種相對比較簡單的依賴關系。有些復雜的項目工程,可能依賴的倉庫源會是多個,那么就需要在項目中配置多個依賴源和不同的拉取策略。使用代理后,研發對項目的依賴配置會進一步精簡,只需要在項目工程中配置代理倉庫的信息即可。
使用了代理倉庫之后,代理倉庫憑借其高效的拉取策略,輕松解決了依賴拉取緩慢這一困擾研發團隊的問題。同時,通過代理跨網段的倉庫源,可以做到通過網絡策略的方式保障網絡可控的隔離且不影響依賴拉取的效率;最后,因為所有的依賴使用,都要通過代理倉庫,這樣可以在代理倉庫中規劃安全策略,來實現依賴安全風險的可控。所以,代理倉庫處理了依賴管理的業務場景下一系列的經典問題。下面,我們通過一些典型場景,來體會下代理倉庫的實際應用效果。
03.代理倉庫在實踐中的力量
對于大多數的企業,不管 IT 團隊的大小,都會有訪問遠程公共資源的的場景,例如:Maven Centra、Docker Hub、http://npmjs.org 等公共資源。然而,在利用這些寶貴資源的過程中,企業往往會遇到一系列挑戰,包括:
針對上述的業務場景,我們可以基于代理倉庫的能力,建設企業私服依賴庫:DMZ 隔離區 + 多級代理的方案解決該場景下問題。
如圖 5 中所示,業務區域,通過 DMZ 區實現與公共互聯網環境的隔離。DMZ 環境與組織內部網絡之間,通過網絡策略連接。在 DMZ 區域,對拉取同步過來的依賴執行安全掃描,并實施安全策略,對于不滿足安全要求的組件依賴,不允許其被拉取到業務生產區域使用。
基于這樣的設計,中央倉庫、DMZ 私服庫、業務區域依賴庫三者間,形成多級的代理。業務區域構建使用依賴,會優先從依賴庫中拉取;在依賴庫中不存在的情況下從私服庫獲取,私服庫中可用的組件一定是滿足安全要求的制品;DMZ 區私服庫中不存在,則私服庫會從中央倉庫獲取,獲取后執行安全掃描的動作,不安全的依賴將會禁止內部網絡使用。
在上述的網絡結構和部署策略中,DMZ 區上的實例制品主要包括:
另外,業務區域(內部環境)依賴庫中的實例制品,主要包括:
04.總結
在當前行業發展趨勢中,各大企業愈發重視安全與效率的提升,代理倉庫的能力以及倉庫代理結合網絡拓撲模型的應用已經越來越普遍,也越來越體現出其價值。倉庫代理的能力已經無需過多論證,也有類似嘉為科技、騰訊、華為等各大廠商提出了各種企業級解決方案。亟需行業從業者們繼續推廣,放大其價值。
申請演示