延續前文,這一系列的文章是將我之前在 C.C. Agile #37 分享的簡報《DevOps: 建造開發維運的跨界之橋》轉換成文章的形式,一方面讓簡報內容能更完整地被分享,另一方面也讓我有地方可以補充一些後續又吸收到的新內容。
本文繼續來談談到底 “What is DevOps”,關於「什麼是 DevOps」目前我看到最多的標準答案是「這個問題目前沒有標準答案。」(2016/9/3 補充更多內容)
於是你就會看到有人開玩笑說「你問十個軟體、資訊領域的專家,什麼是 DevOps,那你會得到十個不一樣的答案。」(來自葉秉哲的演講「Docker 對傳統 DevOps 工具鏈的衝擊」)
而目前的情況也似乎就是如此,你可以在 wiki 上找到 DevOps 的條目,你可以在 Gartner 的報告中看到 DevOps 的相關趨勢,你也能找到各廠商宣稱自己的產品是 DevOps 必備的工具。

但若仔細比較它們對於 “What is DevOps ?” 的描述,你只會得到許多十分類似但卻有些不同的答案。於是又有另一個玩笑出現了「DevOps 是一種 92 共識,認真你就輸了」。

我個人最近在看 DevOps 的新聞與文章,發現了一個現象,早期談 DevOps 的文章,當談到什麼是 DevOps 時,都會直接給一個答案 DevOps 就是 ooxx ⋯⋯;但現在的文章則比較模糊一點,不再那麼斬釘截鐵,甚至有看到文章直接補一句「關於什麼是 DevOps,目前還有許多爭議⋯⋯各家都有自己的意見與詮釋⋯⋯ 」。
所以我才會開玩笑的說「什麼是 DevOps」,標準答案就是「這個問題目前沒有標準答案。」
但各家的定義依然值得我們參考,例如前面提到 Gartner,他們的定義即是
“Gartner defines DevOps as a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach.” (出處 http://www.gartner.com/smarterwithgartner/the-science-of-devops-decoded/) 或 “DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology — especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective.” (出處 [http://www.gartner.com/it-glossary/devops/](http://www.gartner.com/it-glossary/devops/) iThome 的一篇報導《DevOps將顛覆未來IT人角色》中則是怎麼描述 DevOps。 「DevOps開發方法是敏捷(Agile)以及精實(Lean)開發概念的延伸,有別於傳統開發流程,DevOps開發方法打破每個獨立的階段,從需求分析、系統設計、程式開發、安裝測試、後續維護再回到第一階段,形成一個封閉迴圈。 DevOps開發方法要開發人員持續改善並整合不同的階段,加以組織過去任務所發生的事,開發人員需要自動化的工作流程,自動化開發周期的每一個階段,不僅需要自動化測試,還要自動化部署,且提供自動化的數據給所有參與的人,讓所有人可以合作。」 Chef 也有一個它們的簡短定義。 “DevOps is a cultural and professional movement, focused on how we build and operate high velocity organizations, born from the experiences of its practitioners.” (出處 https://www.chef.io/solutions/devops/) 而 Chef 的 CTO 在 Chef Conf 2015 時,則針對這種定義模糊的狀態提出了一個我個人很喜歡的說法,他說「DevOps 就像功夫」。 (出處 https://youtu.be/_DEToXsgrPc)

我個人的解讀如下,團隊與企業在導入 DevOps 的過程,就如同武人學習武功邁向成為功夫大師的路程。因此個人的體質將影響他所適合學習的武功流派,但不管他學的是哪一個流派的功夫,我們都是在往功夫大師之路前進。同樣的每個團隊與企業適合的 DevOps 不一樣,不論如何我們都往 DevOps 之路前進。
同理,每一個團隊與企業的體質(團隊規模、組織架構、企業文化、產品⋯⋯)皆不相同,因此同樣都是往 DevOps 功夫之路前進,每個團隊適合的武功流派也不會完全一樣,甚至對每個團隊而言「什麼是 DevOps」也會有不同的定義與看法。

CALMS
既然大家已經不再執著於 What is DevOps,那關於 DevOps 應該還要知道些什麼呢?又 DevOps 究竟包含了哪些內容?對於這樣的提問,經常可以看到這樣的答案 “DevOps is about CALMS”。

我在以前的文章中也有簡略地提過 CAMS,這次再補上了 L = LEAN。
本文就先在此打住,在接下來的文章再繼續分享 CALMS 每一項的內容,靜待下回分曉。
如果你對於 What is DevOps 還是急著想要瞭解更多,那麼這裡再補充幾個我建議可以優先閱讀的來源。
- AWS 的 What is DevOps 頁面 AWS 目前正在持續的完善他們的 DevOps 產品線,前一陣子推出的 What is DevOps 頁面整理的很完整,是一個用來認識 DevOps 的好地方。
- 來自 agile admin 部落格的文章 What is DevOps ? 文章寫於 2010,但一直有持續更新,包含幾個不同面向討論 DevOps,也是一個值得閱讀的資料來源。