日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

DevOps研發(fā)模式下CI/CD實踐詳解指南

 測試開發(fā)技術(shù) 2022-06-18 發(fā)布于廣東

優(yōu)質(zhì)文章,第一時間送達(dá)!

閱讀全文大概需要 10分鐘。

1. 前言

借著公司今年新組建的中臺研發(fā)部東風(fēng),我作為其中的主要負(fù)責(zé)人,在研發(fā)中心主導(dǎo)推行DevOps研發(fā)管理模式轉(zhuǎn)變及質(zhì)量管理創(chuàng)新建設(shè),本篇文章摘取自今年9月底,筆者在公司內(nèi)部針對全體研發(fā)人員的一次DevOps培訓(xùn)PPT中的部分內(nèi)容,涉及公司敏感信息和部分章節(jié)內(nèi)容順序已經(jīng)作過處理。

相信公眾號內(nèi),大部分讀者此前,對DevOps沒并有過多或全面的接觸,為了回饋讀者,因此將此次公司內(nèi)訓(xùn)其中涉及DevOps一些核心理念和實踐經(jīng)驗抽取出來,分享給大家。(如有不正確的,歡迎糾正

2. 到處都在說DevOps,到底DevOps是什么?

最近幾年,相信大家經(jīng)常會看到DevOps這個詞,也有很多專門以DevOps為主題的大型行業(yè)技術(shù)峰會。雖然DevOps最近幾年才在國內(nèi)公司流行,但實際上DevOps早在2009 年就已經(jīng)被提出來了。

那經(jīng)常一直說DevOps,DevOps到底是個什么東西?

DevOps目前其實并沒有一個權(quán)威的定義,即便一些在DevOps領(lǐng)域耕耘很久的大師,對DevOps也無法給出一個統(tǒng)一的定義,久而久之,行業(yè)也有這樣的一個說法:“如果有1000個人在說DevOps,那DevOps可能就有一千種意思。”

Anyway,無論有多少種意思,但我想說的是DevOps它最根本的那個意思是基本上類似的。

2.1 聊一聊DevOps組成

看到上面這張圖,可能有人就會說DevOps是不是Dev+Ops。

單純從字面上來理解,DevOps 是Dev(開發(fā)人員)+Ops(運維人員),雖然名字來源于開發(fā)和運維的縮寫,但DevOps并不是簡單的就是開發(fā)加運維。

 DevOps 所涵蓋的角色范圍會更廣:除了開發(fā)、測試、運維還會涉及到項目經(jīng)理、產(chǎn)品經(jīng)理,甚至和銷售、市場等各個部門,跨職能部門互相合作,完成某一項目或任務(wù)。

2.2  DevOps不是什么

在幫助大家理解 DevOps 到底是什么之前,先說說 DevOps 不是什么,很多人對 DevOps 可能存在一些誤解:

誤解一:DevOps不是一種工具,有人可能會說我在用Docker又或Jenkins等工具,是不是就表明在做DevOps了?然而這些并不意味著就在做DevOps的事情。

誤解二:DevOps不是一個新角色或者說是一個新的職位, 雖然說國內(nèi)確實有些公司有單獨的職位是DevOps工程師,但并不代表,DevOps是一個職位,嚴(yán)格來說它是一類工程師的統(tǒng)稱。

誤解三:還有人說,DevOps出來之后,是不是由一個獨立的團(tuán)隊去做所有事情,從開發(fā)到運維,一個部門就都干掉。

其實上面這幾點都沒有錯,但對于DevOps這個概念而言,太過于狹隘了,不是簡單的說DevOps就是開發(fā)加運維,DevOps是由一個團(tuán)隊或者由開發(fā)加運維就能搞定的。

實際上DevOps從需求到設(shè)計到開發(fā)、到測試到運維,甚至是線上的運營反饋整個全生命周期的,所以它應(yīng)該是一個打通多個部門協(xié)調(diào),協(xié)作的這樣的一個平臺。至于工具和自動化實際上只是DevOps實現(xiàn)的一種手段?;蛘哒fDevOps是通過工具,自動化,來達(dá)到這種通過工具鏈與持續(xù)集成、交付、反饋、優(yōu)化進(jìn)行端到端整合,完成無縫的跨團(tuán)隊、跨系統(tǒng)協(xié)作。

3. DevOps包含一系列工具鏈、平臺

DevOps實踐涉及到開發(fā)部門以及軟件研發(fā)的整個生命周期,這意味著在整個開發(fā)生命周期中,涉及到一大批新舊工具,包括從規(guī)劃、編碼、測試、發(fā)布、監(jiān)控等自動化的流程工具。

3.1  DevOps包含了一系列工具鏈

DevOps融合了一系列基本原則和實踐的方法論,并從這些實踐中派生出了各種工具。這些工具體現(xiàn)在軟件開發(fā)和交付過程的不同階段:

  • 編碼:代碼開發(fā)和審閱,版本控制工具、代碼合并工具

  • 構(gòu)建:持續(xù)集成工具、構(gòu)建狀態(tài)統(tǒng)計工具

  • 測試:通過測試和結(jié)果確定績效的工具

  • 打包:成品倉庫、應(yīng)用程序部署前暫存

  • 發(fā)布:變更管理、發(fā)布審批、發(fā)布自動化

  • 配置:基礎(chǔ)架構(gòu)配置和部署,基礎(chǔ)架構(gòu)即代碼工具

  • 監(jiān)控:應(yīng)用程序性能監(jiān)視、最終用戶體驗

3.2 國內(nèi)主流的三大DevOps管理平臺

除了上面說的這些工具鏈以外,也有一些DevOps管理平臺服務(wù),國內(nèi)比較出名的就三個。

  • 云效

  • TAPD

  • 靈雀云

其中云效和TAPD屬于SaaS類平臺,靈雀云是基于容器技術(shù),以DevOps為理念,面向微服務(wù)應(yīng)用的新一代PaaS平臺。

3.3 對DevOps工具鏈、平臺存在的誤區(qū)

好的工具、平臺可以對DevOps的實施提供出非常強有力的支持,但并不代表,實施DevOps,就一定需要重新去引入或購買一堆工具、平臺。

問題的關(guān)鍵在于:如何解決問題,而不是具體應(yīng)用哪一款的工具、平臺。如果組織僅僅是購買工具而不改變工作流程,這樣不會改變?nèi)魏问虑椤?/span>

