DevOps工作三步法:第一步流動原則

本文內容主要來源於《DevOps Handbook》-DevOps實踐指南,本文概述的原則是DevOps工作三步法的第一步,它的目標是先建立最底層的基礎,即:DevOps技術實踐和合理的應用架構;只有這樣才能使工作快速而穩定地從開發端流動到運維端;與此同時還能保證不會給生產環境帶來混亂,不會中斷客戶的服務。這就意味著需要降低在生產環境中部署和發布變更的風險。可以通過*持續交付*的技術實踐來實現這個目標。

持續交付基於穩定的自動化部署流水線,團隊能夠使用自動化測試持續驗證代碼,確保代碼始終處於可部署的狀態,開發人員要保證每天都向主幹提交代碼,以及設計和實現有利於實施低發布風險的環境和軟體架構。

在流動原則的指導下,需要開展的重要的工作內容如下:

  • 奠定部署流水線的基礎
  • 實現快速、可靠的自動化測試
  • 實現並實踐持續集成和持續測試
  • 通過自動化、架構解耦等方式實現低風險發布

以上技術實踐能夠有效地縮短創建類生產環境的前置時間。同時,持續測試可以為所有團隊成員提供快速的反饋,使小型團隊能夠安全、獨立地開發、測試和向生產環境部署代碼,從而將生產環境的部署和發布作為日常工作的一部分。

此外,通過將QA人員和運維人員的任務集成到DevOps實施團隊的日常工作中,能夠減少救火、困境以及繁瑣的重複勞動的發生,使團隊成員的工作高效且充滿樂趣。這不僅能提升團隊的工作質量,還能提高組織的競爭力。

流動原則相關的詳細技術實踐請參考請《DevOps實踐指南》一書的第三部分,這部分包含第10章到第13章,一共描述了5個技術實踐。

在流動原則里我們強調的而是全局的目標而不是局部的目標,局部目標的例子如下所示:

  • 特性開發完成率
  • 測試發現/修復缺陷的比例
  • 運維的可用性指標

我們需要減少價值流中的工作交接的次數,由於當交接次數多到一定程度時,所有人就會徹底的迷失,無法回答工作的上下文聯繫是什麼?也不清楚我們要解決的是什麼問題?或者組織的全局目標是什麼?

價值流的應用實例

如果我們選擇做DevOps轉型的項目是棕地項目,我們就需要對當前的工作,進行細緻的值流研討和分析;需要畫出當前的狀態。如下圖的示例所示(註:這是一個示例,你的棕地項目分析完之後並非如此)。

為了在實施DevOps的過程中持續的度量和改進,我們需要分析出當前價值流的核心定量指標:

  1. 總計前置時間 = 求和價值流中每個工作步驟里的LT 【這個指標是DevOps項目的北極星】
  2. 總計增值時間 = 求和值流中每個工作步驟里的VA
  3. 完成且精確百分比 = 連乘值流中每個工作步驟的%C/A

如果是綠地項目,我們在第一個工作周里,價值流圖是沒有這些數值的。我們需要每天都在CI/CD流水線工具中採集相關數據,在每個人的日常工作中關注和記錄相關數據,在第二周和後續的每一周里度量和分析以上指標,最好用儀錶板展示工具,將這些數據實時地顯示在所有項目組成員都可以輕鬆看到的位置。

對這個價值流進行持續的優化,使它更高效的工作,並不斷的進化和改進。如果是棕地項目,那麼在分析完以上的機制流之後,可以定製新的進化版的價值流圖,並按照新版本的價值流圖重新開始項目的執行。如下圖的示例所示(註:這是一個示例,你的棕地項目改進優化完之後並非如此)。

優化和改進日常工作

Goldratt博士的約束理論(TOC)

在實踐運用流動原則的技術實踐時,可以使用Goldratt博士給出的方法,隨時識別並解決價值流中的約束點,這個五步法如下:

  • 識別系統的約束點。
  • 決定如何利用這個系統約束點。
  • 基於上述決定,考慮全局工作。
  • 改善系統的約束點。
  • 如果約束點已經突破了,請回到第一步,但要杜絕慣性導致的系統約束。

