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