如何看待華為1100億行代碼規模的代碼庫?華為雲MVP這樣說

2020-12-22 donews

10月10日,有媒體刊登了一篇文章「1100億行原始碼,這家公司如何應對大規模代碼託管的挑戰」,預告上海QCon將邀請華為專家在技術裂變中的可信軟體開發專場做演講。文章中心思想是希望開發者關注做好代碼倉庫的版本控制,保證軟體開發過程可控性,並吸引開發者參會。

說者無意,聽者有心,1100億行代碼迅速吸引了開發者的關注。

網友們紛紛拿出計算器,用1100億行代碼計算華為的人均代碼產出,更有好事者拿這個代碼量和Google對比,以證明華為的代碼量過於龐大,軟體工程能力有待改進。一夜之間,「如何看待華為1100億行代碼規模的代碼庫」的話題被頂上了知乎熱榜。

網友的意見基本分成3派:貶低派:質疑代碼量太大,存在冗餘代碼,過程管理不佳,甚至質疑拷貝粘貼代碼。解釋派:從華為的業務規模,業務量,員工數,軟體歷史,通信設備與網際網路的區別等方面,解釋1100億行代碼的合理性。分析派:筆者認為網友stephenzhao的分析最具代表性,他把1100億行代碼的原因歸結為分支「branch」,而分支的數量又和企業的經營模式息息相關,強市場導向,及時響應客戶,那就多拉分支,典型如華為。one track「一個主線」是對開發和維護最友好的,但對銷售和服務最坑爹。網絡設備升級意味著割接,所以銷售服務都很鬱悶,說你這沒競爭力,華為打補丁就搞定了。但好處是人少,幾十人就能支撐一個平臺。CMO都是和別的項目共享的。華為不苦呵呵地拉分支,搞局點測試,搞性能,出補丁,996,哪來的攻城掠地?這個分析很有深度。

網友引用華為內源平臺莊老師的回覆很明確——1100億行代碼不是光榮,是實實在在的挑戰,1100億怎麼來的不重要,如何搞定這1100億行代碼的管理才是重點。

帶著好奇和疑問,作為華為雲用戶和MVP,筆者參加了QCon上海的華為雲技術專場。

會中,華為雲專家分享了《華為雲DevCloud 在大規模團隊Git協作的探索》,在最後提問中也正面回應了知乎上有關華為雲1100億行規模代碼庫的問題。華為雲專家的觀點如下:首先,華為的產品族多達幾十個,比如傳統通信設備域有路由器、交換機、傳送網、無線波分、5G等產品;晶片領域有手機麒麟晶片和伺服器鯤鵬晶片;伺服器領域有TaiShan;作業系統領域有鴻蒙、openEuler、LiteOS;資料庫領域有GaussDB等等,每個領域從硬體到驅動、系統模塊,再到上層應用,相關組件與代碼倉庫繁多。其次,華為的代碼倉庫可以向前追溯十幾年,與 Google 等網際網路廠商最典型的區別在於華為代碼的可追溯性。網際網路廠商的源碼多數是發布到自己的伺服器上,DevOps是可以從內部的源碼倉庫走到內部的伺服器上,因此網際網路廠商多數不會維護一個10年前的版本與代碼倉庫。而華為的代碼倉庫是在內部Dev開發,產品發布後卻是在用戶的機房中進行Ops的,因此華為必須要歸檔和維護歷史版本,尤其是發布給用戶的版本,包括正式版本和補丁版本,導致代碼倉庫數量非常多。綜上,華為的代碼倉庫數量以及1100+億的代碼規模,從現狀來看是存在的。

華為雲DevCloud 的代碼平臺要託管如此多產品代碼,且多數產品倉庫每天都會被大量的CI工程下載,同時峰值平臺也會收到1萬次下載/每秒的請求,在這種複雜的軟體工程背景下,華為雲專家介紹了華為雲DevCloud 的代碼平臺是如何支撐海量業務的連續性和可信。

華為雲專家表示,華為iSource是華為內部的代碼託管平臺,它在華為雲上對外提供服務的名字是CodeHub(是不是有點耳熟?),這兩者都是華為雲DevCloud的一個組成部分。簡而言之,一個辦公室,兩塊牌子。

iSource/CodeHub的歷史回顧

2014年,華為確定基於GitLab的社區版本進行深度定製,並在2015年4 月底,上線了 iSource 第一代的分布式架構,通過倉庫路由做到存儲IO能負載到不同後端伺服器上。2015年底,為了解決不同華為研究所遠程下載 Git 速度慢的問題,又在華為各地域數據中心建立了節點,實現了多中心分布式架構。各個中心間的同步採用異步同步,雖然不能保證數據的強一致性,但是通過遠程代理等手段實現了用戶體驗上的一致性。