以上五步法是DevOps實施項目組日常工作的必備流程優化工具。

常見的4個約束點

傳統企業或者團隊里最容易發生的約束點有一定的共性,一般可能會按照以下順序逐個攻克和優化:

  1. 環境搭建
  2. 代碼部署
  3. 測試的準備和執行
  4. 緊密耦合的架構

可以清楚的看到大多數約束點比較偏Ops這一側,而攻克所有這些約束點需要Dev和Ops一起協作完成。

常見的9中浪費

在DevOps工作團隊里需要儘快能地避免以下浪費現象的發生:

  • 半成品
  • 額外/多餘工序
  • 額外/多餘功能
  • 任務切換
  • 等待
  • 移動
  • 缺陷
  • 非標準或手工操作
  • 填坑俠

以上浪費現象最早是從製造行業的精益管理中總結出來的,這些也是完全可以應用到技術價值流中,IT相關的工作能對每一條有很多痛點清晰的解讀,你可以嘗試在自己的工作環境中尋找以上所有浪費現象。

DevOps工作三步工作法 in《鳳凰項目》

在本書中,我們闡述了這一基礎原理,即所有開發運維模式都來自「三步工作法」,它旨在闡明指導開發運維的流程與實踐的價值觀與理念。

**第一工作法 **是關於從開發到IT運維再到客戶的整個自左向右的工作流。為了使流量最大化,我們需要小的批量規模和工作間隔,絕不讓缺陷流向下游工作中心,並且不斷為了整體目標(相對於開發功能完成率、測試發現/修複比率或運維有效性指標等局部目標)進行優化。

必要的做法包括持續構建、集成以及部署,按需創建環境,嚴控半成品,以及構建起能夠順利變更的安全系統和組織。

**第二工作法 **是關於價值流各階段自右向左的快速持續反饋流,放大其效益以確保防止問題再次發生,或者更快地發現和修復問題。這樣,我們就能在所需之處獲取或嵌入知識,從源頭上保證質量。

「必要的做法包括:在部署管道中的構建和測試失敗時「停止生產線」;日復一日地持續改進日常工作;創建快速的自動化測試套裝軟體,以確保代碼總是處於可部署的狀態;在開發和IT運維之間建立共同的目標和共同解決問題的機制;建立普遍的產品遙測技術,讓每個人都能知道,代碼和環境是否在按照設定的運行,以及是否達到了客戶的目標。

第三工作法 是關於創造公司文化,該文化可帶動兩種風氣的形成:不斷嘗試,這需要承擔風險並從成功和失敗中吸取經驗教訓;理解重複和練習是熟練掌握的前提。」

「嘗試和承擔風險讓我們能夠不懈地改進工作系統,這經常要求我們去做一些與幾十年來的做法大不相同的事。一旦出了問題,不斷重複的日常操練賦予我們的技能和經驗,令我們可以撤回至安全區域並恢復正常運作。

必要的做法包括營造一種勇於創新、敢於冒險(相對於畏懼或盲目服從命令)以及高信任度(相對於低信任度和命令控制)的文化,把至少20%的開發和IT運維周期劃撥給非功能性需求,並且不斷鼓勵進行改進。」

From: [美] 金(Gene Kim ),[美] 貝爾(Kevin Behr),[美] 斯帕福德(George Spafford). 「鳳凰項目一個IT運維的傳奇故事.」。


本文轉載自我的Blog:

DevOps工作三步法:第一步流動原則?

martinliu.cn圖標
推薦閱讀:

DevOps很難?這裡有一份11大最流行的開源DevOps工具清單
DevOps團隊交付了什麼?
[資料下載]首屆阿里巴巴研發效能嘉年華回顧(含PDF下載、視頻回看)
一周IT博文精選TOP10(第九期)
DevOps發展的九個趨勢

TAG:DevOps | 持續集成CI |