DevOps知識框架體系和實踐案例整理
注:該文為我對網上發布的DevOps知識庫Ledge的一個閱讀筆記整理。Ledge(源自 know-ledge,意指承載物)知識平臺是基于我們所進行的一系列 DevOps 實踐、敏捷實踐、精益實踐提煉出來的知識體系。
DevOps知識框架概述
對于DevOps研發運維一體化,我在前面也寫過了不少文章,包括了基礎知識,敏捷研發,持續集成和交付,流水線設計,DevOps和容器云的集成,開源工具集,DevOps能力成熟度模型等方面的內容。
對于DevOps我在前面文章已經強調是企業進行數字化轉型,微服務架構轉型,云原生解決方案實踐的一個關鍵內容。但是DevOps本身不是簡單的類似配置管理,測試,構建,持續集成,發布等開源工具集的集成,更加重要的是整個開發組織敏捷文化的改進。
為何發布了這個框架?
簡單來說就是企業數字化轉型過程中,究竟對如何實施DevOps,自己應該先做哪些基礎技術積累,應該采用哪些開源工具,整個研發管理和開發過程如何改進,實施應該如何分階段循序漸進等并不清楚。
這就導致很多企業在實施DevOps的時候往往僅僅是個別的開發小組或項目在進行一些敏捷和持續集成的實踐,而很難將整個DevOps上升到組織級,形成組織過程資產。
這個知識框架,從發布者的介紹主要包括了如下節點:
- DevOps 工具元素周期表。幫助您進行數字化時代的 DevOps 工具選型。
- DevOps 設計工具。幫助您設計組織內的 DevOps 流程,涵蓋了流程、人、工具、制品等等。
- 案例學習。從社區的知識庫中,我們總結了傳統企業走向 DevOps 的經驗,并濃縮到易于使用的內容和材料中。
- 最佳實踐。我們從海量的 DevOps 內容中,提煉出了一系列的最佳實踐,以更好地幫助企業進行 DevOps 實踐。
- 模式與原則。基于我們的實踐,我們提煉了位于它背后的模式與原則,幫助個人和組織更好地了解 DevOps 文化。
- 操作手冊。只憑實踐與原則,無法讓中小型 IT 團隊進行 DevOps 轉型,所以我們準備了詳實的操作手冊,以幫助您一步步前進。
- 度量。KPI - 度量、度量 - KPI、KPI - 度量,幫助您更好地度量 DevOps 轉型情況。
- 報告。我們嘗試從豐富的 DevOps 報告中,提煉出有用的實踐和工具。
- Mobile DevOps。我們相信移動應用的 DevOps 改進,才是大多數公司的挑戰。
- 工具。工具,工具,工具是最好的生產力,工具比人的記憶力更加可靠。
今天重點是對當前已經發布的內容做下初步分析和整理。
DevOps流水線定制
不同的企業在實施DevOps的時候可以根據企業實際情況定制不同的流水線。
注意流水線設計最基礎的是要實現持續集成和持續部署能力,里面涉及到最基本的內容包括了源代碼和配置管理,編譯構建,自動化部署。
在整個DevOps最佳實踐中實際包括了敏捷研發和過程管理,因此可以看到整個DevOps流水線涉及到了類似Scrum敏捷研發工具之間的集成。而集成的重點主要是組織,團隊,產品,項目,項目版本,任務,缺陷。
原來談的比較多的是CI/CD,即持續集成和持續部署。而在DevOps實施中談的比較多的是持續集成和持續交付。持續集成過程不包含最終生產環境面向客戶的部署和交付過程,而持續交付則單獨出來。
持續集成和持續交付的分離,也帶來了流水線設計上的區別。簡單的流水線你可以從編譯構建,一直編排到測試驗證到生產環境發布。而在持續集成和持續交付分離后,往往交付流水線需要進行單獨設計。
其次,在DevOps和容器云集成的時候,整個自動化部署過程發生了變化,即編譯構建完先制作鏡像,推送到制品庫,然后再從制品庫提取鏡像+配置信息進行部署。因此在這個階段還涉及到和容器云的集成,比如常見的實現和Kurbernetes的接口集成等。
在完成了基本的敏捷研發+持續集成+容器云集成這條主線后。還剩余兩個重點,其一是測試和質量管理,其二是后續的監控運維。
對于測試和質量管理包括了很多內容,從上面的DevOps元素周期表的橙紅色部分也可以看到這塊占據了相當大部分內容。如下:
- 靜態測試:代碼規范性檢查,安全檢查,漏洞掃描
- 自動化測試:單元測試,接口測試,UI界面自動化測試
測試本身是一個系統工程,需要覆蓋從測試場景分析,測試設計,測試執行,測試評估完整生命周期。中間還需要對測試用例腳本,測試數據等進行管理。
而從DevOps實施角度,更多的是考慮整個測試過程如何自動化,通過將測試過程集成和編排到整個DevOps流水線執行過程中,真正實現研發和QA之間的自動化協同能力。
案例學習
這是一個大的版塊,但是實際上這塊的內容相對的薄弱,或者說有點亂。雖然整體給出了類似招行,中行,攜程,阿里,華為,小米,美團相關的案例,但是整體都很單薄。更多的介紹內容沒有,還不如直接看案例介紹里面鏈接到的具體企業演講PPT。
上圖是大型銀行DevOps轉型給出的幾個階段,其中給出了三種典型路徑如下可以作為參考:
- A. 團隊級敏捷:以小團隊為單位開展敏捷轉型,當試點結束后,組織往往會繼續拓展敏捷轉型的范圍,鼓勵更多的團隊加入敏捷的陣營;
- B. 產品級敏捷:以整個產品的價值流為單位開展敏捷轉型。產品級敏捷意在拉通產品價值流的上下游,將相互依賴的團隊納入同一個敏捷框架里;
- C. 業務級敏捷:經歷了團隊級敏捷到產品級敏捷,產品從無到有,直到產品發布的整個過程都已納入了敏捷范圍。但是這還不夠,一些支持部門,比如人力資源、行政、財務、市場和銷售等部門也應該被納入敏捷轉型的范疇。
在華為的大規模敏捷開發實踐案例里面,給出了大規模敏捷實施DevOps的14條最佳實踐也可以作為參考:
- 實踐 1:組織結構和產品架構螺旋相適配;
- 實踐 2:Two pizza team,全功能團隊,特種作戰;
- 實踐 3:按周迭代,小步快跑,持續規劃;
- 實踐 4:服務自治,獨立需求排序,開發,部署上線;
- 實踐 5:兼聽則明,持續規劃,價值排序;
- 實踐 6:與客戶聯合敏捷,眾創,對齊客戶商業價值;
- 實踐 7:架構解耦,服務 / 微服務化;
- 實踐 8:云基礎設施下,猴子軍團出沒,耐抗才能高可用;
- 實踐 9:兼顧效率與安全的軟件倉庫,高速下載,便捷實用;
- 實踐 10:自動化流水線,縮短上線時間,Built-In Quality;
- 實踐 11:企業級儀表盤,基于數據科學決策;
- 實踐 12:運維、監控、運維專家經驗沉淀到系統;
- 實踐 13:灰度發布,友好 / 公測,運營運維配合;
- 實踐 14:VoC 驅動,持續規劃,數據分析,動態調整,有錯就改。
企業組織級DevOps和大規模敏捷實施不容易,從scrum敏捷方法論到SAFe大規模敏捷框架,再到DevOps過程實踐解決方案,整個敏捷方法論從開發團隊到整個企業,整個團隊也從幾十人擴大到上百人甚至上千人的規模。這個時候需要就是組織架構設計,開發團隊的劃分,開發團隊和整個持續集成過程的協同等。
而一個好的DevOps案例學習和最佳實踐至少應該包括如下內容。
- 問題和現狀分析,關鍵訴求
- 期望通過DevOps達到的目標
- 組織團隊設計,研發過程設計
- 開發框架選項和架構設計
- 持續集成和持續交付最佳實踐
- 測試最佳實踐
- 后期自動化監控運維最佳實踐總結
- 整體實施效果和收益分析總結
DevOps原則和模式
數字化技術(信息技術)的本質目的是創造價值,它的載體是軟件,提供價值的是功能特性。越早發布功能特性,便能越快創造價值。采用逐漸增加功能特定的增量式開發方法,能讓我們在最短時間內開發出最小可用(MVP)產品。
圍繞它周圍的優秀技術實踐,可以讓我們開發出運行良好的軟件,并且設計也是好的。這個過程需要自上而下的為之付諸行動。
這塊的內容整體給我啟發比較大的還是如果構建DevOps文化和學習型組織,里面又涉及到整個知識體系構建,組織和團隊人員能力模型和技能評估,架構金字塔等。
架構金字塔,即把軟件架構按照不同的粒度進行分組。通過分組的細分,我們能有針對性地對系統架構,進行更好的管理和設計。
一個軟件系統是由一系列的應用組成的,而一個應用則由一系列的模塊組成,進一步的模塊是由代碼組成的。舉個示例,一個現代的系統是由一系列的后端服務、客戶端應用組成的;拆解開一個微服務,則是由一系列的模塊組成的。
對于復雜軟件系統,需要進行分層和分級,如下:
- 系統級,即整個系統內各部分的關系,諸如于如何通訊,以及如何與第三方系統如何集成等。
- 應用級,即單個應用的整體架構,及其與系統內單個應用的關系等。
- 模塊級,即應用內部的模塊架構,如代碼的模塊化、數據和狀態的管理等。
- 代碼級,即從代碼級別保障架構實施。
對于DevOps原則模式這塊內容,整體感覺分類還是欠缺,整體還是應該基于組織團隊,研發過程,持續集成交付,測試管理等關鍵過程域給出可行的原則和模式。
對于信通院發布的DevOps能力成熟度模型還是可以作為一個重要的參考標準。該系列標準分為敏捷開發管理、持續交付、技術運營、應用設計、安全風險管理、組織結構及系統和工具等部分,涵蓋了軟件開發到運維的全生命周期,如下圖:
整個評估模型我可以看到融入了多方面的內容,核心是如下三方面
- 研發項目管理和敏捷研發方法論
- 軟件工程,特別是持續集成方法論
- IT管控和治理,包括對原來ITIL思想體系融入
在這三方面以外,我們又看到整個成熟度評估里面很多評估要求的達到本身又希望你采用微服務架構思想,通過容器云來實現持續集成和交付等。這也和我們經常談到的,微服務和容器云是實踐DevOps的另外一個關鍵要素。
DevOps最佳實踐
實際上對于案例學習和最佳實踐本身是相互融合的內容,案例很多就是最佳實踐。一個DevOps的實施往往涉及到持續集成交付,自動化測試,敏捷研發多個過程域的最佳實踐。當然這些最佳實踐的側重點可能不同。
但是所有的最佳實踐仍然是圍繞DevOps成熟度模型展開。
- 比如你可以只講自動化測試過程的最佳實踐,講清楚自動化測試過程如何和敏捷研發,整個DevOps流水線持續集成融合在一起實現完整過程的自動化。
如果要將最佳實踐分離,應該包括:
- 敏捷研發過程最佳實踐
- 持續集成和持續交付最佳實踐(配置管理,流水線,工具鏈集成,制品庫,灰度發布等)
- 測試管理和自動化測試執行最佳實踐
- 微服務架構改造和DevOps集成最佳實踐
- DevOps和容器云集成
- 自動化運維和監控
以上即是最佳實踐的一些關鍵內容點。
DevOps實施手冊
知識框架里面將DevOps實施分為如下幾個關鍵步驟:
- 建立愿景與方向
- 度量:組織、系統現狀
- 準入條件。查看是否滿足實施 DevOps 的準入條件。
- 探索可行方案。即 MVP 嘗試
- MVP。一次快速的 DevOps 過程和結果的 showcase。
- 精細化 DevOps 實施
- 回顧優化
- 規模化 DevOps 落地
在前面我就談到了DevOps實施本身可以分為幾個階段,從最開始的單純實現持續集成到后續的敏捷研發過程集成,容器云集成,持續交付能力提升等。
當重新思考DevOps的時候,實際上DevOps的實施往往伴隨著微服務架構的改造和優化實施,容器云的改造和實施等。即最終實施的是一個完整的云原生技術平臺和解決方案,而不是一個簡單的DevOps持續集成和交付過程。
從這個意義上講,DevOps實施實際包括了敏捷研發過程改進,持續集成和持續交付,微服務架構和開發標準規范體系,自動化測試,自動化運維等關鍵內容。而所有這些內容的實施仍然需要在前期先進行現狀分析評估,給出差距分析。然后再結合差距分析情況給出具體的實施演進路線設計。
簡單總結
雖然當前DevOps知識平臺還不夠完善,但是仍然給出了從DevOps基礎知識概念,到能力框架,案例和最佳實踐,實施路線指引的完整知識架構框架。
個人建議該知識平臺還是圍繞DevOps能力成熟度模型進一步樹立和結構化完善。并對最佳實踐里面的一些案例進一步文字化總結和梳理。