2018年,華為又基於 GitLab 9.0 開始了下一代的架構調整,同時也看到GitHub的架構對原有的分片進行了突破,通過應用層三副本複製,實現一個倉庫同時可由三臺伺服器提供服務。另外,GitHub的Spokes分布式架構,是華為下一步突破的方向,目前正在進行一些基礎性的改造工作,包括倉庫分片微服務,路徑哈希、引用派生等,這些架構上的進步會進一步提升用戶體驗。

由於華為產品代碼倉庫多,派生多,每個產品會面臨眾多倉庫要開發和維護,需要解決如下問題:多倉庫關聯問題,如何解決多個源碼倉庫之前的版本關聯;派生倉庫的管理問題,倉庫派生後相關配置會在派生倉庫失去管控;上遊同步複雜,派生倉庫與上遊倉庫同步困難,會消耗大量工作量;磁碟消耗太快,派生倉庫在使用過程中,會產生大量冗餘存儲。

OMEGA開發模式橫空出世

華為iSource團隊經過了很多嘗試和對比後,最終選擇對標 Gerrit平臺的開發模式,基於 GitLab 的內核,開發了 OMEGA (One-stop MultipurposE Git Access) 代碼倉庫集中式開發模式。

OMEGA 開發模式有如下特點:開發人員不再需要派生倉庫。伺服器上的 Git 倉庫不需要開發人員的開發分支存在,分支大量減少。使用 xml 文件來描述倉庫關聯關係,沒有 submodule 存在的子倉庫衝突問題,可配置化,更容易維護。通過客戶端工具git-mm一鍵推送修改並創建 Merge Request,加快代碼提交速度。

華為雲專家還介紹了OMEGA背後的技術,如客戶端git-mm和iSource服務端協議。總的來說,在OMEGA開發模式下,開發人員不需要fork倉庫,通過 init 和sync 下載所有的倉庫,然後在本地創建一個分支,進行相應的開發工作,最後通過upload 把修改推送到代碼平臺的伺服器上,產生一個Merge Request。同時平臺發送消息給相關的pipeline server,啟動相應的CI工程。如果CI工程不通過,或者 committer 審核不過的話開發人員可以進行修改並更新Merge Request,沒問題的話就可以刪除本地的開發分支,進入下一步的迭代開發。同時在pipeline server上可以通過命令來記錄各個倉庫的快照情況,有了這個快照,就可以對每條CI的結果、每次代碼檢查的結果 ,包括發布的每一個版本,進行源碼回溯。通過這個快照,完全還原當時構建時每個倉庫對應的提交點。

結束語

聽完華為雲專家的介紹,筆者的感覺是,代碼託管平臺背後的技術並不簡單,如果企業的開發模式稍複雜,代碼量大一些,絕不是自己搭建一套開源版就能完全解決,真遇到問題時,我總不能自己去修改開原始碼吧,從這個角度說,花一點錢買服務,聚焦在核心業務上,反而是低成本的選擇;其次呢,我們看到了華為的OMEGA技術的創新,當你遇到倉庫多,派生多,多倉庫關聯,多個源碼倉庫之前的版本關聯,存儲量大等問題時,或者說現有的代碼託管平臺體驗不好了,你應該考慮一下OMEGA,要麼直接使用華為雲DevCloud旗下的CodeHub,要麼你等華為開源。華為雲專家也透露了 OMEGA 的開源計劃, 2019年底將上線DevCloud產品CodeHub代碼平臺,在2020年做到開源。

筆者獲悉,2020年2月11日-12日期間,華為公司面向ICT領域全球開發者的年度頂級旗艦活動——華為開發者大會2020(Cloud)將在深圳會展中心舉辦。屆時會有哪些乾貨出爐,讓我們拭目以待。


