自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

曾正陽(yáng):Devops研發(fā)方法、工具與應(yīng)用實(shí)踐

企業(yè)動(dòng)態(tài)
10月29日,清晨的武漢下著淅瀝瀝的小雨,為已入冬的城市平添了幾分寒意,但是在光谷萬(wàn)科中心卻有那么一群人冒雨因華為HDG而聚到了一起,他們就是樂(lè)于求知的開(kāi)發(fā)者。這已是華為HDG的第七站,也是演講與分享時(shí)間最長(zhǎng)的一站。講師演講的精彩,開(kāi)發(fā)者們提問(wèn)更是踴躍,交流與分享高潮不斷。他們究竟聊了些什么呢?

 武漢是我國(guó)重要的科研教育基地,普通高校和本科院校數(shù)僅次于北京。10月29日,清晨的武漢下著淅瀝瀝的小雨,為已入冬的城市平添了幾分寒意,但是在光谷萬(wàn)科中心卻有那么一群人冒雨因華為HDG而聚到了一起,他們就是樂(lè)于求知的開(kāi)發(fā)者。

這已是華為HDG的第七站,也是演講與分享時(shí)間最長(zhǎng)的一站。講師演講的精彩,開(kāi)發(fā)者們提問(wèn)更是踴躍,交流與分享高潮不斷。他們究竟聊了些什么呢?

 

[[180383]]

 

演講中談到DevOps,華為軟件開(kāi)發(fā)云高級(jí)架構(gòu)師曾正陽(yáng)表示:“DevOps給開(kāi)發(fā)者帶來(lái)研發(fā)模式的革新,開(kāi)發(fā)人員和運(yùn)維人員協(xié)同合作,確保軟件高效交付的同時(shí)可以促進(jìn)產(chǎn)品更快的面向市場(chǎng),更快的得到反饋,提升軟件迭代周期。”

以下是他的現(xiàn)場(chǎng)演講實(shí)錄:

大家下午好。自我介紹一下,我之前在京東做了很多年的云計(jì)算,后來(lái)來(lái)到華為做同樣的事情,DevOps要把比較成熟的工具跟方法論以及整個(gè)流程搬到整個(gè)云上面去,所以我們做的事情都一樣,所以今天給大家分享一下。

下午的議題分為這幾個(gè)階段:第一點(diǎn)講一些概念,可能是DevOps、CD、CI,可能大家對(duì)這個(gè)概念看的比較多了,但實(shí)際上它官方的或者大家理解正確的是什么意思,有點(diǎn)疑問(wèn)。第二點(diǎn)這邊做一些澄清,業(yè)界談到IBA或者亞馬遜他們?cè)趺醋龅摹5谌c(diǎn)比較重要的一些點(diǎn)。第四點(diǎn)華為內(nèi)部怎么做開(kāi)發(fā)、DevOps,為什么要做DevOps。第五點(diǎn)在外部也有一個(gè)DevOps的供應(yīng)鏈,已經(jīng)在華為供應(yīng)鏈上面承載了。大概這幾塊,第一大家看到風(fēng)格,滿(mǎn)屏的風(fēng)格是典型的華為風(fēng)格,這是大頭制。之前一般寫(xiě)拼音不這么寫(xiě),就寫(xiě)一句話(huà),來(lái)到華為之后受到這個(gè)影響,所以屏貼滿(mǎn)了,也沒(méi)改。

先講一下概念。什么是DevOps,因?yàn)榫W(wǎng)上資料太多了,我們截取兩個(gè)最重要的,一個(gè)是維基,一個(gè)是Gartner。這兩個(gè)是比較權(quán)威的,他們?cè)趺粗v。維基里面講是個(gè)過(guò)程方法和系統(tǒng)總成,所以它是一個(gè)總稱(chēng),是一個(gè)聯(lián)合的東西,它能夠促進(jìn)運(yùn)維跟開(kāi)發(fā)之間的一些溝通協(xié)調(diào)。Gartner怎么講,它其實(shí)有一樣,它基于里面的一個(gè)敏捷宣言,基于敏捷,從敏捷出發(fā)的,從開(kāi)發(fā)的敏捷走到運(yùn)維敏捷,基本上這樣一個(gè)概念,所以?xún)烧呶矣X(jué)得核心是一樣的??纯此麄?nèi)齻€(gè)專(zhuān)家怎么看,第一個(gè)是DevOps名詞發(fā)明者,他提出DevOps這個(gè)詞。他覺(jué)得DevOps是打破開(kāi)發(fā)和運(yùn)維之間的一個(gè)孤島,我們一般做開(kāi)發(fā),開(kāi)發(fā)就開(kāi)發(fā),運(yùn)維就運(yùn)維,兩個(gè)是一個(gè)部門(mén)強(qiáng),所以?xún)蛇叴蚣艹镀み€是比較嚴(yán)重的。DevOps提出來(lái)一個(gè)實(shí)踐,他打破了兩個(gè)部門(mén)之間的一個(gè)障礙,起到一個(gè)互相協(xié)作。

第二個(gè)人說(shuō)DevOps能夠提升入組頻率,重點(diǎn)是要聚焦在我們更快地把某個(gè)功能、某個(gè)產(chǎn)品上到生產(chǎn)環(huán)境,然后讓用戶(hù)能夠快速地反饋,從而提高這個(gè)交互的效率。

