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

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

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

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

圖為軟件全生命周期圖

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

分享到

zhangnn

相關(guān)推薦