DevOps 涉獵的范圍非常的廣泛,包括軟件研發(fā)全生命周期的方方面面,對于剛開始涉及 DevOps 的人來說會有種盲人摸象的感覺,這正是 DevOps 轉(zhuǎn)型的一個難點。在 DevOps 轉(zhuǎn)型過程中,標(biāo)準(zhǔn)化是重要手段。
那么,標(biāo)準(zhǔn)化關(guān)注的具體是什么內(nèi)容呢?
DevOps 的轉(zhuǎn)型目標(biāo)在于縮短前置時間,加快部署頻率,提高系統(tǒng)的可用性,減少服務(wù)恢復(fù)時間,降低變更失敗率。這就要求我們在設(shè)計運行平臺的時候,除了具備自動恢復(fù)功能的以外,還要提供豐富的運維監(jiān)控數(shù)據(jù)以及強大的數(shù)據(jù)分析能力,這樣能夠幫助運維人員在極短的時間之內(nèi)恢復(fù)服務(wù)。變更失敗的原因主要有 2 個,一是功能質(zhì)量沒有達標(biāo),二是需求理解不到位。
圖片中是我們整理的一些標(biāo)準(zhǔn)化的關(guān)注點。作為產(chǎn)品經(jīng)理或業(yè)務(wù)分析的人員,需要關(guān)注需求如何順利到達研發(fā)團隊,并能夠適應(yīng)他們進行敏捷的開發(fā)。作為研發(fā)人員需要關(guān)注的點相對比較多,尤其是要關(guān)注配置信息標(biāo)準(zhǔn)化管理。
標(biāo)準(zhǔn)化的目的是為了實現(xiàn)自動化,包括集成的自動化、部署的自動化、測試的自動化和運維的自動化。下圖是一個典型的 DevOps 循環(huán)圖。我們認(rèn)為業(yè)務(wù)敏捷是前提,DevOps 流程是從敏捷型需求為起點,經(jīng)過了運維監(jiān)控這個最后的節(jié)點回到計劃,實現(xiàn)閉環(huán)。編碼過程標(biāo)準(zhǔn)化的重點在于測試驅(qū)動的開發(fā),這也是敏捷要求的一個標(biāo)準(zhǔn),但是實際上能做到這個標(biāo)準(zhǔn)的團隊并不是很多。測試驅(qū)動開發(fā)首先要面向接口做一些測試和開發(fā),面向接口做測試的時候需要關(guān)注接口名稱、接口協(xié)議、接口參數(shù)名稱和類型、接受條件。其次我們需要關(guān)注數(shù)據(jù),包括每個接口輸入的數(shù)據(jù)以及其得出的結(jié)果。針對引用的相對復(fù)雜業(yè)務(wù)邏輯的其他服務(wù),需使用 mock 工具來減少依賴。每個測試用例的測試場景需要完整注釋。最后我們總結(jié)一下前面的內(nèi)容:
一、需求敏捷化是起點。
二、TDD 開發(fā)模式是快速迭代開發(fā)時代保障軟件質(zhì)量基線的有效手段。
三、注重環(huán)境配置文件的標(biāo)準(zhǔn)化,保證程序的可測試性。
四、研發(fā)流程的標(biāo)準(zhǔn)化是建立自動化 CI、CD 流程的前提,而 CI、CD 流程的自動化是實現(xiàn) DevOps 的關(guān)鍵點。
五、Jenkins 是實現(xiàn) CI、CD 流程的有效工具,但是在處理復(fù)雜業(yè)務(wù)場景時還需要有其他合適工具的幫襯。
六、服務(wù)器運行環(huán)境的標(biāo)準(zhǔn)化,可以促進流程腳本的標(biāo)準(zhǔn)化。