4. DevOps成功的關(guān)鍵:組織文化的轉(zhuǎn)變

DevOps 成功的關(guān)鍵在于文化轉(zhuǎn)變,除了上面提到的工具,組織文化的轉(zhuǎn)變也同等重要,我們總結(jié)出了很多 DevOps 的其他因素,比如人(People)的思想和思考方式、開發(fā)和運維的流程(Process)、精益(Lean)、自動化(Automation)、測量(Measurement。

在組織文化方面,DevOps 推崇:

  • 尊重(Respect)

  • 正視失?。℉ealthy attitude about failure)

  • 不埋怨(Avoiding Blame)

  • 精益求精

  • 工程質(zhì)量文化

  • 快速驗證文化

  • 客戶導(dǎo)向文化

5.  重新定義DevOps

到此你大概能對DevOps有一個概要的認(rèn)識和理解,DevOps它是由一些規(guī)范方法,自動化實踐,合作文化等在組織內(nèi)部不斷演進(jìn)修復(fù)而產(chǎn)生的一種提升軟件工程發(fā)布質(zhì)量和效率的方法和實踐。

總結(jié)為三點:

  • DevOps 理念:以客戶、業(yè)務(wù)需求為導(dǎo)向,向著同一個目標(biāo)前進(jìn),強調(diào)多個部門緊密溝通與協(xié)作的軟件交付過程。它包括產(chǎn)品管理,軟件開發(fā)及運營等各個方面。

  • DevOps核心實踐:人員協(xié)作文化+持續(xù)交付能力支撐

  • DevOps目標(biāo)是建立一種精誠合作的文化和環(huán)境,通過工具鏈與持續(xù)集成、交付、反饋、優(yōu)化來實現(xiàn)跨團(tuán)隊、跨系統(tǒng)協(xié)作方式。

