今年九月初參加完 DevOps 2015 之後,有感而發,寫了兩則 tweets:

說實在的,打從 1999 年 Kent Beck 經典著作 Extreme Programming Explained 問世,整個軟體文化就被徹底分裂成兩個國度。以 agile best practices 出發的國度,不斷演化至另一個國度難以企及的高度。 — Quote: 2015-09-03 Tweet #1

這個時代,如果還覺得 DevOps 是 mission impossible,可以說,連 1999 年的小團隊水準都達不到。或許該回頭蹲馬步,好好思考 Extreme Programming Explained 裡面講的幾個 best practices,有哪些可以嘗試看看。 — Quote: 2015-09-03 Tweet #2

Extreme Programming Explained 書中列的 best practices 很多。有些與組織文化及流程息息相關,不見得一開始就能說服眾人採用。其中,我覺得最立竿見影的,與組織文化流程互斥最少的,就是這兩項:

  • Ten-Minute Build
  • Continuous Integration

說來容易,做起來可也得花一番工夫。但這世界上,有些打地基的事,不做,就像不會基本代數,就註定與微積分的境界絕緣。

CI,就是幫助你打好地基,開啟另一扇窗的手法。

打地基的切入點

初入這個新國度的人,面對 AgileCICDDevOpsScrumTDD⋯⋯太多神奇咒語,容易一頭霧水,搞不清楚優先順序。

我不認為有放諸四海皆準的萬靈丹特效藥。如果真的要挑出一項切入手法,就從 CI 開始吧。

CI (continuous integration),是一條不會過度陷入工具至上的 “cargo cult” 迷思,又能從某些角度有效撼動既有的流程制度。難怪梅姐 (Marissa Mayer) 會選擇用這條角度切入:

「沒有持續交付 (Continuous Delivery),專案不得上線,我不是在說笑。」Yahoo 執行長 Marissa Mayer 的宣言。
— Quote: 【誰說大象不能實現 DevOps】雅虎 97% 專案擁抱持續交付的關鍵

CI,不管你選用的是當紅的自架工具 Jenkins,或託管給 Travis CI(OSS 專案可免費使用),重點是:請踏出第一步。

這不只是行動的第一步,也是照妖鏡、試金石。

初步嘗試 CI,一定會踩到地雷;但你不是第一個踩雷的。我推薦過的好書《笑談軟體工程:敏捷開發法的逆襲》,就徹底討論過該議題了。摘錄一段當時的推薦文:

作者感慨:「在臺灣很多試圖採用敏捷方法但卻槓龜的團隊,缺少『追求技術卓越』的精神很有可能是一個主要的原因。」譬如說,如果沒有扎實的「自動化測試」及「持續整合」工夫,那麼,逐漸累積的「測試債」會讓 sprint 制度破功。當然啦,扎實的基本功並非一蹴可幾,作者也勉勵看過本書卻認為自己辦不到的人:「要『傻的願意相信書本裡所說的』,不要在尚未嘗試之前就先否定。」你願意開始嘗試嗎?
— Quote: iThome 2012年 iT人必看的好書

手頭沒這本書的,不妨看看以下幾則文章:

不過,對「聰明人」來說,「傻得願意相信」可能是頭一個要面對的關卡吧。

能否面對該面對的關卡,決定你能否躍遷到更高的層次:

CI/CD/DevOps 既是條不歸路,更是大躍進之路:一旦踏出第一步,就注定你會不斷接觸遠離平庸的新觀點、新技術。

至於背後是不是跑 agile,反而不那麼絕對了。

屢屢從自己與別人演講、教育訓練、Q&A 中歸納出來的心法……
— Quote: 2015-12-21 Tweet

再強調一次:一旦踏出第一步,就注定你會不斷接觸「遠離平庸」的新觀點、新技術。

所以,為了呼應剛剛的感想,在新梯次的 Ansible Workshop,乾脆帶大家用 Travis CI + Docker 玩一下 CI/CD 好了。因為從今年五個梯次 Docker Workshop 的經驗看來,滿意度最高的實作任務,一直都是 GitHub → Docker Hub 這一段 CI 動線⋯⋯