DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧

螞蟻金服移動開發平臺mPaaS發表於2019-03-25

作者:陳正瑋,來自臺灣。目前是臺灣 DevOps 社群組織者,也是《Effective DevOps》繁體中文版的譯者,以及《DevOsp 三十六計》繁體中文版的審校者。 本文摘選於陳正瑋於 3 月 13 日在 CodeHub#1 線上直播分享《DevOps 前世今生》,希望藉助這場分享能夠帶來一些 DevOps 的基本介紹、科普知識。

直播回顧地址t.cn/ExdGwn6

曾經有人說過這樣的一句話,“IT Doesn't Matter.”,IT 似乎和水、電力一樣變成一種基礎設施、一種成本中心,除了提供基礎資源之外,IT 似乎不再重要,不需再被人們特別拿來一提。但真的是如此嗎?

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
事實上 IT 變得越來越重要,大家應該也聽過這句話,軟體正吃掉世界。這句話其實有更新版,軟體正“持續地”吃掉世界!現在各式各樣的企業,都正在轉變成為一間軟體公司、IT 公司。IT 及軟體依然“持續地”在各個行業發揮它的影響力。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
既然各個企業都在轉變為軟體公司,那就讓我們從軟體開發涉及的組織部門、團隊來看一看。首先,你一定會有一個開發/研發部門,但只有研發部門是不夠的,往前會有業務部門,再往前則是客戶;往後會有運維部門,運維部門負責運維工作,讓客戶能順暢地使用服務。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
不過我們都知道,研發一個軟體、產品,想要一帆風順,一次就打中客戶的心是很難的。畢竟,現在是一個高度競爭的時代,我們唯一確定的事情就是,市場總是充滿著不確定性與變化的。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
從客戶這邊,我們可以得知市場是快速變化的。這也會反映到業務本身,產品與業務需求同樣快速變化。而常見的一個狀況是“業務與研發”之間經常具有溝通、合作上的問題。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
於是,敏捷(Agile)出現了,敏捷宣稱能幫助研發“快速響應變化”,敏捷也幫助業務與研發之間,能擁有更良好的溝通協作。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
當研發端敏捷之後,研發和運維之間又有另一個衝突發生。研發想要快速地響應變化,但對運維來說,他們會覺得每次釋出新版本總是有一堆問題需要收拾善後,所以最好沒事不要釋出新版本,能夠一直維持在一個安全且穩定的狀態。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
於是 DevOps 出現了,DevOps 解決了研發與運維之間的衝突,幫助企業解決了研發和運維之間的溝通與協作問題。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
讓我們換個方式說明,如果我們用軟體開發流程來看,研發和運維只有在軟體 release 的時候雙方才會有互動與交集。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
但真實狀況卻是這樣的,兩方其實根本是溝通互動不良的,就像中間有一道牆。而這道牆的產生,可能是因為組織規模日漸擴大、專業能力的分工、或前面提過的成本中心的觀念等等造成的。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
因此當研發這一端已經開始敏捷,能夠迅速響應變化。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
我們不禁想問兩個問題,首先是“運維,有可能也敏捷起來嗎?”
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
以及,阻礙了研發和運維的這道牆壁,是不是有可能打破它?
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
因為這面看不見的牆,就會發生這張圖的狀況:研發將軟體交付之後就棄之不顧,但運維那邊服務已經火燒起來了,房子都快燒光了,但是研發卻說這和他們沒關係,你們運維自己要處理好。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
所以我們一定要想辦法打破這道牆!而 DevOps 的出現,也正是告訴我們,這道ƒ牆必須被打破!
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
既然 DevOps 宣稱能解決這兩個問題,那麼它究竟是何時出現的?關於 DevOps 的誕生,我們可以從幾個歷史事件來談。 首先是 2008 年的“Agile 2008 Conference”,在當時目前被人稱為 DevOps 之父的 Patrick,在當年想要找人討論“Agile Infrastructure”。 這個歷史事件的重大意義在於,這代表了在 2008 年,已經開始有人們關注我們前面提及的這兩個問題“如何打破研發與運維的那道牆”和“如何讓運維敏捷”。

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧

