隨着企業業務對軟件系統日益依賴,IT管理與研發模式也隨之對「敏態」模式產生了需求,也就是今天時常提起的DevOps。提高效率,是DevOps實踐的核心內容之一。就讓咱們來一塊兒從軟件生命週期的業務流與做業流,探討DevOps實踐效率提高的方向與方法吧。數據庫
軟件工程將軟件的生命週期定義爲問題定義、需求分析、軟件設計、程序編碼、軟件測試、運行維護等過程,不管是對於傳統模式、敏捷模式仍是DevOps模式,軟件生命週期過程基本一致,以下圖所示。服務器
軟件生命週期微信
軟件生命週期各個過程也組成了軟件工程的「業務流」,而在不一樣團隊採用相應地開發模式中,具體執行的開發及相關的活動,咱們則成爲「做業流」。架構
DevOps實踐中,最主要改進的內容,就是對於這些 「做業流」的活動進行「關停並轉」,從而實現總體與局部上對於效率的提高。運維
這些做業,也就是須要開展的活動,能夠分爲如下幾類:ide
人與人的互動工具
這類活動交互的雙方均爲天然人,如業務需求收集,活動的特色是具有高度的不規則與不規律性。單元測試
人與機的互動測試
這類活動交互的一方爲天然人,一方爲依託於計算機的程序,如編碼活動、人工審覈/審批等,活動的特色是人的活動必須依循計算機相關主題的規則,部分活動能夠抽取爲規範化的過程。優化
機與機的互動
這類活動的特色是交互的雙方都是依託於計算機的程序,如編譯構建、自動化測試,活動的過程高度規範化。
不一樣的做業類型,在效率提高的優化中,須要採用的方法各有不一樣。
協做的本質是在不一樣的主體之間進行快速、有效的信息共享,從而進一步協調各主體進行步調一致、有序的工做執行,實現總體上的一致性與順暢性,協做是DevOps實踐中效率提高的重要方向和內容之一。
DevOps實踐中的協做更多須要是從軟件生命週期總體系統化考慮與設計,協做設計上面主要包括如下兩個方面。
傳統的模式中,相關業務信息僅共享於各階段內部,而在DevOps實踐中,則更強調信息的跨階段共享,面向產品的全生命週期,共享信息包括:
業務類信息
即業務目標、業務背景、業務需求、業務限制等信息。
執行類信息
即軟件開發、編譯、測試、部署等執行的相關信息,如開始時間、結束時間、執行時長、執行操做記錄等。
反饋類信息
即各步驟、階段執行的信息反饋,如需求拆分反饋、任務執行反饋、代碼掃描結果、測試結果、發佈驗證結果等。
DevOps時間的信息共享,需爲以上信息提供統一的信息管理與分析平臺。對於代碼編寫以前的階段提供如敏捷協同的工做協同管理模塊,以記錄需求、任務分配、需求完成進展等信息,對於代碼編寫以後的階段,則提供相對完整的執行記錄信息以及必要的通知信息,以構建及時的反饋。
協做調度是DevOps協做實踐中另一項關鍵內容。經過工具平臺的驅動,實現對於「機與機的活動」全自動協做調度,對於「人與機的活動」簡化協做調度,對於「人與人的活動」事件驅動協做調度,進而實現優化協做調度的效率,提高協做效果。
全自動協做調度
全自動的協做調度主要是經過DevOps平臺的流水線引擎實現,經過流水線編排的實現指定做業流自動執行,執行過程當中自動完成不一樣階段的信息交互,過程無需人工參與。
簡化的協做調度
簡化的協做調度也是經過DevOps平臺的流水線引擎實現,在流水線做業流中編排鬚要人工干預的節點,但僅須要人工給出經過/終止等簡單的指令型信息便可。
基於事件的協做調度
基於事件驅動的協做調度,主要是用於「人與人的活動」,也能夠用於「人與機的活動」,其經過通知、待辦等事件方式,實現精準的信息共享與推送,驅動協做的下游方快速接受和推動事務工做。
DevOps實踐中的協做調度的效果能夠經過研發效能來進行初步的評估與衡量,經過衡量,咱們能夠較爲清晰的獲知哪一個階段的協調調度是關鍵阻礙點或能夠進一步優化。
自動化是DevOps的核心理念,也是效率提高的最重要手段。經過DevOps工具平臺,實現軟件過程自動化以及軟件過程的支撐工做自動化。
軟件過程自動化是指在軟件的開發、測試、部署等過程當中,引入自動化的手段,從而實現快速的軟件質量檢查,以及軟件應用發佈。
開發過程自動化
開發過程的自動化主要針對源代碼掃描、編譯構建、製品歸檔、報告歸檔等環節實現自動化。
源代碼掃描包括採用商用/開源工具,從代碼的規範、缺陷、複雜度、重複率等方面進行掃描和質量檢測。
編譯構建包括針對服務器端、移動端等不一樣編譯構建類型的支持,如Maven、Gradle、Node.js等編譯構建方式支持。
製品/報告歸檔包括對於二進制包、文檔、鏡像的歸檔和存儲支持。
經過流水線引擎,實現以上內容的自由、可視化編排,以及按需執行。
測試過程自動化
測試過程的自動化主要針對軟件測試中的單元測試、接口測試、穩定功能的UI測試、測試數據自動生成和清理等過程。
包括測試任務的組織、測試腳本的執行、執行結果的自動統計等。
部署過程自動化
部署自動化是指針對軟件的部署發佈過程,包括數據庫更新、應用部署、灰度/滾動發佈、回滾等過程。
軟件過程支撐主要是指面向軟件工程過程的支撐,實現自動化包括:
編譯構建環境自動化
編譯構建環境包括基於DevOps平臺的自管理編譯構建環境,按需生成編譯構建環境,編譯構建完成後自動銷燬,以及特定編譯構建環境的快速接入等。
測試環境自動化
測試環境自動化是指自動化測試執行所需的能力環境,如接口/UI測試腳本所需的執行環境,能夠根據測試任務的須要,實現測試環境的彈性伸縮自管理。
環境部署自動化
環境部署自動化是指對於開發、測試、生產等所須要的基礎環境,能夠根據流水線自動完成環境的使用前的生成、使用後的回收等,實現資源即代碼,無需人工參與。
在DevOps實踐中,經過大量的過程及支撐自動化,能夠極大的減小開發、測試、運維等工做的人工參與時間,下降人工成本,並能實現人工沒法完成的工做,例如快速對10000臺服務器上的應用進行更新。但前期的建設須要涉及的技術點較多,成本也較爲巨大,如何建設落地自動化,除了考慮效率以外,還需着重考慮DevOps平臺的自主可控與可持續發展等方面,
持續優化,是DevOps效率提高的第三個主要方面,也是踐行DevOps理念的重要實踐。持續優化須要解決優化什麼、如何優化等問題。這些問題的解決,須要應用DevOps精益分析的理念實踐。
精益分析,本質就是對數據的統計、分析與挖掘。
精益分析所涉及的數據應從需求提出到用戶訪問造成一個端到端閉環。數據的獲取須要從業務系統自己以及支撐業務系統的DevOps平臺兩個方向獲取。早期能夠以DevOps平臺相關數據的獲取爲主要來源,後續可持續集成非DevOps平臺以及來自業務系統埋點獲取的數據。在整個過程當中,須要作到數據的及時性、準確性與完整性。
數據分析須要有明確的目標和針對性,如針對業務需求提出到上線的平均週期、開發返工趨勢等,經過數據分析,能夠快速找到當前影響效率的關鍵點,從而實現針對性的改善。
數據呈現即爲數據應用,數據呈現能夠採用兩種方式進行。
協同管理
將數據獲取/分析的結果,在DevOps的協同管理平臺實時的反饋和呈現,從而推進PO/開發團隊/干係人等根據反饋信息快速推動效率優化,經過量變引起質變,經過團隊內自我優化的方式實現效率的提高。
度量分析
針對於與效率相關的重點指標,經過可視化大屏等方式,進行專項的度量分析,並在管理與項目團隊共享指標信息以及指標的變化趨勢,經過全局監督的方式推動效率的提高。
文化上的協同打破了流程與部門的屏障,共享了信息,協做了調度;過程當中的自動化消除了重複性的工做,下降人爲風險;業務系統與DevOps平臺的數據支持精準提供優化的方向。DevOps之因此能爲企業提高效率在於DevOps的實踐實現軟件生命週期的業務流與做業流的一致與順暢。
做者:黃全中
———— / END / ————
想要創建對DevOps的基礎概念,能夠參考:
想了解嘉爲實踐DevOps的理解,能夠參考: