如何衡量持续交付
在實施持續交付時,穩定性和吞吐量是兩個可衡量的度量指標。這些度量指標有助于降低不確定性,幫助你做出更好的決策,讓整個持續交付過程不偏離正確的方向。
\\持續交付獨立咨詢師Steve Smith將在精益敏捷蘇格蘭2017大會上呈現一個關于如何衡量持續交付的演講。大會將于10月4號至6號在愛丁堡召開。
\\InfoQ采訪了Smith,并從他那里了解到了一些信息,比如實施持續交付為什么會如此困難、為什么說度量指標有助于實施持續交付以及該用到哪些度量指標、他從英國政府部門使用度量指標這一實踐當中學到了什么、Google的SRE概念“錯誤預算(error budget)”與他的持續交付度量指標有什么聯系。
\\InfoQ:實施持續交付為什么會如此困難?
\\\Steve Smith:有兩部分人在實施持續交付——一部分人知道它很難,另一部分人則否認這一點。持續交付的難點在于,你試圖在組織中引入大量的技術和組織變革。
\\實現變更的自動化并不難,比如自動化數據庫遷移或事后故障檢測。工具的選擇也不難——很多工具都很強大,只要你不去選擇最糟糕的那個就好。難就難在如何在組織的約束當中應用這些變更。每個組織的持續交付都不一樣,在一開始就要意識到這一點。
\\\InfoQ:度量指標對實施持續交付有什么幫助?
\\\Smith:度量指標有助于降低不確定性,幫助你做出更好的決策。你因此可以了解到你的實施過程是否偏離了正確的方向。
\\我一般會建議我的客戶先從Improvement Kata開始,創建可迭代的周期,逐步改進當前的工作方式。但在你暢想愿景時,你怎么知道愿景離現實有多遠?當你想要建立下一個改進里程碑的時候,你怎么知道該怎樣設定目標?當你完成自動化數據庫遷移的時候,你怎么知道它是否給當前的狀態帶來了改進?
\\度量指標無法回答這些問題,不過它們可以作為指引,告訴你應該去哪里去尋求答案。我在英國政府的一個重要部門工作了兩年半,我們有60個團隊在實施持續交付。如果沒有度量指標,我們就不知道哪些團隊表現出色,不知道哪些團隊需要我們的幫助,不知道該發揚光大哪些實踐或避免哪些不好的實踐。有了這些度量指標,我們就知道需要與哪些團隊展開溝通以及該溝通些什么。
\\\InfoQ:你建議應該衡量哪些度量指標?
\\\Smith:持續交付就是要改進穩定性,加快發布速度,所以毫無疑問,你需要衡量穩定性和速度。這兩項指標雖然不是很直觀,但要衡量它們并不難。在“How To Measure Anything”這本書中,Douglas Hubbard描述了如何使用澄清鏈(clarification chain)來衡量無形的東西——創建有形的資產并將其與相應的度量指標聯系在一起。
\\對于我們來說,我們已經知道該衡量哪些指標了。DevOps年度報告中,Nicole Forsgren、Jez Humble等人陳述了組織在實施持續交付過程中是如何改進穩定性和吞吐量這兩項指標的。他們通過失敗率(Failure Rate)和失敗恢復時間(Failure Recovery Time)來衡量穩定性,通過交付時間(Lead Time)和頻率(Frequency)來衡量吞吐量。從2013年開始,我就很看好Nicole喝Jez在這方面所做的工作,而且我也深入研究過這些指標與持續交付之間的關系。所以我建議衡量這兩項指標。
\\\InfoQ:在英國政府部門實施持續交付的過程中,你學到了什么?
\\\Smith:我從中總結了一個經驗,不借助度量指標實施持續交付就好比在生產環境中沒有監控措施。沒有度量指標的指引就好像無頭蒼蠅到處亂撞。你無法知道哪些變更被成功實施,需要將其發揚光大,哪些是失敗的,需要盡快回退。
\\在這個政府部門里,我們創建了一個內部網站用于展示每個團隊和服務的穩定性和吞吐量度量指標。借助這些,我們就知道該與哪些團隊展開溝通,也了解到了一些不尋常的問題。例如,有一個團隊在短時間內大幅改進了部署的穩定性,但他們卻不知道自己做了哪些事情讓穩定性獲得提升的。而實際上是因為他們構建了自己的日志和監控儀表盤。我們后來把他們儀表盤的JSON文件抽取出來,并開發了一個DSL用于生成相同的JSON,把它推廣到所有的團隊。幾周之后,很多團隊向我們反應生產環境的服務運維變得更加容易了。
\\\InfoQ:你是如何理解Google SRE概念“錯誤預算”的?它與你的持續交付度量指標有什么關系嗎?
\\\Smith:“Site Reliability Engineering”這本書寫的非常好。Betsy Beyer等人將可靠性定義成MTBF和MTTR的功能之一,這個與將持續交付定義成失敗率和失敗恢復時間的功能之一有著異曲同工之妙。
\\錯誤預算是一個很好的概念。我總是建議產品經理定義好自己的運營需求,包括產品的可靠性。如果他們衡量嚴格的發布穩定性和吞吐量,并在穩定性低于某個閾值的時候阻止自動部署到生產環境,那一定會很有意思。我見過一些公司對構建過程中的靜態分析、OWASP測試進行打分。不過我沒有見過對部署穩定性進行打分,但我希望能夠看到這樣的事情發生。
\\\查看英文原文:How to Measure Continuous Delivery
總結
- 上一篇: 以ActiveMQ为例JAVA消息中间件
- 下一篇: PHP7 学习笔记(六)403 Forb