隨著車企、手機(jī)廠商、家電等制造企業(yè)業(yè)務(wù)的快速發(fā)展,軟件應(yīng)用開發(fā)規(guī)模也隨之不斷擴(kuò)大。不同類型的交付制品的管理也成為DevOps落地的一大難題。制品分散管理,存儲(chǔ)隨意,下載困難,分發(fā)緩慢等現(xiàn)象長期受到產(chǎn)線用戶挑戰(zhàn),急需快速解決。經(jīng)過業(yè)務(wù)場景分析及用戶調(diào)研后,總結(jié)為以下通用問題:
痛點(diǎn)
1,制品存量大
制品達(dá)到PB級別,分散存儲(chǔ)到S3及EMC存儲(chǔ)上,管理分散,浪費(fèi)存儲(chǔ),并且數(shù)據(jù)量在成倍增長。
沒有合理的制品清理機(jī)制,導(dǎo)致過多無效存儲(chǔ)
2,制品質(zhì)量缺失
制品無質(zhì)量標(biāo)簽,篩選版本復(fù)雜,增加迭代時(shí)間,測試人員經(jīng)常下錯(cuò)版本,浪費(fèi)時(shí)間
制品無版本概念,經(jīng)常出現(xiàn)制品覆蓋現(xiàn)象,最終導(dǎo)致發(fā)布失敗
3,制品分發(fā)復(fù)雜
由于存量過大,國內(nèi)多地研發(fā)中心、海外研發(fā)中心同步制品不可行,多地傳輸浪費(fèi)帶寬
制品無統(tǒng)一管理,分散到不同團(tuán)隊(duì),不同集群上,不便于數(shù)據(jù)資產(chǎn)梳理
制品往往需要分發(fā)到不同的工廠、合作伙伴、售后站及IoT終端,場景復(fù)雜
4,制品下載緩慢
單文件最大達(dá)到100G+,下載時(shí)經(jīng)常出現(xiàn)丟包、中斷等現(xiàn)象,用戶體驗(yàn)極差,浪費(fèi)時(shí)間
解決方案
1,解決性能瓶頸
在下述部署條件下進(jìn)行性能測試,得到了一份超級滿意的測試報(bào)告,在極端數(shù)據(jù)讀寫的壓力下,6節(jié)點(diǎn)Artifactory的每小時(shí)吞吐量達(dá)到了10TB級別,目前基本可以承載國內(nèi)所有軟件研發(fā)企業(yè)制品的吞吐量,具體測試報(bào)告可以聯(lián)系JFrog的工程蛙們了解測試細(xì)節(jié)。
2,解決制品大批量下載問題
JFrog提供高性能下載工具jfrog cli,可實(shí)現(xiàn)分片、多線程、斷點(diǎn)續(xù)傳等下載方式,基本可以打滿網(wǎng)絡(luò)帶寬
JFrog在服務(wù)端提供cache技術(shù),可實(shí)現(xiàn)有ssd磁盤緩存熱文件策略,如緩存空間大,可緩存所有熱文件,提升下載速度
由于服務(wù)端網(wǎng)絡(luò)端口依然存在瓶頸,可使用p2p技術(shù)進(jìn)行分流,提升下載速度3-4倍
3,異地分發(fā)能力
私有化部署+Saas服務(wù),實(shí)現(xiàn)制品庫多云多數(shù)據(jù)中心混合架構(gòu),通過倉庫聯(lián)邦及高速分發(fā)兩種策略,鏈接世界所有節(jié)點(diǎn),實(shí)現(xiàn)制品分發(fā)
用戶案例
某手機(jī)廠商案例
1,某手機(jī)廠商,使用JFrog Artifactory 6個(gè)節(jié)點(diǎn),架構(gòu)設(shè)計(jì)如下:
承載業(yè)務(wù)量:
接管整機(jī)構(gòu)建daily及Release項(xiàng)目50個(gè),每月420T整機(jī)制品包,目前共存儲(chǔ)4PB+數(shù)據(jù)
接管組件構(gòu)建項(xiàng)目11000個(gè),每周組件個(gè)數(shù)231000,150T組件包,目前共存儲(chǔ)1PB+數(shù)據(jù)
每小時(shí)上傳流量接近3TB,下載流量接近2TB
峰值上傳流量15G/S,下載流量5G/S
制品庫存儲(chǔ)總量達(dá)到了6PB
2,解決質(zhì)量缺失
通過JFrog Artifactory的元數(shù)據(jù)及AQL功能,確保每個(gè)制品均具備10條以上的質(zhì)量數(shù)據(jù)標(biāo)簽,實(shí)現(xiàn)開發(fā)與測試之間零溝通,使版本具備自動(dòng)化篩選能力,避免下錯(cuò)版本,浪費(fèi)時(shí)間。
具體實(shí)現(xiàn)為,開發(fā)團(tuán)隊(duì)構(gòu)建制品版本,并將過程數(shù)據(jù)、需求數(shù)據(jù)、測試數(shù)據(jù)、匹配機(jī)型數(shù)據(jù)等自動(dòng)補(bǔ)全在制品的元數(shù)據(jù)屬性中,如未攜帶此數(shù)據(jù),則無法成功上傳。測試人員在使用制品進(jìn)行燒機(jī)測試時(shí),則通過自動(dòng)化腳本,自動(dòng)篩選符合自己機(jī)型并具備一定質(zhì)量屬性的制品,自動(dòng)測試,整個(gè)版本篩選過程無需人與人的溝通,一切自動(dòng)化完成,提高效率,避免出錯(cuò)。
通過此項(xiàng)改進(jìn),獲取了如下收益:
打造制品可信平臺(tái),確保所有交付組件包攜帶質(zhì)量元數(shù)據(jù),便于快速定位版本
制品清理機(jī)制,定期實(shí)現(xiàn)制品清理
3,解決制品分發(fā)
在此方案架構(gòu)下,為了統(tǒng)一管理集團(tuán)所有產(chǎn)線制品,后期將制品分布在5個(gè)Artifactory集群中管理,其中app應(yīng)用使用一個(gè)物理集群,不同產(chǎn)線整機(jī)版本各使用一個(gè)集群,私服及Docker鏡像使用一個(gè)集群。由前段CI工具統(tǒng)一控制制品寫入位置及讀取位置。另外在成都、重慶、上海分中心建立只讀集群、實(shí)現(xiàn)制品快速分發(fā),多地可讀。同時(shí)在印度、印尼、孟加拉、阿爾及利亞等地工廠建立只讀集群,按需分發(fā)制品到工廠。
為了優(yōu)化下載速度,該方案中使用了JFrog Artifactory的p2p下載功能,在不同地域的分廠中沒有設(shè)置只讀節(jié)點(diǎn),而是使用p2p的peer節(jié)點(diǎn),節(jié)約成本,加速下載。整體制品庫架構(gòu)如下:
免責(zé)聲明:市場有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!此文僅供參考,不作買賣依據(jù)。
關(guān)鍵詞: 實(shí)現(xiàn) 全球 分發(fā)