第三個(gè)人講的是如果沒(méi)有開(kāi)發(fā)和運(yùn)維之間的集合配合,持續(xù)交互變得非常難。什么意思?這個(gè)人是《持續(xù)交互》的作者,他的理解有點(diǎn)偏頗了。怎么講?DevOps是CD的前景,因?yàn)樗荂D書(shū)的作者,所以他提出來(lái)DevOps是CD的一部分。但是我覺(jué)得在日常概念里面,CD跟DevOps涉及到什么樣的關(guān)系,一會(huì)兒會(huì)講到。

第三部分講到行業(yè)的的觀點(diǎn)。還有人提取了三個(gè):亞馬遜、微軟、IBM,提取的差不多,大家看一下就知道了。后面有講到他們?nèi)齻€(gè)公司是用什么樣的工具鏈、什么樣的流程來(lái)去承接他們的理論,所以概括起來(lái)什么是DevOps,它就是一種文化,流程和工具的補(bǔ)充。我們講的這個(gè)文化怎么去改變?每個(gè)公司都不一樣,所以沒(méi)有標(biāo)準(zhǔn)這個(gè)文化要怎么做,流程每個(gè)公司不一樣,跟業(yè)務(wù)相關(guān)的。這個(gè)工具能夠幫助DevOps,能夠推動(dòng)這個(gè)DevOps的開(kāi)發(fā)。工具鏈整合是可以到處分享,但是文化跟流程是屬于內(nèi)部的一部分,可能要改進(jìn)一下。這是一個(gè)統(tǒng)稱(chēng)。它從敏捷的開(kāi)發(fā)走向敏捷的運(yùn)維和敏捷的業(yè)務(wù),這個(gè)都會(huì)講到。

為什么是這三個(gè)呢?首先是從敏捷的開(kāi)發(fā)再到敏捷的運(yùn)維跟敏捷的業(yè)務(wù),它們?nèi)齻€(gè)是什么關(guān)系?大概先講概念,有點(diǎn)不是那么形象,我們看看,講一下歷史。DevOps的起源,基本上從2009年開(kāi)始,很多專(zhuān)家提出促進(jìn)的一些活動(dòng),比如一天要部署10次,以前都是一個(gè)星期、兩個(gè)星期或者一個(gè)月、兩個(gè)月,甚至產(chǎn)品大的半年布一次。它要求一天布10次,這個(gè)怎么做到呢?肯定要從DevOps兩方面要考慮的。下面還有精益之類(lèi)的,所以DevOps是一個(gè)從敏捷開(kāi)發(fā),它起源是敏捷,敏捷開(kāi)發(fā)越來(lái)越快,交互結(jié)構(gòu)越來(lái)越快,運(yùn)維怎么辦?要促使運(yùn)維,每年開(kāi)發(fā)快了之后,運(yùn)維太慢了,所以會(huì)從開(kāi)發(fā)促進(jìn)運(yùn)維,迫使運(yùn)維加快腳步,讓運(yùn)維做的更好,所以做敏捷的運(yùn)維。

敏捷的業(yè)務(wù)怎么講?敏捷的業(yè)務(wù)是你開(kāi)發(fā)快起來(lái),運(yùn)維也被你逼得快起來(lái),之后能把一些特性、功能更快地上到生產(chǎn)環(huán)節(jié),供用戶(hù)來(lái)用,供用戶(hù)來(lái)提供一些反饋的意見(jiàn),所以它的業(yè)務(wù)就能夠很快地回到業(yè)務(wù)建議,包括一些Buy、產(chǎn)品的形態(tài)的一些問(wèn)題都會(huì)很快地反饋到研發(fā)那邊,促進(jìn)更快地業(yè)務(wù)開(kāi)發(fā),所以上一節(jié)也講到從敏捷的開(kāi)發(fā)到敏捷的運(yùn)維、敏捷的業(yè)務(wù),具體要怎么做呢?開(kāi)發(fā)跟運(yùn)維之間是怎么去合作,簡(jiǎn)單地說(shuō)開(kāi)發(fā)跟運(yùn)維一定要協(xié)作,他們到底怎么協(xié)作呢?比如說(shuō)DevOps,大家都缺工人,我直接把所有的工作扔給開(kāi)發(fā),開(kāi)發(fā)自己做運(yùn)維,做的也不對(duì)。運(yùn)維丟給他以后不管,這個(gè)圖就講到開(kāi)發(fā)跟運(yùn)維怎么去協(xié)作。第一研發(fā)要把產(chǎn)品交付給運(yùn)維,要傳遞一個(gè)產(chǎn)物,交付件或者是軟件包,交給運(yùn)維,更好地促進(jìn)運(yùn)維氣氛,包括部署、監(jiān)控、反饋、系統(tǒng)的一些迭代。同時(shí)運(yùn)維也要反饋回來(lái)。以前我們基本上是開(kāi)發(fā)者開(kāi)發(fā)一款軟件包,就扔給運(yùn)維,全部不管了,有問(wèn)題運(yùn)維打電話(huà),你這邊出問(wèn)題了,趕快解決,所以這兩邊幾乎不干涉。這邊運(yùn)維必須要反饋給研發(fā),因?yàn)檠邪l(fā)在線(xiàn)上的一些問(wèn)題,用戶(hù)反饋連接問(wèn)題,比如說(shuō)PBS太低了,還說(shuō)頁(yè)面太亂了,還是其它的問(wèn)題,運(yùn)維要及時(shí)反饋給研發(fā),這兩個(gè)是互相反饋的。這是一方面。