6. 實踐DevOps需要建立哪些能力

6.1 能力一:DevOps不可或缺的自動化能力

自動化是DevOps底線?。?!如果軟件系統(tǒng)沒有一套較完善的自動化測試體系,就請不要談DevOps,要想同時提升發(fā)布效率和產(chǎn)品穩(wěn)定性,以自動化替代手工方式快速、頻繁的對軟件質(zhì)量進(jìn)行驗證是首要的手段。

主要體現(xiàn)在三點上:

  • 自動化比手動快。

  • 工具不會像人一樣容易犯錯誤。

  • 通過自動化按照定義執(zhí)行確保每次執(zhí)行的一致性。

6.2 能力二:建立持續(xù)交付能力

實現(xiàn)DevOps,需要給產(chǎn)品交付團(tuán)隊提供一個軟件持續(xù)交付平臺或者能持續(xù)交付的部署流水線,讓軟件從代碼提交構(gòu)建到交付給用戶的整個過程都能自動在流水線上完成。

主要體現(xiàn)在三點上:

  • 通過統(tǒng)一的部署流水線將從代碼提交到交付給用戶的整個過程高度可視化出來,信息透明;讓開發(fā)、測試和運維以高度一致的方式工作在同一個流水線上,真正建立起協(xié)作。

  • 每一次的軟件變更在這個完整的流水線中得到充分的驗證,盡早發(fā)現(xiàn)有缺陷的變更。

  • 將一些必不可少的控制環(huán)節(jié)內(nèi)建到自動化過程中,比如質(zhì)量保障過程、過程度量、過程審計信息等,從而弱化很多傳統(tǒng)依靠人為檢查的管理流程。

6.3 能力三:利益共同利的合作文化

以提高業(yè)務(wù)響應(yīng)效率出發(fā),要有一榮俱榮,精誠合作,共同進(jìn)步的工作態(tài)度。

7. 實踐DevOps應(yīng)該如何實施

DevOps所涉及的內(nèi)容是非常廣的,根據(jù)不同的公司現(xiàn)狀的不同,實施落地的方式也會有所不一樣。

不要盲目的去追從DevOps,不是因為大家都做,所以我也要做,需要具備更高的全局觀,從瓶頸點開始著手。

應(yīng)該出于解決某個業(yè)務(wù)問題的角度出發(fā),知道要解決什么樣的問題,這是非常非常重要的。如果你的交付質(zhì)量和交付效率在自身企業(yè)內(nèi)覺得沒有問題,如果你們覺得沒有問題,想想平時升級發(fā)版加班的苦逼。

當(dāng)你用一些實踐來解決一些業(yè)務(wù)中的實際問題,將他們串聯(lián)起來,并且形成以管道式的發(fā)布流水線后,你會發(fā)現(xiàn),其實你已經(jīng)開始在做DevOps了。

8. DevOps轉(zhuǎn)型的實踐手段

8.1 實踐一:以小批量的方式工作(開發(fā)、架構(gòu)、組織文化的演進(jìn))

以小批量、持續(xù)的方式進(jìn)行,通過反復(fù)實驗、根據(jù)反饋循環(huán)快速學(xué)習(xí),找到最正確的實施路徑。這樣需要把大的問題拆成一系列小的問題逐個、漸進(jìn)式解決。

8.2 實踐二:創(chuàng)建反饋循環(huán)

在小批量工作的基礎(chǔ)上,我們要建立起反饋循環(huán)。反饋循環(huán)讓我們能夠持續(xù)學(xué)習(xí),基于學(xué)習(xí)進(jìn)行持續(xù)改進(jìn),持續(xù)交付流水線就是反饋循環(huán)的具體實現(xiàn)。

9.實踐DevOps最佳實踐手段:CI/CD

