百度擁有萬人開發團隊,近十萬項目,每週代碼自動檢出的問題超二十萬,天天發起評審超1萬次。爲了保證代碼質量,咱們要求代碼提交前和提交後都進行自動化檢查。爲了加速編譯和集成,咱們有大規模的分佈式編譯系統和持續集成系統。百度C/C++語言是源碼依賴,編譯系統須要檢出全部的依賴代碼,這樣代碼庫的訪問壓力呈指數級增加。這些都是百度代碼管理面臨的挑戰,總結起來就是這三點:代碼質量、規模協同和安全穩定的服務。git
面對這三大挑戰,代碼開發協做平臺重點解決代碼管理五個方面的問題:代碼託管、協同開發、代碼質量、代碼安全與開放、研發改進。 安全
1. 代碼託管
代碼託管是研發的基礎設施。代碼託管須要保證服務的安全、穩定和可靠,同時保證在大規模協同場景下的高性能。
2. 代碼質量
基於代碼入庫流程,提供簡單易用的代碼評審,而且在評審環節支持代碼掃描、編碼規範、安全掃描等自動化檢查,同時支持打通持續集成進行自動化測試,從而保證代碼入庫前就獲得充分的質量檢驗。
3. 代碼安全與開放
代碼安全要求對訪問控制權限作嚴格的限制,須要支持安全掃描和安全審計等;代碼開放鼓勵代碼共享、開源,從而實現代碼複用。
4. 協同開發
支持主流的Workflow以知足各業務線不一樣的研發模式的需求,如:傳統的分支開發、主幹開發、特性分支、git flow等工做流。
5. 研發改進
研發管理須要有數據支撐,用數據度量一切,不斷地優化研發流程,促進高效協同,提高研發效率。架構
百度代碼開發協做平臺使用微服務架構構建業務服務,一方面整合了現有的業務系統,另外一方面提升了系統的穩定性和性能。使用數據分片和讀寫分離相結合的方式解決了代碼庫服務容量和性能的問題。使用專屬雲方案處理多租戶的問題,幫助企業客戶快速接入,實現資源隔離。可是,咱們還有不少不足的地方有待提升和完善。好比,目前咱們考慮到性能和開發成本的問題,選擇了數據分片來擴容。可是,隨着代碼庫容量的不斷提高,數據分片帶來的架構複雜、運維成本、性能瓶頸等問題也開始顯現出來。讀寫分離和主備切換的方案,在高併發讀的場景下工做尚可,可是面對高併發寫的場景性能和可靠性就難以知足。併發