2022年2月,黑客竊取某著名公司大量源碼,包含硬件原理圖、源代碼、顯卡驅(qū)動(dòng)源碼等信息,并對(duì)企業(yè)勒索巨額贖金;3月,全球最大的開(kāi)源代碼托管網(wǎng)站經(jīng)歷了多次長(zhǎng)達(dá)數(shù)個(gè)多小時(shí)的宕機(jī),數(shù)百萬(wàn)開(kāi)發(fā)者無(wú)法提交代碼,導(dǎo)致開(kāi)發(fā)活動(dòng)中斷。
源代碼是企業(yè)最寶貴的資產(chǎn)之一,一旦保存源代碼的系統(tǒng)出現(xiàn)安全性或穩(wěn)定性問(wèn)題,將給企業(yè)商業(yè)及信譽(yù)帶來(lái)不可估量的損失。隨著軟件規(guī)模的不斷擴(kuò)大,生成軟件的源代碼規(guī)模也在急劇上升,單個(gè)軟件系統(tǒng)規(guī)模已達(dá)數(shù)億行、開(kāi)發(fā)人員達(dá)數(shù)千人——如何管理好龐大的源代碼,并讓企業(yè)員工持續(xù)穩(wěn)定的開(kāi)展軟件開(kāi)發(fā)活動(dòng)將成為一個(gè)重大的挑戰(zhàn)。
2月20日,華為云代碼托管服務(wù)CodeArts Repo正式上線(xiàn),這是一款全棧自研、基于Git的云端代碼托管服務(wù),旨在保護(hù)企業(yè)核心代碼資產(chǎn)安全,提升企業(yè)研發(fā)質(zhì)量和效率。
代碼管理工具是軟件開(kāi)發(fā)的基礎(chǔ)
不斷提升研發(fā)質(zhì)量和效率,縮短TTM(Time to Market)是軟件企業(yè)商業(yè)成功的關(guān)鍵。如今,一款軟件通常由多人協(xié)作開(kāi)發(fā)而成,代碼管理工具不僅是研發(fā)資產(chǎn)的重要載體,同時(shí)也支撐了版本化配置管理、代碼開(kāi)發(fā)的工作流等活動(dòng),通過(guò)與CI/CD工具服務(wù)集成,能夠有效提升團(tuán)隊(duì)協(xié)作效率和自動(dòng)化交付效率。
代碼管理工具在開(kāi)發(fā)活動(dòng)中發(fā)揮著關(guān)鍵作用
為了讓代碼資產(chǎn)更加安全和穩(wěn)定,一款現(xiàn)代化代碼管理工具應(yīng)當(dāng)具備如下主要能力:
版本控制:包含代碼存儲(chǔ)功能,支持代碼上傳和下載,并能夠簡(jiǎn)單、準(zhǔn)確地記錄和重現(xiàn)代碼的任何一個(gè)歷史版本。
協(xié)同開(kāi)發(fā):支持多人協(xié)同開(kāi)發(fā),如不同開(kāi)發(fā)人員可同時(shí)在同一個(gè)軟件模塊上工作,同時(shí)對(duì)同一代碼部分做不同的修改,即使是跨地域分布的開(kāi)發(fā)團(tuán)隊(duì)也能互不干擾。
質(zhì)量管控:提供在線(xiàn)閱讀代碼和代碼檢視功能,支持自動(dòng)化持續(xù)集成與持續(xù)交付工具(CI/CD),對(duì)代碼進(jìn)行質(zhì)量檢查,確保符合質(zhì)量的代碼才能入庫(kù)。
穩(wěn)定可靠:支持多人并發(fā)在線(xiàn)作業(yè),并發(fā)上傳和下載代碼,保持長(zhǎng)期穩(wěn)定,以保障企業(yè)研發(fā)活動(dòng)不中斷。
安全防護(hù):能夠保護(hù)企業(yè)的代碼核心資產(chǎn)安全,抵御黑客盜取代碼、對(duì)源代碼投毒、惡意代碼注入等攻擊。
華為云CodeArtsRepo讓代碼核心資產(chǎn)安全無(wú)憂(yōu)
為了支撐業(yè)務(wù)的高速發(fā)展,華為公司內(nèi)部代碼管理工具也在不斷演進(jìn)。從最開(kāi)始滿(mǎn)足基本配置管理需求,到支撐公司內(nèi)源協(xié)同開(kāi)發(fā),再到支撐公司可信變革、達(dá)成CleanCode目標(biāo),華為的代碼管理工具經(jīng)歷了“商用+開(kāi)源”,到“邊買(mǎi)邊造“,再到“自給自足”的三個(gè)階段,自2019年來(lái),通過(guò)歷時(shí)3年的“云化改造、安全韌性構(gòu)筑、全棧自研”三大戰(zhàn)役,華為基于云原生打造了高安全、高韌性、全場(chǎng)景開(kāi)發(fā)工作流覆蓋的可信代碼倉(cāng)。
如今,華為云CodeArts Repo管理并保護(hù)著華為1100億行代碼,支撐15萬(wàn)人開(kāi)發(fā)作業(yè),日均1億次下載量、1PB傳輸流量、3億次API調(diào)用,一套系統(tǒng)支撐了華為嵌入式、云、終端、車(chē)等各類(lèi)型產(chǎn)品代碼管理和協(xié)同開(kāi)發(fā)。
現(xiàn)在,華為云將內(nèi)部多年積累的代碼管理能力沉淀到CodeArts Repo工具,發(fā)布6大特性。
特性一:自研內(nèi)核,確保代碼安全,穩(wěn)定高效開(kāi)發(fā)
針對(duì)開(kāi)源代碼管理工具漏洞多、單體架構(gòu)、存在連續(xù)性風(fēng)險(xiǎn),和無(wú)法滿(mǎn)足華為大規(guī)模、多場(chǎng)景開(kāi)發(fā)作業(yè)流等問(wèn)題,華為云CodeArts Repo通過(guò)自研內(nèi)核,基于零信任思想進(jìn)行設(shè)計(jì)和安全加固,從黑客視角建立攻擊路徑模型,落地6大類(lèi)100+小類(lèi)安全措施,從接入層、業(yè)務(wù)層,存儲(chǔ)層到基礎(chǔ)設(shè)施層全面構(gòu)筑安全防護(hù)能力,確保代碼不丟,系統(tǒng)不破,代碼資產(chǎn)可恢復(fù)。
此外,華為成立了“藍(lán)軍”部門(mén),每年例行專(zhuān)門(mén)針對(duì)代碼托管工具進(jìn)行模擬攻擊測(cè)試,以攻促防,不斷提升CodeArts Repo的安全能力。
為應(yīng)對(duì)公司巨量業(yè)務(wù)增長(zhǎng),CodeArts Repo在架構(gòu)上充分利用云原生技術(shù)優(yōu)勢(shì),基于云化基礎(chǔ)設(shè)施,實(shí)現(xiàn)容災(zāi)、備份、流控、服務(wù)降等,保障了業(yè)務(wù)不中斷和數(shù)據(jù)不丟失,多維度提升可靠性。
CodeArtsRepo在技術(shù)上突破底層硬件IO帶寬限制、修改Git內(nèi)核提升文件下載尋址效率、應(yīng)用多級(jí)緩存等手段提升代碼下載效率,經(jīng)測(cè)試,相比開(kāi)源同類(lèi)產(chǎn)品具有超過(guò)10倍的寫(xiě)入、超過(guò)50倍的讀取能力提升,可支撐萬(wàn)級(jí)并發(fā)下載,10萬(wàn)級(jí)并發(fā)在線(xiàn)作業(yè)。
特性二:覆蓋基于Git的主要工作流,滿(mǎn)足多種開(kāi)發(fā)場(chǎng)景
華為云CodeArts Repo支持git flow、gitlab flow、github flow等所有工作流。華為將以前使用gitlab、github、gerrit部署的100多套系統(tǒng)歸一到CodeArts Repo一套系統(tǒng),期間經(jīng)歷了超過(guò)10000條來(lái)自華為各產(chǎn)品線(xiàn)的需求錘煉,不斷完善和優(yōu)化,既能滿(mǎn)足強(qiáng)流程規(guī)范的大規(guī)模產(chǎn)品協(xié)同開(kāi)發(fā),也適用于采用DevOps模式、快速上線(xiàn)的產(chǎn)品開(kāi)發(fā)。
特性三:多形式代碼檢視活動(dòng),提升代碼質(zhì)量,傳遞開(kāi)發(fā)經(jīng)驗(yàn)
《代碼大全》的研究結(jié)果顯示,各種研發(fā)活動(dòng)中,代碼檢視的代碼檢測(cè)率高達(dá)60%,可以有效提前發(fā)現(xiàn)顯而易見(jiàn)的錯(cuò)誤隨代碼上庫(kù),提升代碼質(zhì)量,并且實(shí)現(xiàn)高級(jí)開(kāi)發(fā)人員的知識(shí)傳遞,增強(qiáng)團(tuán)隊(duì)質(zhì)量意識(shí)。
華為云CodeArts Repo提供分散式和集中式的代碼檢視能力,支持團(tuán)隊(duì)隨時(shí)開(kāi)展代碼檢視活動(dòng)。以合并請(qǐng)求為例,開(kāi)發(fā)人員發(fā)起代碼合并請(qǐng)求后,系統(tǒng)可自動(dòng)分配給不同檢視人員,檢視人員利用碎片化時(shí)間檢視代碼,配合門(mén)禁系統(tǒng)保證檢視意見(jiàn)關(guān)閉才能合入該合并請(qǐng)求。團(tuán)隊(duì)成員也可以集中到一起,直接在瀏覽器中打開(kāi)代碼倉(cāng)文件,進(jìn)行在線(xiàn)檢視,提出檢視意見(jiàn)后使跟蹤流程閉環(huán)檢視意見(jiàn)。
另外,CodeArts Repo提供靈活的檢視意見(jiàn)分類(lèi)功能,既集成華為優(yōu)秀的實(shí)踐,使用此功能可以有效規(guī)范團(tuán)隊(duì)檢視活動(dòng),同時(shí)沉淀團(tuán)隊(duì)經(jīng)驗(yàn)和知識(shí),將知識(shí)在公司、產(chǎn)品、項(xiàng)目等不同范圍內(nèi)傳遞。
特性四:質(zhì)量門(mén)禁,確保每一行入庫(kù)代碼Clean
在軟件生命周期中,缺陷發(fā)現(xiàn)越早、修復(fù)越早,缺陷的影響和修復(fù)代價(jià)就越小,數(shù)據(jù)顯示,產(chǎn)品發(fā)布后每個(gè)缺陷的平均修復(fù)成本是驗(yàn)證階段的6倍以上。因此為了避免有缺陷的代碼合入主干,靈活有效的門(mén)禁控制必不可少。
華為云CodeArts Repo提供“人工審核+CICD自動(dòng)化檢查”雙重看護(hù)代碼質(zhì)量機(jī)制。通過(guò)保護(hù)分支功能,針對(duì)不同的角色控制代碼的推送和合并權(quán)限,確保代碼在推送入庫(kù)的時(shí)候就符合質(zhì)量要求。配合CI/CD自動(dòng)化檢查工具鏈,提供代碼靜態(tài)檢查、安全檢查、測(cè)試結(jié)果驗(yàn)證、代碼檢視人員角色和數(shù)量檢查、檢視意見(jiàn)閉環(huán)率等幾十種細(xì)粒度門(mén)禁控制策略,用戶(hù)可靈活配置以滿(mǎn)足不同的企業(yè)規(guī)范。
特性五:記錄代碼來(lái)龍去脈,雙向可追溯
軟件的可追溯性是軟件工程的基礎(chǔ)屬性,具備可追溯性是良好的軟件工程能力的客觀(guān)呈現(xiàn)??勺匪菪砸筌浖a(chǎn)過(guò)程中從需求分析到編碼、構(gòu)建、驗(yàn)證、發(fā)布過(guò)程中產(chǎn)生的需求,設(shè)計(jì),代碼,用例,缺陷,發(fā)布等業(yè)務(wù)對(duì)象以及其關(guān)系的準(zhǔn)確記錄。
華為云CodeArts Repo支持建立工作項(xiàng)和合并請(qǐng)求或者代碼提交commit的雙向關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)軟件開(kāi)發(fā)過(guò)程可追溯,通過(guò)可信的開(kāi)發(fā)過(guò)程,保障結(jié)果可信。以華為內(nèi)部為例,團(tuán)隊(duì)通過(guò)在代碼托管工具設(shè)置規(guī)則,確保了每次的代碼入庫(kù)都有對(duì)應(yīng)的工作項(xiàng),通過(guò)對(duì)關(guān)聯(lián)關(guān)系數(shù)據(jù)進(jìn)行識(shí)別、監(jiān)控和預(yù)警,及時(shí)發(fā)現(xiàn)不合規(guī)的代碼,提高產(chǎn)品質(zhì)量。企業(yè)也可以在處理現(xiàn)網(wǎng)問(wèn)題時(shí)根據(jù)關(guān)聯(lián)關(guān)系找到對(duì)應(yīng)的代碼版本,快速修復(fù)。
特性六:內(nèi)置多種模板,確保開(kāi)發(fā)規(guī)范有序
軟件開(kāi)發(fā)是一項(xiàng)創(chuàng)造性的活動(dòng),也是一項(xiàng)復(fù)雜的多人協(xié)同活動(dòng)。在軟件開(kāi)發(fā)過(guò)程中,企業(yè)需要選擇適合的開(kāi)發(fā)工作流,并建立規(guī)范的開(kāi)發(fā)協(xié)作流程來(lái)保障產(chǎn)品能夠持續(xù)高質(zhì)量交付。
華為云CodeArts Repo凝聚了華為公司內(nèi)部各類(lèi)研發(fā)場(chǎng)景的規(guī)范,可以幫助企業(yè)進(jìn)行組織級(jí)開(kāi)發(fā)規(guī)則制定和落地,促進(jìn)產(chǎn)品質(zhì)量和開(kāi)發(fā)效率提升。典型如代碼提交規(guī)則、分支/tag命名規(guī)則,代碼上庫(kù)審核規(guī)則、代碼質(zhì)量門(mén)禁規(guī)則等,也提供了靈活的模板配置能力,如倉(cāng)庫(kù)模板、代碼檢視模板、合并請(qǐng)求模板。企業(yè)可以通過(guò)這些規(guī)范確保團(tuán)隊(duì)開(kāi)發(fā)行為一致,產(chǎn)生的研發(fā)數(shù)據(jù)格式一致,并基于研發(fā)數(shù)據(jù)做效能分析,持續(xù)改進(jìn)研發(fā)能力。
得益于以上特性,華為云CodeArts Repo如今已廣泛應(yīng)用于國(guó)內(nèi)外財(cái)政、社保、物流、能源等領(lǐng)域,加速企業(yè)數(shù)字化轉(zhuǎn)型。如上海某知名大型物流企業(yè)擁有超過(guò)100個(gè)系統(tǒng)平臺(tái),1000多個(gè)倉(cāng)庫(kù),其業(yè)務(wù)涉及快遞、物流、跨境、倉(cāng)儲(chǔ)與供應(yīng)鏈等多項(xiàng)業(yè)務(wù)和解決方案。該企業(yè)使用CodeArts Repo管理代碼和協(xié)助規(guī)范企業(yè)開(kāi)發(fā)活動(dòng),有效提升研發(fā)團(tuán)隊(duì)協(xié)作效率,降低代碼質(zhì)量問(wèn)題70%。
源于華為,服務(wù)世界,華為云CodeArts Repo著力將華為公司30余年的源代碼管理經(jīng)驗(yàn)外溢,服務(wù)千百行業(yè)。面向未來(lái),華為云將對(duì)CodeArts Repo持續(xù)創(chuàng)新升級(jí),探索邊緣下載加速、多倉(cāng)協(xié)同,提供更豐富的安全檢查特性,攜手國(guó)內(nèi)外客戶(hù)、伙伴以及開(kāi)發(fā)者,共同提升軟件開(kāi)發(fā)質(zhì)量和效率。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )