DevOps知識框架體系和最佳實踐案例整理

該文爲我對網上發佈的DevOps知識庫Ledge的一個閱讀筆記整理。Ledge(源自 know-ledge,意指承載物)知識平臺是基於我們所進行的一系列 DevOps 實踐、敏捷實踐、精益實踐提煉出來的知識體系。

DevOps知識框架概述

對於DevOps研發運維一體化,我在前面也寫過了不少文章,包括了基礎知識,敏捷研發,持續集成和交付,流水線設計,DevOps和容器雲的集成,開源工具集,DevOps能力成熟度模型等方面的內容。

今天在網上瀏覽技術文章的時候剛好看到了一個DevOps的一個知識框架,因此準備做下關鍵內容的分析和整理。雖然當前已經發布的知識框架內容還不算完善,但是初步框架模型已經形成,還是值得推薦關注雲原生和DevOps的人員閱讀。

具體地址爲:https://devops.phodal.com/home

對於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轉型給出的幾個階段,其中給出了三種典型路徑如下可以作爲參考:

  • 團隊級敏捷:以小團隊爲單位開展敏捷轉型,當試點結束後,組織往往會繼續拓展敏捷轉型的範圍,鼓勵更多的團隊加入敏捷的陣營;

  • 產品級敏捷:以整個產品的價值流爲單位開展敏捷轉型。產品級敏捷意在拉通產品價值流的上下游,將相互依賴的團隊納入同一個敏捷框架裏;

  • 業務級敏捷:經歷了團隊級敏捷到產品級敏捷,產品從無到有,直到產品發佈的整個過程都已納入了敏捷範圍。但是這還不夠,一些支持部門,比如人力資源、行政、財務、市場和銷售等部門也應該被納入敏捷轉型的範疇。

在華爲的大規模敏捷開發實踐案例裏面,給出了大規模敏捷實施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能力成熟度模型進一步樹立和結構化完善。並對最佳實踐裏面的一些案例進一步文字化總結和梳理。

原文鏈接:https://www.toutiao.com/i6920459336573551108/

Kubernetes管理員認證(CKA)培訓

本次CKA培訓在北京開班,基於最新考綱,通過線下授課、考題解讀、模擬演練等方式,幫助學員快速掌握Kubernetes的理論知識和專業技能,並針對考試做特別強化訓練,讓學員能從容面對CKA認證考試,使學員既能掌握Kubernetes相關知識,又能通過CKA認證考試,學員可多次參加培訓,直到通過認證。點擊下方圖片或者閱讀原文鏈接查看詳情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章