另外一方面,他們既能互相傳遞,就是開(kāi)發(fā)者把整個(gè)業(yè)務(wù)要到運(yùn)維,到運(yùn)維之后一開(kāi)始就會(huì)參與到業(yè)務(wù)的開(kāi)發(fā)當(dāng)中,整個(gè)業(yè)務(wù)的架構(gòu)和初期的架構(gòu)會(huì)怎么去搭合理。運(yùn)維從一開(kāi)始就要參與到研發(fā)過(guò)程當(dāng)中,從研發(fā)的角度來(lái)說(shuō)運(yùn)維有些規(guī)范,肯定要提前去遵守,這是運(yùn)維傳遞給研發(fā)的,你要根據(jù)我的一些要求來(lái)做,這樣應(yīng)用不會(huì)那么容易掛了,容易規(guī)范。在前期提供腳本、檢查腳本,這個(gè)在目錄的什么結(jié)構(gòu),定一下規(guī)范,這是運(yùn)維傳給開(kāi)發(fā)的一些技能,所以?xún)蛇吇ハ鄥⑴c的。這樣的話(huà)DEV和OPS兩者目標(biāo)是一致的,以前開(kāi)發(fā)跟運(yùn)維目標(biāo)不一樣,開(kāi)發(fā)要盡快,我要快,運(yùn)維是我要慢,我要維穩(wěn)(保持穩(wěn)定)。DEV之后有一個(gè)文化,這個(gè)文化怎么驅(qū)動(dòng)呢?我們要把他們兩個(gè)弄在一個(gè)團(tuán)隊(duì)里面,他們的目標(biāo)是一致的,這樣的話(huà)目標(biāo)一致,做事情比較好辦了。

它們之間前后有什么區(qū)別?以前做的開(kāi)發(fā)基本上都是計(jì)劃比較多,計(jì)劃比較長(zhǎng),像半年、一年,這都是很常見(jiàn)的。會(huì)議也多,每天一堆會(huì)議,會(huì)議要去做什么?要去猜測(cè)用戶(hù)的行為,猜測(cè)用戶(hù)需要什么,所以都是猜測(cè),以假設(shè)為依據(jù),專(zhuān)注于計(jì)劃,缺乏一些合作,組織也不靈活,運(yùn)維是運(yùn)維,可能開(kāi)發(fā)、運(yùn)維、測(cè)試和其它部門(mén),分布在不同的部門(mén),所以組織不太靈活,最關(guān)鍵是流程,流程特別復(fù)雜。要從一個(gè)開(kāi)發(fā)到上線(xiàn)開(kāi)展要通過(guò)不同部門(mén)的審批,開(kāi)一次會(huì)領(lǐng)導(dǎo)審批。

用了DevOps之后,流程簡(jiǎn)化了,文化的整改,能做到這些。DevOps之后把文化和流程統(tǒng)一之后,會(huì)議肯定少了,交付也快,關(guān)注用戶(hù)的交付價(jià)值,同時(shí)團(tuán)隊(duì)也比較專(zhuān)注,比較靈活,不像以前那么死了,基本上這是不同。

我們一般講到CD、CI、DevOps,他們到底是不是一樣,是不是互相包含一些問(wèn)題。這邊講到2個(gè)CD,CI到開(kāi)發(fā)、運(yùn)維、測(cè)試、部署到驗(yàn)證這幾部,這是CI的范圍。CD就是持續(xù)交付,持續(xù)交付跟持續(xù)部署的區(qū)別在最后一步,你是不是自動(dòng)化到生產(chǎn)環(huán)節(jié),所以交付到驗(yàn)證之后可能會(huì)手動(dòng)地,經(jīng)過(guò)一系列流程,后面就不管了,怎么交付到生產(chǎn)上去就不管了,只是初步出了這個(gè)軟件包滿(mǎn)足要求就截止了,這是Devlivery的一個(gè)范圍。持續(xù)部署就要全程自動(dòng)化,這是持續(xù)部署的含義。DevOps跟它有什么關(guān)系呢?DevOps實(shí)際上是一個(gè)環(huán),但是它們?nèi)?,DevOps跟2個(gè)CD是一個(gè)活動(dòng),一步一步地,DevOps是個(gè)活動(dòng),一個(gè)流程的環(huán),它從研發(fā)到部署之后,它通過(guò)操作監(jiān)控,要把這些意見(jiàn)、用戶(hù)日志反饋到研發(fā),研發(fā)再?gòu)闹虚g提取一些需求,來(lái)進(jìn)行新一輪的迭代,所以它不是一個(gè)單向的,這邊相當(dāng)于是一個(gè)單向的。所以它們之間其實(shí)沒(méi)有任何的包含關(guān)系,它們之間的概念不一樣,包括CD、CI是一個(gè)活動(dòng),DevOps是一個(gè)文化流程,統(tǒng)一的一個(gè)簡(jiǎn)稱(chēng)。第一頁(yè)講到(14:50)的作者,他認(rèn)為DevOps是CD、CI運(yùn)轉(zhuǎn),這樣顯然是不合理的。