接著的重要事件則是隔年 2009 O'Reilly Velocity 技術大會上,Flickr 發表了一個演講,說明他們是如何做到一天部署 10 次。 當然在 10 年後的現在,一天部署十次可能不是什麼新鮮事,但在 2009 年,肯定是一件創舉。而這場演講現在也被人們公認為是世界首件 DevOps 成功案例。

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
由於前兩個事件的緣故,DevOps 之父 Patrick 決定要舉辦一場名為 DevOpsDays 的活動,讓大家一起好好的聊一聊這些話題。 當然這場活動舉辦完畢之後,在網際網路上的討論也隨之火熱起來,人們開始在 Twitter 上討論這場活動及相關的主題。然因為 Twitter 有字數限制,為了節省字數,他們就將 DevOpsDays 縮寫為 DevOps,於是 DevOps 這個字正式出現在這個世界上。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
除此之外,後續也陸續有更多人響應,持續地討論 DevOps 相關主題,並且陸續有相關的書籍出版上市,像是大家都知道的《持續交付》與《鳳凰專案》。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
所以由歷史來看,DevOps 確實是一場 IT、軟體研發行業的轉型運動,而且是一場由社群自主發起的運動。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
但除了前面的這些歷史事件之外,其實 DevOps 能火熱起來,還有著更多原因。我個人認為這場運動的火熱,它更像是一場天時、地利、人和的結果,它是由更多的東西累積而來的,不然不可能因為一場 DevOpsDays 就讓全世界都跟著火熱討論。 如我們回顧更多的歷史,不可諱言的,隨著敏捷開發誕生的各種重要觀念、方法,推了 DevOps 一把。當然,各種優良的軟體工程觀念與方法,也推了 DevOps 一把,像是持續整合、持續交付…… 除了敏捷之外,看板方法、精益(Lean)對於 DevOps 也是非常重要的。甚至你可以從精益再往前追溯到 TOC 限制理論 或 PDCA 戴明環。 除了這些觀念與實踐方法之外,技術與工具的發展也同樣重要。版本控制系統(例如:git)、虛擬化技術、容器化技術、組態配置管理工具、雲端服務,這些技術也都同樣推了 DevOps 一把。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
所以真要說為何 DevOps 能夠火熱,其實是因為在 2009 年,已經有這麼多歷史寶藏的累積,這才令DevOps 能從 2009 年開始一飛沖天,火熱起來!
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
前面說了這麼多,我們中場休息一下,來個段子。 我們說在一千個讀者眼中,就有一千個哈姆雷特;同樣地,如果你詢問一千位 DevOps 專家,你可能會得到一千零一種相似但有些微差異的 DevOps 定義。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
所以到底什麼是 DevOps?它其實就是網際網路上的一個標籤,當年它只是人們為了在網際網路上能夠討論 DevOpsDays 相關的內容,而透過 #devops 這個標籤,將人與人、將研發和運維的兩派人馬串連再一起。 但隨著 DevOps 在網際網路上越來越火熱,於是各方人馬,為了自己的目的(例如:做產品的想賣產品,社群的人想要更廣大的推廣它),於是大家開始為它新增了更多的定義。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
既然 DevOps 難有一個標準的定義,因此這裡我覺得,我們不妨換一個角度來談一談 DevOps 的內涵。讓我們一起思考一個問題“一間企業要如何才能生存下去?”
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
這裡提供一個答案,企業能否存活的關鍵在於“企業能為你的顧客及使用者帶來什麼價值?”唯有能夠持續地將價值交付給使用者的企業,才能贏得市場,企業才能持續生存下去。 按這個思路,我們很容易地能夠理解,為何不論是研發或運維,企業的每個部門都必須具備能夠響應變化的能力,這都是為了滿足一個目標“交付價值”!
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
所以“價值”是非常重要的東西,那什麼是價值呢?簡單來說,就是我們想要的東西。 價值可能是企業關注的“商業價值”與“使用者價值”,亦可能是實際的資金、可能是市場佔有率。對使用者而言可能是你這個軟體好不好用,操作起來使用者體驗好不好。價值可能是很多不同的東西,涉及不同的層面,但用簡單一句話來說價值就是“我們想要的東西”。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
因此我們可以說 DevOps 為我們解決了前述的兩個問題,它幫助企業讓研發和運維能成為一個高效率的團隊,幫助企業能夠交付價值給使用者。 也正是如此,我們即能理解為何談到 DevOps,很多人在討論的內容其實是敏捷、精益,因為敏捷與精益背後的價值觀、精神,也正與“交付價值”息息相關。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
故此,我們可以說“順暢和高品質地交付有用的價值”,即“消除浪費”、“使價值交付最大化”,即是藏在 DevOps 背後最重要的一項價值觀。 這也就是為何在討論 DevOps 時,不只談論技術工具,也會談到文化層面的議題;人們不只會談論該使用哪種工具來達成持續整合,更會談到何為良好的團隊文化,如何讓團隊能擁有良好的協作能力與溝通能力。 因為,似乎只要是能夠幫助企業“順暢和高品質地交付有用的價值”的任何主題,都可以被包含在 DevOps 之內。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
談完了 DevOps 的過去,接著讓我們快速地看一下 DevOps 的現在,看看現在大家在談到 DevOps 時,都在討論什麼。 如果你隨意的百度搜尋 DevOps 相關的圖片,那麼你很可能會搜尋到的是各式各樣的“智慧運維平臺”、“自動化運維平臺”這一類的內容。確實這些“平臺”對於 DevOps 是重要的,而且當你徹底的解決研發和運維之間的協作問題、流程問題時,往往其中一項成果即是這一類的平臺。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
提到了流程,有些人在討論 DevOps 時,會從組織工作流程的持續改進的角度切入。例如在《鳳凰專案》和《DevOps 實踐指南》中提到的三步工作法。這裡就不詳述三步工作法的內容,有興趣的同學可以直接看看這兩本經典好書。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
另外,有些人會談 CALMS(Culture、Automation、Lean、Measure 及 Sharing),或者更精簡一點,只談“文化”、“自動化”和“資訊透明度”,在《Effective DevOps》這本書則是從“協作”、“親和力”(Affinity)、“工具”及“擴充套件”(Scaling)切入討論。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
時間有限,這裡我也用“自動化”、“資訊透明度”和“文化”來介紹 DevOps。首先說明的是 Automation 自動化。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
自動化,以結果而論,可以說就是讓軟體研發至運維流程中的各個環節能夠“又短又快”,併為企業帶來一些實質的益處,像是提升可靠性、減少人為錯誤、提升生產力、減少浪費……而在這背後,你會發現跟精益的精神是密切相關的。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
談到“自動化”,多半會提到另外三個詞,分別是“持續整合”、“持續交付”和“持續部署”,但需要注意的是這三個詞並非僅僅只包含著技術和工具,它們更是一種實踐方法,也就是說並非架設了 Jenkins 就代表你已經匯入或實踐了“持續整合”或“持續交付”,更重要的是研發團隊在工作的方法及流程,甚至在價值觀上是否擁抱這些實踐方法所包含的關鍵思維。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
接著是“透明度”,或者應該說是“資訊透明度”。包含 Monitor、Metrics、Analytics。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
其實也可以換句話說,即是讓資料(資訊)說話。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
以軟體研發至運維整個流程來看,每一個環節都有許多值得被視覺化、度量,提升其透明度的資料,DevOps 意味著我們要讓這些資料(資訊)說話,成為企業持續改進的依據。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
因此透明度,包含許許多多層面,不僅是與使用者相關的需求反饋、專案管理的狀態、運維的各種資料及日誌,甚至是每位員工擁有的專業知識都需要提升透明度,避免人員成為組織其中一項單點故障的原因。(如只有某位員工擁有某些特定的技能與知識,一旦該員工出了狀況,也可能會造成組織無法順利運作。)
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
最後,DevOps 是一種文化,DevOps 與文化很有關聯。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
文化,是由人與人所形成的。而 DevOps 之父同樣也曾說過“DevOps is a human problem.”
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
因此我們不僅是要打破研發和運維之間的那道牆,我們更要讓整個企業都擁抱一種名為 DevOps 的良好文化。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
就如我們在前面 DevOps 歷史提到的,在 2009 年 Flickr 即能做到一天部署十次,我們除了讚賞這件事之外,別忘了仔細看一下他們演講的副標題“Dev and Ops Cooperation”。 “一天能夠部署十次”是他們的成果,但要達成這件事的關鍵在於“讓研發與運維能夠協同合作”。由此看來,DevOps 確實是“human problem”,DevOps 確實和組織文化息息相關。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
文化的形成需要組織從上到下的支援、由下到上共同的努力。DevOps 擁抱多種優良的文化,像是“鼓勵創新”、“容許犯錯”、“持續改善”、“接納多元觀點”、“當責”、“不究責”(對事不對人)……等。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
如果你擁有一些企業經營管理的背景,那麼你可能會發現,DevOps 擁抱的這些優良文化,並非是首次被提倡於企業界。其實在企管、企業經理人、航空或醫療行業中,他們亦早已提出類似的觀點。所以這些優良文化,並非是一些空穴來風的東西,而是不同行業的專家們共同的看法與見解。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
談了這麼多 DevOps 的內容,我們可以發現當人們在討論 DevOps 時,其實包含了多種層面,我們可以從價值觀、原則、方法、實踐、工具、歷史或運動各種層面來討論 DevOps。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
讓我們再舉一個範例,這張圖是由 Gartner 提出的 DevOps Model。(這已經是舊版了,Gartner 有提出更新版本) 你可以看見,Gartner 眼中的 DevOps 包含 Culture、Process、People 及 Technology 四個部分。這四個部分彼此相關聯。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
說明到此,相信各位都能理解到一件事,即是現今人們口中的 DevOps 其實是一個包含“人/文化”、“流程”及“技術/工具”的巨大議題!
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
最後,針對“工具”,特別要介紹一個不一樣的觀點,即是“工具是文化的加速器”。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
DevOps 必然包含了技術與工具層面的議題,像是常見的 CI / CD 工具的技術選型,或 Monitor 工具的技術選型……等。 但除了探討工具實際運用的細節之外,我們別忘了“工具”是為誰提供“服務”、是誰在使用這些“工具”。因此,選用什麼工具、工具該如何操作並不是工具最重要的關鍵重點,真正的重點在於“工具之於人們的價值”。 如果你今天匯入了 Jenkins,但團隊內卻沒有人去使用它,那它便毫無價值,同理 Jenkins 可以替換成任何其他的工具、技術,甚至是實踐方法,像是看板、Agile、GitLab、Jira、容器……,無論替換成什麼,務必都要思考這一件事“工具之於人們的價值”。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
別忘了,其實“工具與文化息息相關”!試著去思考一下康威定律與逆康威定律吧!
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
最後一個部分,我們來聊一聊 DevOps 的未來。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
首先,SRE 將會是許多企業擁抱 DevOps 的一種實踐方向。畢竟這可是有谷歌掛保證的,谷歌在《SRE》書中提到了 SRE 是他們實踐 DevOps 的具體實踐。這其中包含了技術及文化層面的實踐。 並且當企業持續改善,最終擁抱了 AIOps、自動化運維時,終究會遇到谷歌曾經面臨的困境,於是很自然的企業亦會向著 SRE 的方向前進。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
DevOps 的另一項未來發展,即是成為一種人人只要付費就能擁有的平臺或服務,而目前各大雲端供應商也都已經推出自家的 DevOps as a Service。如果花一點小錢就能迅速搭建好一個環境,幫助企業解決研發和運維之間協作流程的諸多問題,相信對於尚未開始匯入 DevOps 的企業而言,應該是一個可以考慮的選項。 當然,還是要再次提醒,你並不會因為匯入了一套工具、平臺或 DevOps as a Service 就能聲稱企業已經成功匯入 DevOps,工具的架設與匯入只是開始。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
DevOps 將會成為一種“認證”與“標準”。 對於期望擁抱 DevOps 的企業而言,認證與標準可以成為一項助力,因為在面對 DevOps 所涉及的如此廣大範圍的內容,我們很容易因此迷失方向。但認證與標準,則能為我們提供一份指南,成為我們的道標,讓你有跡可循開始你的 DevOps 旅程。 但同樣的亦要提醒,“What you measure is what you get.”,認證與標準應該要成為你的助力,而不要倒果為因,為了認證而去認證,為了標準而去迎合標準。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
最後,DevOps 恐怕將會消失,或同化在每個企業的基因當中。 就像先前一項研究調查,現今國外的軟體研發公司絕大多數皆已經擁抱敏捷(Agile),敏捷似乎已經逐漸成為一種習以為常的標準作法。同樣的,DevOps 亦有往此發展的趨勢,已有越來越多的企業主動擁抱 DevOps。

