中大型組織 DevOps 成熟度模型設計

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DevOps 轉型是一件頗有挑戰性的工作。它並不是一個簡單的工具或者平臺的使用、運維能力提升。特別是在中大型組織中,它涉及到一系列的組織問題。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而傳統的 DevOps 成熟度模型過於撕裂與分散,無法適用於大型組織。DevOps 廠商與雲廠商的 DevOps 成熟度模型過於關注如何賣雲基礎設施,無助於企業進行高效的協作。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲此,我決定在 Ledge 的基礎上,設計上開源的、面向大型組織的 DevOps 能力成熟度模型。它是基於我們所提煉的一系列研發效能模型,抽象而成的成熟度模型。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在設計與劃分時,我們考慮的維度有兩個:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"規模化","attrs":{}},{"type":"text","text":"。對於中大型組織而言, DevOps 模型在設計時,要關注於","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"流程化/標準化","attrs":{}},{"type":"text","text":"、","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"工具化/平臺化","attrs":{}},{"type":"text","text":"四個規模化因素。即選取合適的試點團隊,構建組織的 DevOps 能力,再進行規模化推廣。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"組織協作性","attrs":{}},{"type":"text","text":"。在中大型組織內原先已經有一系列的 DevOps 相關的工具/平臺,如看板、流水線等。這些工具/平臺需要進行調整,以確保更好的協調性,從而更快的響應業務變化。","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以,在這個規模化的 DevOps 設計與實施,我們總結出了 DevOps 的四大核心能力,又稱爲四大基石。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/05/0532d0bad4ca4731ba1e6fdd8e272509.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中,高效協同是四大基石中最重要的一部分,DevOps 的本質所在。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"高效協同","attrs":{}},{"type":"text","text":"。協同指的是人與人之前的協同,即業務與技術、技術與技術、技術與測試、測試與運維等。在標準化上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"協作設計","attrs":{}},{"type":"text","text":",從流程上儘可能減少浪費;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"組織/團隊治理","attrs":{}},{"type":"text","text":",優化團隊與組織結構。在平臺上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"需求管理","attrs":{}},{"type":"text","text":",保障需求過程的概念完整性傳遞,如分析、拆分、協作;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"指標化改進","attrs":{}},{"type":"text","text":";即將協同平臺作爲度量指標的展示平臺,用於持續性的改進,諸如於技術技術債等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"持續交付","attrs":{}},{"type":"text","text":"。持續交付是指能夠按需快速、安全且可持續地發佈各種類型的更改。在標準化上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"服務化架構","attrs":{}},{"type":"text","text":",即實現類似於微服務架構、服務導向架構的架構化方式,實現技術架構能快速響應業務變化;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"版本管理","attrs":{}},{"type":"text","text":",即從源碼源頭開始對版本進行標準化,通過分支管理、語義化版本等方式實現。在工具上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"靈活變更","attrs":{}},{"type":"text","text":",即通過平臺管理變更與製品;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"持續部署","attrs":{}},{"type":"text","text":",則是與變更相關關聯的持續集成與部署。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"質量保障","attrs":{}},{"type":"text","text":"。質量保障是指爲最終用戶提供高質量的軟件產品。在標準化上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"測試策略","attrs":{}},{"type":"text","text":",即結對質量左移設計測試生命週期,設計測試分層模型進行指標化引導 ;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"測試方式","attrs":{}},{"type":"text","text":",定義自動化測試、手動測試的類型、時機、準出標準等。在平臺化上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"測試管理","attrs":{}},{"type":"text","text":",諸如於用例管理與設計、測試數據管理;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"質量安全","attrs":{}},{"type":"text","text":",則是針對於代碼、環境等進行自動化質量與安全相關的掃描。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"環境支撐","attrs":{}},{"type":"text","text":"。環境支撐是指用於支撐體系所需要的基礎設施與運維體系。在標準化上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"配置管理","attrs":{}},{"type":"text","text":",即將基礎設施代碼化後,進行相應的基線配置管理、應用配置等;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"資源管理","attrs":{}},{"type":"text","text":",即對環境的管理,以及各環節所需要的資源和環境進行管理。在平臺上,我們關注於:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"部署管理","attrs":{}},{"type":"text","text":",即對於發佈環境的管理,以及諸如灰度發佈等高級部署方式的管理;","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"運維自動化","attrs":{}},{"type":"text","text":",在運維上進行自動化的監控和警告,並支持更好的彈性發布,諸如於高可用性等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在規劃完 DevOps 子域之後,我們可以根據組織的規模,細分子域以及對應的詳細項。如在協作設計上,可以進一步地對過程協作與角色協作進行設計。如下圖所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/59/598ee69297003c423cbb9e323883c5b8.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"考慮到這是一個成熟度模型,所以我們還需要定義成熟度的級別。通常來說,一個成熟度模型應該是從 1~5,又或者是 0~4 四個級別。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於規模化的組織來說,我們只需要 4 個級別,即只存在 2~5 個級別。從流程標準化和平臺化,我們已經消滅級別 1 的存在,它們都是不合規的。與此同時,從標準化和平臺化的層面來看,事實上,我們也不存在級別 5,因爲它們過於靈活和超前。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以,它只需要三級模型:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Level 2,規範化。從原始需求的產生到需求的上線,全部遵循組織內定義的規模標準。需求協作的過程透明化,流程明確,流轉自動化;持續交付上,採用組織所定義的實踐,如語義化版本,製品來源與產出可信等;在質量上,採用依據組織定義的模型設計測試策略等;在環境上,平臺能支撐起規範化所需要的設計。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Level 3,平臺標準化與自動化。將規範化的內容,逐一在平臺上進行標準化,即定義多種技術實踐,只能從中二選一,或者三選一。四大基石,都通過這一系列標準來進行自動化。唯一值得商榷的一點是持續交付上,我們需要一個松耦合的架構,才能支撐起單個團隊的快速交付,諸如於微服務架構、插件化架構等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Level 4,指標驅動與自動改進。建立一系列的度量模型,對於軟件開發過程進行全面的度量。與此同時,團隊與平臺根據這些定義的對系統和平臺進行優化。如在環境支撐上,對於應用狀態的實時監控,實現自動化彈性。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於第 5 級來說,視不同的組織情況,略有不同。如我們所定義的是:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Level 5,雲研發架構。構建基於雲端開發時的基礎設施架構,諸如於雲研發架構、Serverless、Typeflow、Darklang 等,實現基礎設施的自動化與架構的高度解耦。在質量上,對運行時監控,實現自動化測試編寫,對代碼進行靜態分析,實現精益測試;在協同上,通過構建領域特定語言,實現需求生成代碼骨架;在環境上,自動實現灰度發佈等特性。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"歡迎一起討論規模化的 DevOps 模型:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"GitHub: https://github.com/scaling-devops/maturity","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Gitee: https://gitee.com/scaling-devops/maturity","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"相關的模型也可以從上述的地址獲取。","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章