講到DevOps的收益,講前面兩個(gè),第一個(gè)收益占前兩者一個(gè)是提升軟件的部署質(zhì)量,一個(gè)是更迭軟件的發(fā)布。為什么提升部署質(zhì)量呢?很多人認(rèn)為運(yùn)維布得越少,可能錯(cuò)誤也少,布得越多難道錯(cuò)誤越少嗎?這個(gè)怎么去算出來(lái)呢?剛才講到敏捷的開(kāi)發(fā)會(huì)促進(jìn)敏捷的運(yùn)維,以前因?yàn)椴家淮位静粫?huì)出現(xiàn)問(wèn)題了,運(yùn)維也不會(huì)出現(xiàn)什么問(wèn)題。一天布10次之后,運(yùn)維整個(gè)系統(tǒng)和工具是不是要做一些調(diào)整和改進(jìn)呢?從這個(gè)層面來(lái)說(shuō),運(yùn)維的能力是越來(lái)越強(qiáng),對(duì)敏捷的開(kāi)發(fā)促進(jìn)越來(lái)越強(qiáng),這樣普及量就會(huì)越來(lái)越高。

下面采用DevOps的原因,就是更快交付跟部署,減少停機(jī)。為什么減少停機(jī)呢?我們一般的做法一個(gè)月、兩個(gè)月升級(jí)一次,升級(jí)一次意味著一兩個(gè)月它的功能顆粒度很大。沒(méi)法做到不停地升級(jí)某一個(gè)大的產(chǎn)品,它可能是一個(gè)大的產(chǎn)品,可能是一級(jí)一級(jí)升級(jí),我一般是半夜升級(jí),他會(huì)影響,但是影響是最少的。平均的話(huà),如果有跨時(shí)區(qū)的、國(guó)外用戶(hù)怎么辦,肯定會(huì)受影響。

總結(jié)一下,開(kāi)發(fā)跟運(yùn)維之間一些合作,更快地交付更可靠的軟件,簡(jiǎn)單來(lái)說(shuō)就是又快又好,怎么樣做到又快又好?甚至DevOps很重要20%是技術(shù),技術(shù)是文化。這個(gè)文化剛才講了,文化每個(gè)公司各異,但是技術(shù)是目前無(wú)形的,特別一些工具都會(huì)有DevOps,但是它比較零散。一般都會(huì)把這些開(kāi)源的或者已有的工具拼裝起來(lái),整個(gè)流程串起來(lái),實(shí)現(xiàn)一個(gè)完整的工具鏈。這是講到DevOps的共贏和收益。

前面講的DevOps的概念,還有它的好處,后面講到華為為什么會(huì)引進(jìn)DevOps,這是有原因的。第一,業(yè)務(wù)形態(tài)發(fā)生變化,我們現(xiàn)在新出現(xiàn)的互聯(lián)網(wǎng)的一些浪潮和云計(jì)算、終端像手機(jī)的消費(fèi)者產(chǎn)品,這個(gè)業(yè)務(wù)發(fā)生變化了,商業(yè)模式也發(fā)生變化了,以前是運(yùn)營(yíng)商那邊開(kāi)發(fā)一個(gè)產(chǎn)品,運(yùn)營(yíng)商自己來(lái)管?,F(xiàn)在商業(yè)模式變化,運(yùn)營(yíng)商其實(shí)不想管那些,他要求我們跟華為一起管業(yè)務(wù)。如果運(yùn)營(yíng)商自己來(lái)管,他發(fā)現(xiàn)問(wèn)題,再反饋給華為,華為再市場(chǎng)上研發(fā)到后面開(kāi)發(fā),他們有一個(gè)聯(lián)合運(yùn)維。聯(lián)合運(yùn)維是什么概念?華為跟運(yùn)營(yíng)商一起來(lái)運(yùn)維這個(gè)系統(tǒng),如果出現(xiàn)問(wèn)題就很快地去發(fā)現(xiàn)問(wèn)題,做一些落實(shí)。商業(yè)模式也發(fā)生變化,另外我們研發(fā)的模式也發(fā)生變化,包括一些IPD,現(xiàn)在是敏捷,包括協(xié)作很多,這些因素決定了我們要有DevOps來(lái)算周期,快速有業(yè)務(wù)價(jià)值,把用戶(hù)體驗(yàn)快速地帶回來(lái)。

這里講到華為為什么會(huì)用DevOps。這是業(yè)界的典型的解決方案,剛才也講了,這個(gè)是講了,華為還沒(méi)有講。剛才講到三個(gè)公司的解決方案,IBM有一個(gè)Bluemix,可能大家比較熟,它是把工具鏈服務(wù)化,做一個(gè)共有云。Bluemix前兩年比較火,最近沒(méi)關(guān)注到,在國(guó)內(nèi)可能并不怎么樣,在國(guó)外特別火。微軟是新起來(lái)的,他們自己就圍繞著Visual Studio、Windows那一套,圍繞著Windows系列來(lái)做一個(gè)自己的生態(tài)系統(tǒng)。亞馬遜怎么做呢?亞馬遜沒(méi)有特別強(qiáng)調(diào)DevOps這個(gè)詞,但是會(huì)把內(nèi)部的服務(wù)會(huì)產(chǎn)品化提供出來(lái),提供在云上讓大家用。它最初剛開(kāi)始提供的一個(gè)服務(wù)加S3,S3是一個(gè)整組。