今晚談了非常多的內容,最後快速做個回顧。

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
如前面的段子,一千個 DevOps 專家,會有一千零一種 DevOps 定義,如今 DevOps 的標準定義已經不是人們討論的重點了。

現在大家在談的都是實戰經驗,到底在提升企業的生產力、打造高效企業、提升企業交付價值的能力上,你做了些什麼?在你宣稱匯入 DevOps 的過程中,你實踐了哪些方法?又是如何實踐的?

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
狹義的來看 DevOps,它似乎只是為了解決研發和運維之間的衝突與協作問題,但如果我們提升至廣義的角度來看,廣義的 DevOps 是將整個組織都包含在內,整個組織都應該共同為了“交付價值”而“持續改進”。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
畢竟一間組織,不該如上圖左側這樣一層壓榨下一層部門,而應該是右側的金字塔一樣,每個部門都同等重要,缺了一角這個金字塔的結構都有可能因此崩潰。
DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
“DevOps is a human problem.”,DevOps 包含“人/文化”、“流程”及“技術/工具”三個層面,這些都一再提醒我們除了關注企業內的“技術債”,也別忘了處理“文化債”。

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧
要知道“人們並不抵制改變,他們抵制的是被改變。” 唯有形塑出良好的文化,才能為企業帶來長遠深邃的改變,才能讓企業長久擁抱“持續改進”,持續地向使用者“交付價值”。

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧

最後的最後,再說一次別忘了“消除浪費,交付價值”,一起邁向這趟 DevOps 旅程吧!

號外:臺灣 DevOps 社群將於今年 10 月舉辦 DevOpsDays Taipei 2019,目前正在徵求講師與議題,歡迎感興趣的朋友投稿:devopsdays.tw/cfs

| mPaaS 第一期線下沙龍 CodeDay#1 開放報名中:

  • 活動主題:移動端高效能架構演進與跨平臺開發實踐

    本期邀請支付寶移動端技術專家,與大家面對面一同探討在跨平臺開發下的高可用、高效能架構演進與跨平臺開發、動態化更新實踐。

  • 報名方式:點選「閱讀原文」進入活動頁進行報名;無法到現場的同學可通過釘釘搜尋群號“23124039”立即加入技術交流群,屆時獲取直播地址,並有機會與講師在群內深度交流。

期待你的參與。

DevOps 前世今生 | mPaaS 線上直播 CodeHub #1 回顧

相關文章