2018年中國軟件企業(yè)百強榜

眾所周知,華為在國內(nèi)軟件行業(yè)長期位居百強榜第一名。經(jīng)過三十年的技術(shù)積累,華為的軟件研發(fā)能力歷經(jīng)了從瀑布、敏捷、DevOps到微服務(wù)研發(fā)模式的轉(zhuǎn)變,軟件研發(fā)工具也從二十多年前支持IPD開始持續(xù)積累到現(xiàn)在。

關(guān)于華為的軟件開發(fā)流程管理,華為DevCloud運維總監(jiān)張甲磊分享了華為的經(jīng)驗。

以前執(zhí)行IPD流程的時候,一個軟件版本一年半,中間只發(fā)布2次,基本就是半年一次發(fā)布。后來引入敏捷,發(fā)布周期迅速變成閃電式1個月。當(dāng)美國Gene Kim在《鳳凰項目》一書中提出DevOps要做到每天發(fā)布10次的概念時,感覺震驚了整個行業(yè)。

圖為軟件全生命周期圖

針對《鳳凰項目》提出的具體要求,當(dāng)時僅發(fā)布評審就要幾天時間,怎么可能每天把這些過程跑10次?而業(yè)界每天多次發(fā)布的DevOps實踐越來越多,華為也開始了DevOps轉(zhuǎn)型,先從文化理念開始,組織架構(gòu)流程也開始松動、調(diào)整。但當(dāng)時效率并未得到有效提升,反而讓開發(fā)人員陷入到bug修復(fù)和線上部署的泥潭里。

正在這時,華為發(fā)現(xiàn)DevOps落地最重要的支撐因素就是工具!如果沒有汽車生產(chǎn)流水線讓汽車裝配時間從數(shù)百小時提速到十幾個小時,汽車不可能走進千家萬戶。沒有DevOps工具鏈,也不可能讓每天10次發(fā)布在軟件研發(fā)活動中普及。把研發(fā)過程拆開看:

對于這個過程,業(yè)界統(tǒng)計數(shù)據(jù)顯示,編碼只占軟件生命周期投入的1/6,調(diào)試、部署、測試等研發(fā)過程耗費了大量的研發(fā)資源。因此,影響快速發(fā)布的主要因素是:代碼輸出后能否快速經(jīng)過集成、部署、測試,發(fā)布到生產(chǎn)環(huán)境。

首先講環(huán)境,DevCloud有Alpha、Beta、Gamma和生產(chǎn)環(huán)境,為什么要有三種研發(fā)環(huán)境?很多項目只有一套集成環(huán)境,外加一套分散的開發(fā)自驗環(huán)境,基本上構(gòu)成了所有的研發(fā)環(huán)境。但這種條件下,集成環(huán)境為保持穩(wěn)定,更新的頻率基本是以周計,甚至是月,反而無法促進快速交付。

DevCloud的研發(fā)環(huán)境作用如下:

自驗環(huán)境:不做統(tǒng)一管理,開發(fā)人員調(diào)試環(huán)境,隨用隨申請,5分鐘ready;

Alpha:系統(tǒng)集成驗證環(huán)境,隨時更新經(jīng)過開發(fā)人員自驗的軟件版本,執(zhí)行功能驗證;

Beta:內(nèi)測環(huán)境,DevCloud的研發(fā)過程就承載在Beta環(huán)境上,這套環(huán)境也承載了DFX測試的角色,能夠在壓力、性能、可靠性、安全測試下保持業(yè)務(wù)連續(xù)運行,不影響DevCloud自己的研發(fā)業(yè)務(wù);

Gamma:與生產(chǎn)環(huán)境配置保持高度一致,任何與環(huán)境配置相關(guān)的功能都在這里經(jīng)過充分測試。

DevCloud敢于設(shè)計多套研發(fā)環(huán)境的原因,是因為——部署自動化。在所有的自動化中,部署自動化首當(dāng)其沖。因為每次發(fā)布至少要部署4次,而以我們的實際運行數(shù)據(jù),每次發(fā)布引發(fā)部署10-20次。部署自動化之后,隨之而來的是構(gòu)建自動化,以及對接到流水線,實現(xiàn)持續(xù)集成。這里面包含大量的自動化工作,既要保障高效率,又要保障高質(zhì)量,滿足多項代碼規(guī)范、第三方引用規(guī)范、安全規(guī)范等,很不簡單。華為的構(gòu)建工具發(fā)展了二十年,快速地引用并構(gòu)建了自動化。

而要保障代碼的質(zhì)量,在持續(xù)集成中進行代碼靜態(tài)的自動檢查必不可少,華為研發(fā)在十幾年前就在跟國內(nèi)外一流的高校、機構(gòu)合作,積累了幾千項檢查能力,也成為在構(gòu)建階段就能發(fā)現(xiàn)多數(shù)編碼問題的重要工具保障。

持續(xù)集成的軟件包要進行版本化管理,以便隨時復(fù)現(xiàn)任意版本的問題,或者做版本回退。

但說到質(zhì)量保障,測試的自動化則功不可沒,接口自動化測試、界面自動化測試,甚至性能自動化測試等多種自動化測試手段,保證在版本發(fā)布之前,能夠得到高效的質(zhì)量驗證。

至此,我們實現(xiàn)了持續(xù)交付的完整工具鏈,支持高效的自動化發(fā)布過程。但DevOps不僅有CD(持續(xù)交付),還有OPS(線上運維)。主機配置、監(jiān)控、變更、現(xiàn)網(wǎng)運維事件等多個運維服務(wù)的推出,也解了我們的燃眉之急,形成了完整的DevCloud on DevCloud DevOps工具解決方案。

在一整套的工具服務(wù)支撐下,DevCloud發(fā)布的頻率達到了每天10次的水準(zhǔn),而實際在生產(chǎn)環(huán)境發(fā)布變更的頻率,更是比每天10次高的多。從最初的數(shù)周完成一次上線,到目前的每天10次發(fā)布的故事.

更多精彩內(nèi)容,可關(guān)注10月舉辦的2018華為全聯(lián)接大會,華為云DevCloud將首次披露,娓娓道來。

分享到

zhangnn

相關(guān)推薦