DevOps最早在2009年被人提出,愿景非常美好,但真正實(shí)施起來(lái)困難重重。
隨著近幾年微服務(wù)、容器等技術(shù)的興起,使得企業(yè)對(duì)DevOps的需求更加迫切,實(shí)施變得更加容易,DevOps越來(lái)越被接受和重視。
同樣,為了應(yīng)對(duì)業(yè)務(wù)的敏捷發(fā)布,應(yīng)用平臺(tái)的彈性訴求,商業(yè)環(huán)境的變化,云原生時(shí)代已到來(lái),云原生技術(shù)已經(jīng)應(yīng)用到企業(yè)核心業(yè)務(wù)。
云原生與DevOps是什么關(guān)系?其技術(shù)優(yōu)勢(shì)如何與DevOps結(jié)合,才能更加高效便捷的實(shí)施呢?云原生時(shí)代下,DevOps的落地會(huì)遇到哪些困難?華為云是否有一些實(shí)踐方案去應(yīng)對(duì)?
華為云社區(qū)邀請(qǐng)到了華為云DevCloud首席技術(shù)布道師徐毅,聽(tīng)他講述云原生技術(shù)下的DevOps實(shí)踐,深入了解集華為30年研發(fā)經(jīng)驗(yàn)的華為云DevCloud是如何踐行DevOps理念的。
從需求側(cè)、平臺(tái)側(cè)、商業(yè)側(cè)等方面來(lái)看,云原生產(chǎn)生的業(yè)務(wù)背景是什么?
眾所周知,很多變革都始于技術(shù)。技術(shù)經(jīng)由積累產(chǎn)生勢(shì)能,這些新的技術(shù)釋放出很強(qiáng)大的生產(chǎn)力并帶來(lái)創(chuàng)新,滿足用戶和客戶新需求的爆發(fā),從而需求驅(qū)動(dòng)技術(shù)的迅速普及和優(yōu)化,最終帶來(lái)商業(yè)的繁榮。
云原生應(yīng)該是云化的延伸。在云的發(fā)展初期,并非所有的產(chǎn)品技術(shù)都是云原生的,隨著云計(jì)算技術(shù)的不斷發(fā)展,云原生的應(yīng)用和系統(tǒng)能夠更好的滿足需求側(cè)在功能和非功能各方面的訴求。從云到云原生這個(gè)過(guò)程來(lái)看,在當(dāng)下創(chuàng)新加速的VUCA時(shí)代,也帶來(lái)了一系列的變化:
需求變化快,但方向暫不清楚,這就需要IT信息化支撐業(yè)務(wù)創(chuàng)造的過(guò)程更靈活、反應(yīng)更快速;
在業(yè)務(wù)板塊創(chuàng)造出來(lái)之后,會(huì)面臨著業(yè)務(wù)使用的強(qiáng)度和頻率是不固定的,所以就需要支撐業(yè)務(wù)供給的靈活性和快速響應(yīng)的速度;
當(dāng)下的用戶需求和業(yè)務(wù)的顆粒度,隨著市場(chǎng)發(fā)展越來(lái)越小,所以能夠迅速把握市場(chǎng)動(dòng)態(tài)、完成業(yè)務(wù)創(chuàng)造、提供業(yè)務(wù)這個(gè)全過(guò)程周期的速度也變得非常重要,還需要能夠拉通整個(gè)組織。但不同職能組織都有自己的不同目標(biāo),無(wú)法做到說(shuō)改變就改變。
云原生技術(shù)的發(fā)展,使得各個(gè)職能組織去支持、去改變的難度越來(lái)越低、投入越來(lái)越小,大家更愿意拉通和協(xié)作,從而在商業(yè)側(cè)能夠給企業(yè)帶來(lái)更大的競(jìng)爭(zhēng)優(yōu)勢(shì)。
云原生時(shí)代,在享受架構(gòu)解耦與云端彈性帶來(lái)的便利同時(shí),對(duì)軟件研發(fā)與交付模式提出了更高的要求,如何才能真正做到云原生下價(jià)值交付的成功?
首先要掌握架構(gòu)解耦、云端彈性等相關(guān)技術(shù),具備研發(fā)能力,這是第一要素。
第二,把技術(shù)能力運(yùn)用起來(lái)在平衡中去解決業(yè)務(wù)問(wèn)題,不能太過(guò)于完美主義。例如面對(duì)一個(gè)遺留系統(tǒng),是一步到位解耦完畢還是循序漸進(jìn)呢?分析業(yè)務(wù)現(xiàn)狀的問(wèn)題并針對(duì)性地應(yīng)用云原生技術(shù)能力去解決,去創(chuàng)造價(jià)值,是第二個(gè)關(guān)鍵要素。
第三是團(tuán)隊(duì)通力協(xié)作的能力。作為團(tuán)隊(duì)的基礎(chǔ),團(tuán)隊(duì)的每個(gè)成員都具備充分的技術(shù)能力,這樣團(tuán)隊(duì)的能力可以等同于團(tuán)隊(duì)成員的合力。團(tuán)隊(duì)成員之間通過(guò)協(xié)作能夠產(chǎn)生的化學(xué)效應(yīng),不只是1+1=2的效果,它將會(huì)帶來(lái)乘數(shù)甚至指數(shù)級(jí)的效應(yīng)。
第四是組織變革能力。新組織可以直接招募具備云原生技術(shù)的成員組建團(tuán)隊(duì),這樣帶來(lái)的好處就是大家沒(méi)有遺留系統(tǒng),理解業(yè)務(wù)即可。如果是一個(gè)現(xiàn)成的組織,那么團(tuán)隊(duì)成員既要邊學(xué)習(xí)和掌握新技能,邊繼續(xù)發(fā)展業(yè)務(wù),就如同“給行駛中的汽車換輪子”。這時(shí)就需要一種軟實(shí)力來(lái)打消大家的顧慮,推動(dòng)往云原生的交付模式轉(zhuǎn)變。
云原生與DevOps的關(guān)系是什么?普通DevOps與云原生的DevOps有何不同?
按照CNCF的說(shuō)法,容器、微服務(wù)等被認(rèn)作是云原生技術(shù)。DevOps主要是指一種工作方式或模式,它幫助拉通整個(gè)價(jià)值創(chuàng)造過(guò)程中各環(huán)節(jié)的人和組織,通力協(xié)作縮短價(jià)值創(chuàng)造的周期時(shí)間。在這個(gè)過(guò)程中,就需要從人、工具和流程方法三個(gè)維度去改變。
如何區(qū)分普通DevOps和云原生DevOps,主要看一個(gè)組織在應(yīng)用DevOps的過(guò)程中,是否使用云原生技術(shù)開發(fā)應(yīng)用或者系統(tǒng)。 舉例來(lái)講,DevOps開發(fā)一個(gè)傳統(tǒng)的單機(jī)應(yīng)用,不需要開發(fā)人員掌握容器或微服務(wù)等技術(shù),對(duì)部署和發(fā)布的自動(dòng)化要求也不高,或許也不需要灰度發(fā)布、應(yīng)用監(jiān)控等功能,往往只需應(yīng)用幾個(gè)DevOps工具就能夠滿足需求。
當(dāng)然,它是被定義為DevOps,所以代碼提交之后的編譯構(gòu)建、測(cè)試、打包、安裝啟動(dòng)等,都要能夠以全自動(dòng)化的方式完成,無(wú)需人工干預(yù),那這個(gè)應(yīng)用的研發(fā)過(guò)程就是一個(gè)普通的DevOps。
云原生模式嚴(yán)格意義上來(lái)說(shuō),是整個(gè)應(yīng)用的生產(chǎn)過(guò)程都在云上, 需求在云端的系統(tǒng)上管理,代碼存放和評(píng)審、測(cè)試用例都在云上進(jìn)行,甚至日常交流、開會(huì)等方面也都在云上進(jìn)行,這就是比較徹底的云原生DevOps。這時(shí)就需要一個(gè)可以拉通各個(gè)環(huán)節(jié)的云原生DevOps工具的平臺(tái),我們稱之為一站式云原生DevOps平臺(tái)。
云原生的DevOps對(duì)于開發(fā)者來(lái)說(shuō),意味著什么?如何盡快在實(shí)際工作中實(shí)踐?
應(yīng)該說(shuō)是未來(lái)的趨勢(shì)。個(gè)人開發(fā)者可以利用云廠商提供的便利,以極低的成本,去學(xué)習(xí)和實(shí)踐云原生DevOps開發(fā)的全過(guò)程,掌握運(yùn)用各種云原生技術(shù),去創(chuàng)造價(jià)值。同時(shí),開發(fā)者要從自身的長(zhǎng)遠(yuǎn)發(fā)展出發(fā),自己的未來(lái)自己做主,不要僅僅依賴于工作中實(shí)踐,可以考慮去主動(dòng)的投資學(xué)習(xí)。畢竟自身能力的提升是帶來(lái)更大回報(bào)的最常見(jiàn)手段,其他手段都依賴于能力的提升。
在云原生2.0的趨勢(shì)下,越來(lái)越成熟的云原生技術(shù)化解了開發(fā)者的諸多難題,開發(fā)者突破個(gè)人職業(yè)瓶頸的核心關(guān)鍵是掌握1+N關(guān)鍵能力,就是1個(gè)DevOps平臺(tái)加上N套技術(shù)棧,再配合云原生提供的開發(fā)能力,開啟第二曲線。
DevOps新挑戰(zhàn):如何解決實(shí)際開發(fā)運(yùn)維中的問(wèn)題?
要說(shuō)DevOps如何解決實(shí)際開發(fā)運(yùn)維中遇到的問(wèn)題,首先我們應(yīng)該先分析當(dāng)下開發(fā)運(yùn)維會(huì)遇到哪些問(wèn)題,簡(jiǎn)單列舉幾個(gè)點(diǎn):
第一個(gè)問(wèn)題:現(xiàn)在市場(chǎng)需求變化很快,產(chǎn)品要快速響應(yīng),頻繁的進(jìn)行版本更迭。
當(dāng)下很多項(xiàng)目都在使用微服務(wù)框架,其中一個(gè)好處是可以減少變更影響的范圍,但微服務(wù)其實(shí)對(duì)運(yùn)維的要求相對(duì)變高了,因?yàn)橹澳阒回?fù)責(zé)一個(gè)單體服務(wù)的發(fā)布,現(xiàn)在你要負(fù)責(zé)多個(gè)微服務(wù)的發(fā)布,傳統(tǒng)組織結(jié)構(gòu)以及運(yùn)維方式很難滿足,這其實(shí)也是促使DevOps誕生的一個(gè)主要因素。
DevOps是可以通過(guò)一系列的自動(dòng)化工具,將很多以前需要手工操作的流程變成自動(dòng)化的。比如發(fā)布包的構(gòu)建、部署任務(wù)參數(shù)配置等等,然后對(duì)各個(gè)服務(wù)按照不同場(chǎng)景,做出不同的發(fā)布策略,進(jìn)行自動(dòng)化的發(fā)布,加速產(chǎn)品新特性的上線。
第二個(gè)問(wèn)題:產(chǎn)品上線后,數(shù)據(jù)運(yùn)營(yíng)和分析。
這點(diǎn)容易被忽略,很多人認(rèn)為DevOps就是自動(dòng)化工具鏈,其實(shí)數(shù)據(jù)分析、運(yùn)營(yíng)也是DevOps中很重要的一部分。 DevOps文化中,度量是很重要的一環(huán),這個(gè)度量不是說(shuō)向老板匯報(bào)用的,而是通過(guò)數(shù)
據(jù)去了解各個(gè)服務(wù)的運(yùn)行情況、用戶的使用情況等,然后根據(jù)分析結(jié)果對(duì)產(chǎn)品進(jìn)行優(yōu)化改進(jìn)。傳統(tǒng)的運(yùn)維模式很難建立這種反饋機(jī)制,不搞清楚市場(chǎng)或者用戶群體感受的開發(fā),很容易閉門造車,而DevOps則是提倡在運(yùn)營(yíng)環(huán)節(jié)建立反饋機(jī)制來(lái)解決這個(gè)問(wèn)題。
其他方面問(wèn)題:比如基礎(chǔ)設(shè)施、網(wǎng)絡(luò)、場(chǎng)地等方面的投入,相當(dāng)于把資源托管,讓開發(fā)者更多的聚焦于新特性的交付。以上這些其實(shí)都是DevOps解決實(shí)際生產(chǎn)中的問(wèn)題的例子。
有調(diào)查顯示開發(fā)者在DevOps整個(gè)軟件開發(fā)生命周期中,測(cè)試階段遇到的延遲最多,華為云是否有一些實(shí)踐方案去應(yīng)對(duì)?
測(cè)試階段遇到延遲的問(wèn)題是說(shuō)很多時(shí)候安全測(cè)試在整個(gè)軟件生命周期中做的比較晚,導(dǎo)致很多漏洞之類的沒(méi)有測(cè)出來(lái)。這個(gè)問(wèn)題其實(shí)很好解決,首先可以從單元測(cè)試入手,在新特性開發(fā)之前,根據(jù)驗(yàn)收標(biāo)準(zhǔn)寫好單元測(cè)試,等到功能開發(fā)完成直接進(jìn)行單元測(cè)試,這樣就會(huì)減少測(cè)試的延遲。
DevOps也主張將測(cè)試環(huán)節(jié)盡可能地嵌入到流水線中,華為云DevCloud提供了代碼檢查功能,檢查代碼的漏洞。還有就是現(xiàn)在很多項(xiàng)目都在用微服務(wù)框架,微服務(wù)框架中服務(wù)與服務(wù)之間是通過(guò)API進(jìn)行交互的,那我們也可以將接口測(cè)試作為一個(gè)主要安全管控手段,將他納入到持續(xù)交付流水線中,每次執(zhí)行流水線時(shí),自動(dòng)進(jìn)行接口測(cè)試。
華為云云原生DevOps的升級(jí)是否分階段,每個(gè)階段的路徑是什么?
華為云積極地參與業(yè)界相關(guān)標(biāo)準(zhǔn)和能力模型的共建共創(chuàng),作為重要參考來(lái)構(gòu)建DevOps相關(guān)產(chǎn)品。業(yè)界主流是根據(jù)DevOps的自動(dòng)化程度將它劃分成三個(gè)階段:
保證代碼時(shí)刻可以進(jìn)行構(gòu)建的持續(xù)集成;
將代碼自動(dòng)化部署到類生產(chǎn)環(huán)境進(jìn)行測(cè)試的持續(xù)交付;
將最新的代碼直接自動(dòng)化部署至生產(chǎn)環(huán)境的持續(xù)部署。
其中,持續(xù)集成自動(dòng)化程度相對(duì)會(huì)低一些,持續(xù)部署自動(dòng)化程度是最高的。但更多的時(shí)候需要結(jié)合業(yè)務(wù)場(chǎng)景去選擇是持續(xù)集成、持續(xù)交付或是持續(xù)部署,并不是所有的場(chǎng)景都必須做到持續(xù)部署。如果條件允許的話,一定是自動(dòng)化程度越高,就意味交付頻率越快。
華為云是否有云原生的DevOps體系框架、落地實(shí)踐案例等?
華為云提供的云原生DevOps體系框架叫做HE2E,即華為端到端(End to End)DevOps框架。是結(jié)合了華為30年研發(fā)經(jīng)驗(yàn)并集合了業(yè)界先進(jìn)的實(shí)踐所形成的一套可操作可落地的敏捷開發(fā)方法論。HE2E圍繞一個(gè)名為鳳凰商城的電商平臺(tái)項(xiàng)目,按照DevOps方式完成從提交代碼到流水線部署上線的全過(guò)程,項(xiàng)目使用了微服務(wù)、容器等多種云原生技術(shù),其中DevOps部分依托于華為云DevCloud。
在這個(gè)實(shí)踐中,開發(fā)者可以通過(guò)華為云DevCloud的項(xiàng)目管理功能進(jìn)行敏捷項(xiàng)目管理。項(xiàng)目的示例代碼也是通過(guò)華為云DevCloud的代碼倉(cāng)庫(kù)codehub,項(xiàng)目使用微服務(wù)架構(gòu),前后端分離,并且可以通過(guò)華為云DevCloud進(jìn)行云端構(gòu)建實(shí)現(xiàn)持續(xù)集成,將前后端打成Docker鏡像放到云端鏡像倉(cāng)庫(kù),供部署使用。
從集成到部署,還可以通過(guò)DevCloud的流水線功能串聯(lián)起來(lái),在流水線中配置構(gòu)建、部署任務(wù)實(shí)現(xiàn)云原生的DevOps,這個(gè)流程和現(xiàn)在很多企業(yè)的實(shí)際開發(fā)場(chǎng)景也吻合。
最后,對(duì)于開發(fā)者來(lái)說(shuō),DevOps是神秘的,自己可能沒(méi)有精力或資源搭建DevOps工具鏈,其實(shí)這部分可以通過(guò)H2E2——相當(dāng)于是用華為云搭好的一套架子,可直接使用華為云DevCloud體驗(yàn)云原生的DevOps。
編輯:jq
-
代碼
+關(guān)注
關(guān)注
30文章
4790瀏覽量
68653 -
華為云
+關(guān)注
關(guān)注
3文章
2540瀏覽量
17445 -
devops
+關(guān)注
關(guān)注
0文章
114瀏覽量
12026
原文標(biāo)題:敏捷開發(fā)專家一席談:云原生技術(shù)下的華為云DevOps實(shí)踐之路
文章出處:【微信號(hào):Huawei_Developer,微信公眾號(hào):華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論