微軟的做法基本上跟亞馬遜差不多,把他們這些服務(wù)全部聚焦過(guò)來(lái),我們重新做了一套,后面會(huì)講一下華為的工具鏈怎么做的。咨詢(xún)公司不看了,沒(méi)有差異。

這邊總結(jié)關(guān)鍵的實(shí)踐,馬上過(guò)一遍,第一個(gè)倒過(guò)來(lái)講,第一個(gè)是環(huán)境,這個(gè)很重要,因?yàn)橐暾腄evOps,為什么小公司做不起來(lái)呢?小公司就是覺(jué)得自己是不夠的。最重要是基礎(chǔ)設(shè)施即代碼,什么意思呢?我們底層一定要虛擬化,能夠很快地做一些升級(jí)、數(shù)據(jù)庫(kù),很快地做一些擴(kuò)容、減容,這些都是云化要支持的。另外它DevOps的前提的出發(fā)點(diǎn),前面一個(gè)前提我們要把這個(gè)服務(wù)化。因?yàn)槲覀儎偛胖v到一個(gè)產(chǎn)品要一年、半年再發(fā)布,很多機(jī)遇都失去了。為什么華為手機(jī)更新這么快,兩三個(gè)月一個(gè)手機(jī)出來(lái)了,必須要快,不快市場(chǎng)就失去了。我們要把這個(gè)產(chǎn)品拆成各個(gè)服務(wù),然后再把各個(gè)服務(wù)成各個(gè)微服務(wù),每個(gè)微服務(wù)單獨(dú)進(jìn)行一些DevOps小批量的發(fā)布、升級(jí),盡量把它B型化。所以現(xiàn)象6個(gè)第一個(gè)是小批量的發(fā)布越來(lái)越多。

大任務(wù)分解成可以迅速完成的小任務(wù),微服務(wù)化的架構(gòu)模式進(jìn)行敏捷交付,細(xì)粒度持續(xù)向生產(chǎn)環(huán)節(jié)發(fā)布。亞馬遜怎么做,亞馬遜提供了一個(gè)面對(duì)供應(yīng)鏈可以自己能夠?qū)崿F(xiàn)工具鏈,每一個(gè)服務(wù)都是單獨(dú)的流水線(xiàn),流水線(xiàn)從構(gòu)建、測(cè)試、發(fā)布都是單獨(dú)的。服務(wù)跟服務(wù)之間沒(méi)有任何的耦合,這是服務(wù)間的一些關(guān)系,另外拆開(kāi)之后它不能耦合,如果一耦合的話(huà)還是做不到并行。如果耦合,每次發(fā)布還是要把各個(gè)服務(wù)做成整體的包往外發(fā),這樣不大好。這是服務(wù)之間的。

服務(wù)內(nèi)部一樣的道理,因?yàn)槟阋堰@些需求分成一個(gè)迭代,一個(gè)小迭代,滾動(dòng)地去做一些開(kāi)發(fā),這是小批量的,把任務(wù)盡量細(xì)化,盡量能夠做一些頻率的開(kāi)發(fā)。這個(gè)部署自動(dòng)化很重要。部署自動(dòng)化以一致的方式自動(dòng)化將應(yīng)用部署到各個(gè)環(huán)境,什么意思呢?一次打包,隨處部署。我們經(jīng)常碰到什么情況呢?你測(cè)試完、開(kāi)發(fā)完、生產(chǎn)完以后,可能要打包,它們之間的配置都不一樣,所以要重新打包,這樣就違背了這個(gè)概念,我們要一次打包,能夠在各個(gè)環(huán)境里面,α、β、γ各個(gè)環(huán)境里面部署,一次打包,多次部署,而且還不能做一些手動(dòng)修改配置,你可能做一個(gè)配中心或者一些其它手段,用黃金變量去解決問(wèn)題。為什么會(huì)這么多環(huán)境呢?包括功能測(cè)試、集成(25:30)這些環(huán)境,就是最快地測(cè)試先做完,比如說(shuō)你到α環(huán)境,功能測(cè)試好,測(cè)出來(lái)有問(wèn)題,立馬就能夠做一些回穩(wěn),這樣能夠避免到生產(chǎn)之后發(fā)現(xiàn)問(wèn)題。每一個(gè)環(huán)境都有它的意義,等會(huì)講到三個(gè)環(huán)境特別是什么意義。這是自動(dòng)化部署,我們會(huì)講到α、β、γ,還有(26:00)這上面幾個(gè)概念應(yīng)該是華為內(nèi)部的一些說(shuō)法。

