實例分析代碼管理架構(gòu)演進(jìn)
互聯(lián)網(wǎng)研發(fā),唯快不破。為了提升公司整體研發(fā)效率,百度引入了業(yè)界的優(yōu)秀工程實踐,設(shè)計開發(fā)了一整套研發(fā)工具鏈。主要包括項目管理平臺、代碼開發(fā)協(xié)作平臺和持續(xù)交付平臺,分別針對需求、開發(fā)和交付場景,提供工具、流程和數(shù)據(jù)支持,如圖1所示。

圖1 百度研發(fā)工具鏈
代碼管理的目標(biāo)場景就是開發(fā)場景,是研發(fā)活動的核心環(huán)節(jié),承載著打通需求、交付上下游的作用。百度代碼管理建設(shè)分別從文化傳播、工程實踐和產(chǎn)品建設(shè)三個方面入手推進(jìn)公司代碼管理水平的不斷提升。為此,我們推出了代碼管理建設(shè)的五級金字塔模型,如圖2所示,分別代表了代碼管理建設(shè)的不同能力水平。

圖2 百度代碼管理概況
最底層是代碼托管,這是代碼管理最基礎(chǔ)的能力。
第二層是協(xié)同開發(fā),就是支持各個業(yè)務(wù)線在不同的研發(fā)模式下進(jìn)行快而有序地協(xié)作開發(fā)。百度的產(chǎn)品、業(yè)務(wù)線眾多,不同的團(tuán)隊規(guī)模、不同的開發(fā)語言、不同的研發(fā)模式都給開發(fā)協(xié)同提出了不同的需求。
第三層是DevOps支持,實現(xiàn)產(chǎn)品全生命周期的工具全鏈路打通與自動化。
第四層通過研發(fā)數(shù)據(jù)度量體系的建設(shè),給公司提供研發(fā)數(shù)據(jù)參考,促進(jìn)研發(fā)流程的改進(jìn)。
第五層工程師文化建設(shè),在公司內(nèi)部推行代碼評審、內(nèi)部開源、社交化編程等工程師文化。
百度代碼管理的挑戰(zhàn)
百度擁有萬人開發(fā)團(tuán)隊,近十萬項目,每周代碼自動檢出的問題超二十萬,每天發(fā)起評審超1萬次。為了保證代碼質(zhì)量,我們要求代碼提交前和提交后都進(jìn)行自動化檢查。為了加速編譯和集成,我們有大規(guī)模的分布式編譯系統(tǒng)和持續(xù)集成系統(tǒng)。百度C/C++語言是源碼依賴,編譯系統(tǒng)需要檢出所有的依賴代碼,這樣代碼庫的訪問壓力呈指數(shù)級增長。這些都是百度代碼管理面臨的挑戰(zhàn),總結(jié)起來就是這三點:代碼質(zhì)量、規(guī)模協(xié)同和安全穩(wěn)定的服務(wù),如圖3所示。

圖3 百度代碼管理遇到的挑戰(zhàn)
面對這三大挑戰(zhàn),代碼開發(fā)協(xié)作平臺重點解決代碼管理五個方面的問題:代碼托管、協(xié)同開發(fā)、代碼質(zhì)量、代碼安全與開放、研發(fā)改進(jìn)。
1. 代碼托管
代碼托管是研發(fā)的基礎(chǔ)設(shè)施。代碼托管需要保證服務(wù)的安全、穩(wěn)定和可靠,同時保證在大規(guī)模協(xié)同場景下的高性能。
2. 代碼質(zhì)量
基于代碼入庫流程,提供簡單易用的代碼評審,并且在評審環(huán)節(jié)支持代碼掃描、編碼規(guī)范、安全掃描等自動化檢查,同時支持打通持續(xù)集成進(jìn)行自動化測試,從而保證代碼入庫前就得到充分的質(zhì)量檢驗。
3. 代碼安全與開放
代碼安全要求對訪問控制權(quán)限做嚴(yán)格的限制,需要支持安全掃描和安全審計等;代碼開放鼓勵代碼共享、開源,從而實現(xiàn)代碼復(fù)用。
4. 協(xié)同開發(fā)
支持主流的Workflow以滿足各業(yè)務(wù)線不同的研發(fā)模式的需求,如:傳統(tǒng)的分支開發(fā)、主干開發(fā)、特性分支、git flow等工作流。
5. 研發(fā)改進(jìn)
研發(fā)管理需要有數(shù)據(jù)支撐,用數(shù)據(jù)度量一切,不斷地優(yōu)化研發(fā)流程,促進(jìn)高效協(xié)同,提升研發(fā)效率。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