相信大部分讀者對DevOps和CI/CD經(jīng)常會弄混淆,那么如何來理解DevOps和CI/CD之間的關(guān)系呢?可以這樣來理解:DevOps是CI/CD思想的延伸,CI/CD則是DevOps的技術(shù)核心,如果沒有CI/CD,沒有自動化測試,DevOps是沒有任何意義的。所以說DevOps是以CI/CD為基礎(chǔ)來優(yōu)化程序的開發(fā)、測試、運維等各個不同環(huán)節(jié)。

9.1  CI:持續(xù)集成

持續(xù)集成是一種開發(fā)實踐,它倡導(dǎo)團(tuán)隊成員需要頻繁的集成他們的工作,每次集成都通過自動化構(gòu)建(包括編譯、構(gòu)建、自動化測試)來驗證,從而盡快地發(fā)現(xiàn)集成中的錯誤。讓正在開發(fā)的軟件始終處于可工作狀態(tài),讓產(chǎn)品可以快速迭代,同時還能保持高質(zhì)量。

9.2 什么是CD?

談到CD,其中是包含了兩層內(nèi)容:持續(xù)交付持續(xù)部署。

有時候很多人會把持續(xù)交付誤認(rèn)為成持續(xù)部署,然而兩者是兩個不同層次的能力。

持續(xù)交付:

持續(xù)交付是持續(xù)集成的延伸或者看作持續(xù)集成的下一步,它將集成后的代碼部署到類生產(chǎn)環(huán)境,確保可以以可持續(xù)的方式快速向客戶發(fā)布新的更改。如果代碼沒有問題,可以繼續(xù)手工部署到生產(chǎn)環(huán)境中。它強調(diào)的是,不管怎么更新,軟件是隨時隨地可以交付的。


持續(xù)部署:

持續(xù)部署是持續(xù)交付的下一步,在持續(xù)交付的基礎(chǔ)上,由開發(fā)人員或運維人員自助式的定期向生產(chǎn)環(huán)境部署穩(wěn)定的構(gòu)建版本,持續(xù)部署的目標(biāo)是代碼在任何時刻都是可部署的,并可自動進(jìn)入到生產(chǎn)環(huán)境。

說到這里,相信大部人已經(jīng)能清楚明白了,持續(xù)交付是指團(tuán)隊確保每個變更可以部署至生產(chǎn)環(huán)境,但也許并不需要實際部署,這通??赡苁浅鲇跇I(yè)務(wù)方面的原因。而持續(xù)部署是指每個變更可以自動部署到生產(chǎn)環(huán)境。只有成功實現(xiàn)持續(xù)交付的前提下,才能進(jìn)行持續(xù)部署。

10.DevOps提倡的原則

DevOps持續(xù)交付的八大原則對可運維性給出了這樣的定義,在企業(yè)中研發(fā)和運維體系必然需要相互配合,開發(fā)團(tuán)隊負(fù)責(zé)功能性需求實現(xiàn)的同時,在架構(gòu)和編碼上注重非功能性需求的實現(xiàn),測試團(tuán)隊與運維團(tuán)隊將圍繞著各自職能的需求,規(guī)劃與建設(shè)DevOps流水線中對應(yīng)的工具系統(tǒng),加速企業(yè)IT價值鏈的流轉(zhuǎn),以為企業(yè)創(chuàng)造更大的商業(yè)價值。

DevOps提倡的原則

  •  從瓶頸點著手

  • Start Small,從小做起

  • 痛苦的事情優(yōu)先解決

  • 工具也是一種文化

  • 自動化別人,先自動化自己

  • 價值拉動,而非事務(wù)驅(qū)動

  • 構(gòu)建指標(biāo),驅(qū)動DevOps落地。

  • 創(chuàng)建從開發(fā)過程下游至上游的反饋環(huán)。

  • 強調(diào)全局優(yōu)化,避免局部優(yōu)化。

  • 持續(xù)做試驗和學(xué)習(xí)的文化,通過反復(fù)實踐來達(dá)到精通。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多