灰度發(fā)布?;叶劝l(fā)布,大家應(yīng)該都比較清楚。一個(gè)新版本上了之后,100臺(tái)機(jī)器全部上100臺(tái)機(jī)器,如果有問(wèn)題,全歇臺(tái)了。昨天我上1%,1%上去之后第一分析流量會(huì)少一點(diǎn),比如100臺(tái)先升1臺(tái),整個(gè)啟動(dòng)流量是有限的,所以會(huì)觀察產(chǎn)生的數(shù)據(jù)、日志是否能符合你的預(yù)期,技術(shù)判斷來(lái)不斷擴(kuò)展你的范圍。如果你看到1%,可以指揮1%,不用備份整個(gè)系統(tǒng),所以DevOps基本上基于用戶(hù)來(lái)發(fā)生的,根據(jù)功能、兼容性、并發(fā)和性能選定發(fā)布批次的范圍,來(lái)做一些平滑的發(fā)布。

這個(gè)分為兩種,一種是灰度部署,一個(gè)灰度發(fā)布。灰度部署就是在部署的時(shí)候不是一下分布的,而是一臺(tái)一臺(tái),或者先10臺(tái),后20臺(tái)、50臺(tái)這樣部署。部署之后你要對(duì)外面開(kāi)放有一些策略,發(fā)布一些策略。所以說(shuō)這個(gè)灰度發(fā)布的測(cè)驗(yàn)引擎也是比較重要的,所以我們作為DevOps的灰度發(fā)布沒(méi)那么簡(jiǎn)單,你要做一個(gè)灰度發(fā)布引擎,做一個(gè)自動(dòng)化的部署系統(tǒng)。

監(jiān)控也必不可少,有三個(gè)等級(jí),第一個(gè)是那些比較基本的,但是要做到分級(jí)監(jiān)控,應(yīng)用監(jiān)控,所以這個(gè)是應(yīng)用級(jí)別監(jiān)控,應(yīng)用的(28:00)監(jiān)控。另外你要做一些核心功能的結(jié)構(gòu),比如說(shuō)支付的。支付里面占的比重比較大,對(duì)支付的功能做一個(gè)重點(diǎn)監(jiān)控,這是監(jiān)控的范圍。

(圖)這是講到運(yùn)維。監(jiān)控講完之后肯定是個(gè)數(shù)據(jù)反饋,你要把線(xiàn)上的問(wèn)題反饋到研發(fā)區(qū),怎么做呢?你要把生產(chǎn)環(huán)境用戶(hù)行為,服務(wù)它本身的一些業(yè)務(wù)日志全部采集到,采集到以后,后臺(tái)應(yīng)該有一個(gè)大數(shù)據(jù)平臺(tái)來(lái)做一些分析,做一些匯聚,分析出這些原因,比如用戶(hù)哪個(gè)頁(yè)面點(diǎn)得最多,用戶(hù)在論壇里面反饋的這些問(wèn)題和關(guān)鍵字,比如說(shuō)頁(yè)面太慢、太丑了或者怎么樣。做一些大數(shù)據(jù)的分析,產(chǎn)生一些報(bào)表之類(lèi)的,或者去挖掘用戶(hù)潛在的一些預(yù)期,可以通過(guò)大數(shù)據(jù)平臺(tái)來(lái)分析的,這個(gè)是要反饋給研發(fā)的,所以這塊運(yùn)維必須要做。監(jiān)控要反饋,運(yùn)維不只是部署,部署完了后面還有反饋,所以這是講到比較重要的一些實(shí)踐。

下面講到華為的解決方案,特別是內(nèi)部的,內(nèi)部有一個(gè)DevOps工具鏈完整的。它分為兩大塊,被理解為是一個(gè)研發(fā)區(qū)的流水線(xiàn)以及生產(chǎn)區(qū)的流水線(xiàn)。研發(fā)區(qū)的流水線(xiàn)提到α、β、γ三大塊。生產(chǎn)區(qū)到外面去了,因?yàn)槿A為內(nèi)外的網(wǎng)絡(luò)是隔離的,所以要分內(nèi)部和外部。中間解決從研發(fā)到生產(chǎn),中間是流程,剛才講到DevOps作為三塊:文化、工具、流程。(圖)這個(gè)圖一個(gè)是工具,一個(gè)是流程,比如要數(shù)據(jù)庫(kù)、專(zhuān)業(yè)鏈、監(jiān)控,把這些勾起來(lái),勾起來(lái)就會(huì)產(chǎn)生一個(gè)代碼的框架模板。每個(gè)產(chǎn)品線(xiàn)都不一樣,先生這個(gè)產(chǎn)品線(xiàn)的框架模板,比如說(shuō)這個(gè)產(chǎn)品是基于MIC來(lái)改造的,可能里面一些都改,你有自己的框架,要針對(duì)自己的框架之后自動(dòng)提到里面去,這邊有一個(gè)代碼倉(cāng)庫(kù)。你會(huì)通過(guò)IDE下來(lái)代碼,進(jìn)行一些自己的開(kāi)發(fā)。同時(shí)這個(gè)服務(wù)的設(shè)計(jì),剛才講到服務(wù)的框架,服務(wù)的框架照搬亞馬遜的那一套。

