DevOps 和 Agile 的關係是什麼?DevOps 是源自 Agile 的嗎?
我在〈一句話囊括 DevOps 的目標〉文中曾經簡略提過:
DevOps 雖然和 agile 運動有歷史上的臍帶關係,但嚴格來說,沒有遵循《敏捷宣言》四大原則,也是能做 DevOps 的;硬是把兩個議題綁在一起,會限縮 DevOps 論述空間⋯⋯
這種分離主義論點並不是我首創的。iThome 的〈為什麼會出現 DevOps?〉一開頭也提到,DevOps 的源頭不只有 agile 一系:
DevOps 運動承襲自敏捷系統管理 (Agile System Administration) 運動以及企業系統管理 (Enterprise System Management,ESM) 運動。
不過,我還是想替這種論述,找到更權威、更全面一點的溯源分析。
終於,我從 The Phoenix Project 書中找到想要的論述。
The Phoenix Project 這本書,以高德拉特那種極受歡迎的企管小說形式,闡述在一個面臨內部外部危機的 IT 組織中,DevOps 能發揮什麼樣的功效。對這本書的背景有興趣的,請讀讀該書作者 Gene Kim 的訪談文章,或是 Howie 寫的重點整理、Ruddy 寫的導讀。
整本書非常豐富,本篇文章只專門針對該書附錄 “Where DevOps Came From” 進行導讀。
作者如此定調 DevOps:
We refer to “DevOps” as the outcome of applying Lean principles to the IT value stream.
出現一個近年來非常潮的字眼——Lean principles;精實/精益原則。
這些原則,並不是 IT 界所獨有的,而是取經自其他領域,尤其是製造業:
These principles are based on more than a century of sound management practices. However, instead of being applied to the transformation of physical goods, we are using these principles to accelerate flow of work through Product Management, Development, Test, IT Operations, and InfoSec.
所以,DevOps 算是縱貫專案管理、開發、測試、維運、資安等環節的一條鞭精實手法。
在整個 IT 價值鏈中,DevOps 的確受惠於 agile 陣營對於傳統專案管理的顛覆觀點:
DevOps has benefited tremendously from the work the Agile Community has done, showing how small teams operating with high trust combined with small batch sizes and smaller, more frequent software releases can dramatically increase productivity of Development organizations. In fact, many of the key moments in the DevOps history happened at Agile conferences […]
因此,在技術面來說,DevOps 吸納了以下的 agile 元素:
DevOps extends and builds upon the practices of “infrastructure as code” pioneered by Dr. Mark Burgess, as well as continuous integration and continuous deployment (pioneered by Jez Humble and David Farley), which is a prerequisite to achieving fast deployment flow.
不過,從這裡可以清楚地看到,DevOps「向 agile 陣營取經」的元素,多半集中在對「加速部署速度」有直接助益的工具元素上。所以,只是一種選擇性的取經。
另一方面,DevOps 本身也沒有停留在「只向 agile 陣營取經」的階段,仍繼續吸納其他領域的優點。尤其 DevOps 也著重最後一哩路的 “Ops” 這一端,因此,也向其他國度取經:
DevOps also benefits from an astounding convergence of philosophical management movements, such as Lean Startup, Innovation Culture, Toyota Kata, Rugged Computing, and the Velocity community.
有趣的是,近年來,許多人再度向日本學習。Agile 陣營的 Kanban 是一例,DevOps 也師法許多 Lean 精神及作法。DevOps 要角 John Willis 甚至還寫了一篇文章 “Japanese Terms For DevOps Practitioners” 來介紹這些源自日本的時髦詞彙呢。
巨變的年代,或許正如作者所說:
All of these mutually reinforce each other, creating the conditions of a powerful coalition of forces that can accelerate DevOps adoption.
好的東西,會互相吸引,互相融合。屆時,或許就沒有什麼考古的必要;我泥中有你,你泥中有我。就像柯仁傑在〈敏捷和精實的關係 (1)〉一文所說:
早期敏捷愛好者受到精實的觀念的影響,因此在敏捷世界中也常常出現精實製造的說法。
所以敏捷跟精實兩者,在軟體開發世界中已經是混合在一起。如果你在實施敏捷,其實代表你也是在套用精實,兩者是無法很清楚地分開來。