相關焦點

  • 華為大連軟體開發雲上線,打造軟體雲生態,加速軟體產業升級
    開發團隊基於雲服務的模式按需使用,隨時隨地在雲端進行項目管理、配置管理、代碼檢查、編譯、構建、測試、部署、發布等,軟體開發更加簡單高效,開發者能夠專注快速創新和應對永無止境的需求變化,大幅提升個人和團隊的交付能力和效率,幫助企業提高競爭力。
  • 華為雲CodeHub代碼模板共享計劃啟動
    華為雲DevCloud的服務CodeHub(代碼託管)是華為雲面向開發者的基於Git的在線代碼託管服務,是具備安全管控、成員/權限管理、分支保護/合併、在線編輯、統計服務等功能的雲端代碼倉庫。CodeHub的代碼模板基於不同開發語言和應用場景的示例原始碼,開發者可通過代碼模板快速創建自己的項目,還可通過配置華為雲流水線服務和相關雲資源後,在雲端實時運行你的應用,實現所見即所得。目前已匯聚華為開發者聯盟、AI、鯤鵬、雲原生、IoT等大量官方模板。開發者不僅可以直接引用代碼模板,還可以貢獻代碼模板,我為人人,人人為我,讓開發始於80%。
  • 騰訊員工中66%是研發,用C++最多,去年新寫12.9億行代碼
    從騰訊研發工程師去年寫了多少代碼、最喜歡用什麼樣的語言、bug解決效率如何,以及領導是否寫代碼等等,應用盡有。可以說是了解鵝廠研發工程師狀況最權威數據。現在,我們一起來看看~研發人員佔比66%,人均新寫3.3萬行代碼2019年,騰訊產品研發人員佔比66%。這意味著,平均每三個騰訊員工中,只有一個不是研發。這個「濃度」在巨頭科技公司中排名前列。根據領英在2019年4月發布的數據,阿里研發人員比例為51%,華為45%。
  • 像華為一樣工作!華為雲開放WeLink推進數位化轉型
    華為無疑是近年的明星企業,強大的技術儲備,前瞻的戰略布局,19萬人的超大規模,遍布全球170多個國家的龐大網絡,全年超過1000億美元的收入,都可以配得上一個詞:不僅僅是世界500強。全球華為人是如何工作的?華為各國公司,各個業務部,乃至各個部門之間又是如何協同的?恐怕是管理人最為關注的話題。
  • 華為雲CloudIDE,雲時代的精創利器
    軟體把意圖變為實現的過程叫做「編碼」(即編寫代碼),我們需要軟體開發工具,來把創意變現為代碼並儘早實現上手體驗和驗證。隨著所服務的技術時代不斷發展,軟體開發工具也在不斷進化,從主機時代的文本編輯器、桌面時代的桌面IDE、互聯時代的輕量桌面IDE(編輯器+),逐步演進到雲時代的輕量級WebIDE(CloudIDE)。
  • 2018年華為納稅1100億,是阿里巴巴的2倍,是京東的多少倍?
    2018年3月29日,華為發布了2018年的年度報告,報告顯示華為業績穩健增長,2018年實現全球銷售收入7212億元人民幣。同比增長19.5%,淨利潤為593億元人民幣,同比增長了25.1%。同時消消費者業務領域實現收入3489億。運營業務領域實現銷售收入2940億人民幣。
  • 華為雲:我們在這裡又是第一!
    當前,全球科技創新密集而活躍,5G、物聯網、人工智慧等新技術日漸成熟,再加上新基建等政策加持,政務雲迎來更加廣闊的發展空間。根據IDC最新發布的《全球智慧城市支出指南》顯示,2020年中國市場的智慧城市相關支出規模將達到259億美元,投入最多的城市仍為北京、上海、廣州和深圳。走在中國信息化發展前列的四大城市都在持續投入,開展新一輪的智能升級。
  • 零基礎分分鐘玩轉AI,華為雲ModelArts全體驗
    1月底,華為雲EI(企業智能)一站式AI開發平臺ModelArts正式商用上線,不僅讓許多AI小白拆除AI開發的門檻,同時也讓諸多AI開發者享受到更為高效便捷的開發體驗。這一被稱為「開發者的福音」的AI平臺,究竟是怎樣的利器?它又在如何在各個傳統行業發揮作用呢?
  • 華為雲空間如何保衛你的數據安全?
    如果說手機沒電會觸發現代人的焦慮症,那麼手機丟失就是現代人的致命打擊。華為雲空間的手機查找功能,可以提高手機失而復得的概率,也能在手機一去不返時進行鎖定、或擦除數據。雲備份、查找手機,是我們使用華為雲空間時,所能直觀感知調用的「守」和「護」。
  • 華為終端雲服務攜手開發者讓數字世界繽紛多彩
    華為終端雲服務向全球開發者開放五大根服務引擎,助力開發者應用創新。而華為終端雲服務開放能力的合集HMS Core 5.0全新升級,擴展能力增加並增強,為開發者提供多領域服務。華為終端雲服務願攜手開發者創新數字世界,打造全場景智慧生活。
  • 華為雲高校行走進雲南大學,資料庫專場分享成師生「熱寵」
    近日,華為雲高校行校園分享會走進雲南大學,華為雲AI 、IoT、資料庫等業務團隊與雲大師生進行深度交流。其中,華為雲資料庫團隊向現場師生詳細介紹了華為雲資料庫服務及行業解決方案,並以實操體驗形式讓同學們快速熟悉雲資料庫產品。
  • 15億美元怎麼花?華為開發者大會2020(Cloud)用代碼說話
    2月11-12日,在華為的大本營深圳,來自全球的約15000名開發者將匯聚於此,用他們最熟悉的語言——代碼,交流、溝通、激情碰撞!1天才少年與掃地僧同框華為招募過大批天才少年,撐起了研發的「半邊天」,聽說過卻沒見過。
  • 竹間智能+華為雲,看雲計算+AI如何碰撞火花
    作為「華為雲鯤鵬凌雲夥伴」,竹間智能Bot Factory完成華為雲鯤鵬雲服務兼容性測試的認證,在大會上正式獲授牌。年市場規模達1.66億美元,2018至2024年CAGR(年複合增長率)將達到93.6%,而AI能力已成為用戶進行雲服務選型時的重要考量因素。
  • 華為雲「火」在哪
    這樣的痛苦,逼迫這個規模龐大的群體不得不啟動「上雲」的數位化戰略。與此同時,為推動「中國製造2025」和「十三五」系列規劃落地,工信部和各級政府也在引導和推動政企上雲。其中,公有雲市場規模達到437億元,相比2017年增長65.2%,預計2019-2022年仍將處於快速增長階段,到2022年市場規模將達到1731億元;私有雲市場規模達525億元,較2017年增長23.1%,預計未來幾年將保持穩定增長,到2022年市場規模將達到1172億元。
  • 出海企業需要像華為雲這樣的「當地導遊」
    如今,來一場說走就走的海外旅行對於很多中國人來說已經是家常便飯,就連中國企業「出海」之旅的規模、速度與以前相比也不可同日而語。時至今日還清楚地記得第一次出國前,既緊張又興奮的心情,仔細地花了很長時間來準備出國攻略,包括了解當地的風土人情、語言文化,還有衣食住行,事無巨細,無非是想來一次既內容充實又經濟實惠且安全的海外之旅。
  • 華為雲TechWave雲基礎設施專題日來了!
    企業應如何借勢數字經濟浪潮實現智能化升級?承載6.7億用戶的華為終端雲服務如何實現All in HUWAEI CLOUD?在這All in HUAWEI CLOUD的背後,華為雲擎天架構又有哪些黑科技?8月20日,華為雲TechWave雲基礎設施專題日將為大家一一解答!
  • 華為雲DevCloud為開發者提供全雲化的開發體驗
    在HUAWEI CONNECT 2019期間,在華為云云服務開發者分論壇上,華為雲布道師做了《CloudIDE:開發者的高效、智能的可信開發環境》專題演講,主要介紹了華為雲DevCloud的CloudIDE服務,雲端集成開發的環境作為華為雲的開發者入口
  • 從「OnCloud」到「InCloud」,華為雲提出雲原生2.0
    華為雲聯合Forrester共同發布雲原生白皮書,提出擁抱雲原生優先戰略,加速各行業數位化轉型和智能升級。華為雲產品副總裁方國偉介紹了華為云云原生2.0全景圖華為雲產品副總裁方國偉介紹了華為云云原生2.0全景圖,為賦能新雲原生企業智能升級,實現「資源高效、應用敏捷、業務智能、安全可信」,華為雲原生基礎設施全面升級,讓雲原生成為企業應用內生的能力。
  • 四年雲戰爭,華為打出了什麼結果?
    在過去近四年時間裡,華為雲相繼超過金山雲、天翼雲、騰訊雲,市場份額佔到了國內的第二名。 《任總在企業業務及雲業務匯報會上的發言》,圖源華為心聲社區 隨著公有雲市場規模的不斷擴大,企業上雲成為不可阻擋的潮流,公有雲也成了華為的必爭之地。
  • 華為雲pytorch代碼怎麼部署?
    華為雲pytorch代碼怎麼部署? 本文將以一個使用了pytorch的demo代碼pytorch-classify為例,通過華為雲上的容器服務一鍵式部署,5分鐘完成免費的雲上pytorch代碼的部署。 傳統部署方式 首先是準備環境。先有個伺服器,這臺伺服器需要能夠被外部訪問。