第二步就是一般來(lái)說(shuō)我們上一個(gè)產(chǎn)品會(huì)涉及很多部門(mén)和合作人,今天找一個(gè)人審批,萬(wàn)一他請(qǐng)假了或者不在,或者沒(méi)空,明天再找一個(gè)人不在,做了一個(gè)自動(dòng)化。第一步我們會(huì)把自動(dòng)化指標(biāo)全部采集到,做一個(gè)參考,以前怎么做的,以前華為通過(guò)在各個(gè)系統(tǒng)里面去倒出質(zhì)量的報(bào)告,然后做一個(gè)Word文檔,做一個(gè)附件貼在那個(gè)系統(tǒng)里面。我們現(xiàn)在改了,做了自動(dòng)化采集,從各個(gè)系統(tǒng)里面去采集出來(lái),他們就不用去貼了,領(lǐng)導(dǎo)看了,你不知道貼出來(lái)是真的、假的。但是通過(guò)自動(dòng)化采集之后,就不更改了,而且比較客觀的。有一次的審核,一次審核把所有相關(guān)人叫在一起,我們開(kāi)一次會(huì)就夠了。這樣每一個(gè)指標(biāo)的采集自動(dòng)化有一次會(huì)議就沒(méi)了,沒(méi)了之后就會(huì)說(shuō)明這個(gè)版本符合效果。往下的話(huà)就是一個(gè)變更管理,因?yàn)樯系缴a(chǎn)環(huán)境,生產(chǎn)環(huán)境跟運(yùn)維頁(yè)面式開(kāi)發(fā)的,這邊是運(yùn)維,運(yùn)維要什么時(shí)候操作呢?所以面臨一個(gè)管理,你符合要求,不一定表示你現(xiàn)在就要上線(xiàn),可能白天10點(diǎn)、11點(diǎn)壓力比較大,可能會(huì)到下午的時(shí)候操作,所以有一個(gè)運(yùn)維管理。運(yùn)維管理通過(guò)之后運(yùn)維才能進(jìn)行操作。谷歌目前比較流行什么?谷歌SIE,它基本干這活,基本上研發(fā)跟運(yùn)維銜接的一些工作,都是它來(lái)包的。這樣研發(fā)流水線(xiàn)已經(jīng)完了,通過(guò)流程的自動(dòng)化到生產(chǎn)環(huán)境。

生產(chǎn)環(huán)境的流水線(xiàn)通過(guò)一個(gè)消息機(jī)制來(lái)判斷,第一變更管理通過(guò),第二你的包到位了,包會(huì)到版本倉(cāng)庫(kù)里面去,按照這兩個(gè)到位就會(huì)自動(dòng)觸發(fā)生產(chǎn)環(huán)節(jié)流水線(xiàn)。生產(chǎn)環(huán)節(jié)流水線(xiàn)就比研發(fā)復(fù)雜一點(diǎn),剛剛那個(gè)圖1%、30%、100%會(huì)不會(huì)去發(fā)布?不像前面可能是自動(dòng)的到每一步,如果測(cè)試之后就會(huì)自動(dòng)的。生產(chǎn)環(huán)境可能手動(dòng)的,1%之后你會(huì)看一下可能手動(dòng)的流程,你去頁(yè)面看一看,點(diǎn)一點(diǎn)也好,如果你覺(jué)得沒(méi)問(wèn)題,是自動(dòng)的,這是可選的,一直到生產(chǎn)環(huán)節(jié),生產(chǎn)環(huán)節(jié)用的比較多,1%、10%、30%、50%、100%。完了之后它有一個(gè)(37:15)所以生產(chǎn)環(huán)境一直在監(jiān)控服務(wù)的SOA,包括它的KBS、TP99、成功率和監(jiān)控。監(jiān)控完之后會(huì)自動(dòng)提單。比如我在生產(chǎn)環(huán)境自動(dòng)化測(cè)試發(fā)現(xiàn)一個(gè)問(wèn)題,它會(huì)自動(dòng)提交到一個(gè)工單系統(tǒng),工單系統(tǒng)SIE看到之后,它覺(jué)得這是個(gè)問(wèn)題,就會(huì)把這個(gè)問(wèn)題反饋到需求跟管理第一個(gè)環(huán)節(jié),所以就把整個(gè)緩沖起來(lái),這也是SIE的數(shù)據(jù)分析,剛才也講到一些數(shù)據(jù)分析來(lái)作為新一輪迭代需求的一個(gè)輸入。只能這樣講,沒(méi)有產(chǎn)品的截圖,大家如果要了解比較細(xì)的話(huà),內(nèi)部一些細(xì)節(jié),包括大數(shù)據(jù)怎么做的、部署怎么做的,部署做什么,使用什么開(kāi)源工具,這些點(diǎn)跟(38:25)站業(yè)界或者跟其它公司有區(qū)別的地方就是(38:32)跟亞馬遜,亞馬遜的Bluemix不是統(tǒng)一的。華為內(nèi)部產(chǎn)品線(xiàn)比較多,所以我們服務(wù)商界有一個(gè)擴(kuò)展功能就是用戶(hù)產(chǎn)品線(xiàn)可以自行定義它的框架,提供統(tǒng)一的框架,上他們可以做一個(gè)插件。

部署系統(tǒng)也一樣,整個(gè)華為公司不可能只用一個(gè)部署系統(tǒng),所以部署系統(tǒng)對(duì)接行業(yè)不同的服務(wù)系統(tǒng),包括虛擬機(jī)、容器、特別的,都會(huì)在這個(gè)平臺(tái)支撐。所以底層會(huì)華為的實(shí)際情況密切相關(guān)的。當(dāng)然底層還比較重要,底層是提供云化的。基本把整個(gè)線(xiàn)弄完以后,華為要適配各種各樣的產(chǎn)品線(xiàn),同時(shí)還要從頁(yè)面上要保證用戶(hù)進(jìn)來(lái),他覺(jué)得是一個(gè)產(chǎn)品,也就是部署系統(tǒng),你聽(tīng)到這個(gè)DevOps整個(gè)系統(tǒng),我選任何一個(gè)部署系統(tǒng)它的頁(yè)面都是一樣的,它的配置都是一樣的,所以能夠做一些抽象化。這也是這個(gè)平臺(tái)的優(yōu)勢(shì)。

講到內(nèi)部的一些東西。內(nèi)部我大概統(tǒng)計(jì)了一下,一共有16個(gè)獨(dú)立的服務(wù)。每個(gè)服務(wù)有十幾個(gè)微服務(wù),加起來(lái)可能有兩三百個(gè)微服務(wù),來(lái)組成這樣一個(gè)大的系統(tǒng)。這是內(nèi)部的,所以拿不出來(lái),我也沒(méi)辦法。華為為什么有區(qū)別呢?華為內(nèi)部的業(yè)務(wù)更復(fù)雜,產(chǎn)品可能更多,對(duì)外稍微聚焦一點(diǎn),它聚焦在開(kāi)發(fā)上,包括它的實(shí)現(xiàn)方式不用考慮兼容系統(tǒng),比較純粹?;?個(gè)方面,通過(guò)項(xiàng)目管理、IDE管理,IED管理就是項(xiàng)目管理、配置管理、代碼檢查、編譯、構(gòu)建、測(cè)試、部署、發(fā)布。8大作用目前已經(jīng)正式對(duì)外公測(cè),所以大家可以上到軟件開(kāi)發(fā)上面做一些體驗(yàn)。

(圖)上面講到一些部門(mén),剛才已經(jīng)涉及到了。這也是一樣,從這條鏈開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、類(lèi)生產(chǎn)環(huán)境、生產(chǎn)環(huán)境都可以在華為企業(yè)云上面來(lái)承載,同時(shí)不光有這條鏈,這條鏈讓你開(kāi)發(fā)之后,這個(gè)平臺(tái)還有企業(yè)云作用,包括你的存儲(chǔ)、RDS,如果需要容易容器的話(huà),上面也有。所以它形成了一個(gè)開(kāi)發(fā)者,基本啥都不缺了,這是一個(gè)狀態(tài)。

DevCLoud到底怎么用?我們有一個(gè)Wed客戶(hù)端和移動(dòng)端、IDE,我們一般都用本地的,但是本地的只能做一些配置,比較方便。如果換臺(tái)機(jī)器,換到別的機(jī)器,到另外的環(huán)境怎么樣,所以我們這邊提供的Cloud IDE,同時(shí)你有自己的IDE把這個(gè)插件放到自己的IDE里面去,能夠方便地跟這些系統(tǒng)進(jìn)行交互。IDE插件跟他們對(duì)接,我們這樣提供了一個(gè)API,有這個(gè)渠道,這個(gè)就是體驗(yàn)。現(xiàn)在我們開(kāi)發(fā)的公測(cè)階段,大家可以體驗(yàn)一下,還有一些獎(jiǎng)勵(lì)。

現(xiàn)在項(xiàng)目管理和配置管理,配置管理就是DITER(音)。它體驗(yàn)有些限制,比如說(shuō)項(xiàng)目管理。項(xiàng)目管理目前支持免費(fèi)的5個(gè)人,還有DITER(音)免費(fèi)的話(huà)是600兆,后面還有一些測(cè)試、編譯,還有其它的要求,可能免費(fèi)的話(huà)有些限制,但基本上夠用,大家可以試用一下。

(結(jié)束)

責(zé)任編輯:藍(lán)雨淚 來(lái)源: 51CTO.com
相關(guān)推薦

2019-01-16 09:00:00

DevOps性能測(cè)試軟件

2023-02-09 08:00:37

DevOps工具建木

2023-09-27 23:57:21

2015-03-06 09:52:13

2015WOT峰會(huì)開(kāi)源運(yùn)維工具研發(fā)與實(shí)踐

2022-11-30 10:34:17

2020-05-06 09:11:50

DevOps

2024-11-21 10:05:14

2019-07-17 14:03:44

運(yùn)維DevOps實(shí)踐

2020-09-18 08:17:03

DevOps

2021-05-10 09:00:00

Web工具安全

2024-07-25 11:58:35

2023-09-03 22:26:41

DevOps代碼

2022-02-11 08:00:00

DevOps開(kāi)發(fā)工具

2025-03-24 09:30:00

汽車(chē)軟件軟件定義汽車(chē)開(kāi)發(fā)

2017-03-22 09:44:04

DevOps轉(zhuǎn)型陷阱實(shí)踐

2017-03-07 10:00:01

定義實(shí)踐DevOps

2023-03-31 11:38:01

平臺(tái)研發(fā)團(tuán)隊(duì)工程

2023-10-17 11:34:42

2017-03-28 19:57:43

DevOpsIT框架

2022-07-04 17:32:12

DevOpsAIOps
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)