什么是 DevOps?看這一篇就夠了!
本文目錄
一、前因
二、記憶
三、他們說……
3.1、Atlassian 回答“什么是 DevOps?”
3.2、微軟回答“什么是 DevOps?”
3.3、AWS 回答“什么是 DevOps?”
四、DevOps 文化
4.1、什么是文化?
4.2、什么是 DevOps 文化?
4.3、領(lǐng)導(dǎo)與激勵(lì)
五、總結(jié)
一、前因
我是一個(gè)“DevOps 工程師”,于是總會(huì)遇到有人問我:“什么是 DevOps?”
這個(gè)問題看似特別基礎(chǔ),基礎(chǔ)到很多人懶得回答。但其實(shí)冷靜一秒,問自己一句“什么是 DevOps?”可能每個(gè) DevOps 工程師都知道“什么是 DevOps”,但是他們給出的答案不盡相同。
所以我會(huì)怎么回答這個(gè)呢?下面我們展開來聊聊。
特別強(qiáng)調(diào):本文僅代表我個(gè)人現(xiàn)階段的粗淺認(rèn)知,本文觀點(diǎn)不代表思碼逸公司也不代表 DevStream 團(tuán)隊(duì)。
二、記憶
我第一次看到 DevOps 這個(gè)詞,大概是在2016年的秋天。那時(shí)候我在 H3C 從事云計(jì)算研發(fā)相關(guān)工作。記得我接到的第一個(gè)任務(wù)是研究 OpenStack 的一個(gè) CICD 相關(guān)的組件,叫做 Solum,那是我第一次知道什么是 CICD,第一次看到 DevOps 這個(gè)詞。沒錯(cuò),只是看到 DevOps,但是我無法記住 DevOps 的定義。或者說,當(dāng)時(shí)我甚至沒有找到一個(gè)清晰易懂的關(guān)于 DevOps 的定義。可能很多人和我當(dāng)年一樣,對 DevOps 的印象,就是 Dev + Ops。
2018年的夏天,我開始在太保成研任云平臺 PaaS 組負(fù)責(zé)人,兼任太保云 CMO(Configuration Management Officer) 一職。沒錯(cuò),我依舊是一個(gè)“云平臺研發(fā)工程師”,但是再一次與 DevOps 結(jié)緣。太保云的 CMO,簡單說就是負(fù)責(zé)太保云平臺的源碼管理、研發(fā)協(xié)作流程、版本管理、CICD、制品管理、發(fā)版流程等等。這個(gè)時(shí)候我其實(shí)已經(jīng)開始研究一些 DevOps 相關(guān)的工具了,比如 GitLab、Jenkins、禪道、Artifactory、Nexus 等等;同時(shí)也在主導(dǎo)一些 DevOps 文化層面的建設(shè),比如怎樣的模式或行為在團(tuán)隊(duì)里是被鼓勵(lì)的,怎樣的事情是被禁止的…… 不過我只是在制定規(guī)則,而沒有意識到這是“文化”。總之,那幾年我也算是投身于 DevOps,致力于提升團(tuán)隊(duì)研發(fā)效率、交付效率與交付質(zhì)量,但是同時(shí)我沒有去仔細(xì)思考過“什么是 DevOps?”這個(gè)問題,我也沒有刻意去思考過自己是不是在玩 DevOps。
去年(2021年)年底,我加入了思碼逸,我的 title 第一次從“xxx 云平臺研發(fā)工程師”變成了“xxx DevOps 工程師”(xxx 表示初級、中級、高級等)。那天我開玩笑說:“以前,我在云原生領(lǐng)域兼職玩 DevOps;以后,我在 DevOps 領(lǐng)域兼職玩云原生”。
好吧,這會(huì)我是名正言順的“xxx DevOps 工程師”了,我總該知道“什么是 DevOps”吧!
三、他們說……
我們先來看一下幾家典型的公司是如何定義他們眼中的 DevOps 的,包括:
Atlassian(代表產(chǎn)品:Jira、Trello 等) 微軟 AWS
3.1、Atlassian 回答“什么是 DevOps?”
Atlassion 有一篇題為DevOps的文章,里面有這樣一句話:
DevOps is a set of practices, tools, and a cultural philosophy that automate and integrate the processes between software development and IT teams. It emphasizes team empowerment, cross-team communication and collaboration, and technology automation.
我嘗試翻譯一下:DevOps 是一系列實(shí)踐、工具和一個(gè)融合開發(fā)及 IT 團(tuán)隊(duì)的文化理念。DevOps 強(qiáng)調(diào)賦能團(tuán)隊(duì)、跨團(tuán)隊(duì)溝通與協(xié)作以及技術(shù)自動(dòng)化。
可以看到 Atlassian 給的等式是:
DevOps = 工具 + 實(shí)踐 + 文化
Atlassian 還提到一個(gè) DevOps 團(tuán)隊(duì)包含了開發(fā)和 IT 運(yùn)維,大家一起協(xié)作,共同參與產(chǎn)品的整個(gè)生命周期,一起為提升軟件質(zhì)量和加速軟件開發(fā)過程而努力。DevOps 模式下開發(fā)和運(yùn)維不再是獨(dú)立的“筒倉”,而是幾乎被整合成一個(gè)團(tuán)隊(duì),這個(gè)團(tuán)隊(duì)的工程師技術(shù)棧會(huì)覆蓋開發(fā)、測試、運(yùn)維等。同時(shí) DevOps 團(tuán)隊(duì)會(huì)利用一系列的 DevOps 工具鏈來實(shí)現(xiàn)諸如持續(xù)集成、持續(xù)發(fā)布、流程自動(dòng)化、高效協(xié)作等等目的。
Atlassion 給的“無窮環(huán)”長這樣:

用“無窮環(huán)”表示 DevOps 生命周期,是因?yàn)?DevOps 的根本理念是“持續(xù)”,也就是“沒有終點(diǎn)”。Atlassion 將整個(gè) DevOps 生命周期分成6個(gè)階段,分別是:
計(jì)劃(Plan) 構(gòu)建(Build) 持續(xù)集成和部署(或者交付)(Continuous Integration and Deployment or Delivery) 監(jiān)控和告警(Monitor and Alert) 運(yùn)維(Operate) 持續(xù)反饋(Continuous Feedback)
另外從這個(gè)環(huán)里我們還能看到 Atlassian 想強(qiáng)調(diào)溝通與協(xié)作是貫穿 DevOps 生命周期全過程的。
3.2、微軟回答“什么是 DevOps?”
微軟這篇 Introduce the foundation pillars of DevOps: Culture and Lean Product 我特別喜歡!這個(gè)標(biāo)題的意思是“介紹 DevOps 的基柱:文化和精益產(chǎn)品”。
文章第一句話:
DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.
DevOps 是人、過程和產(chǎn)品的結(jié)合,使能持續(xù)地向終端用戶交付價(jià)值。
微軟還提到:
Typically, the goal for Development is to deliver more features faster, and the goal of Operations is to achieve better system stability. DevOps aligns these disciplines by using a framework of best practices proven to increase speed to market while improving system stability.
多數(shù)情況下,開發(fā)的目標(biāo)是快速發(fā)布更多的新特性,而運(yùn)維的目標(biāo)是保證更高的系統(tǒng)可用性。DevOps 通過切實(shí)可行的最佳實(shí)踐體系來拉齊這兩個(gè)目標(biāo),在提升系統(tǒng)穩(wěn)定性的同時(shí)加速產(chǎn)品交付到市場的速度。
這里微軟可以看到微軟給的第一個(gè)等式:
DevOps = 人 + 過程 + 產(chǎn)品
然后微軟從“人 + 過程 + 產(chǎn)品”進(jìn)一步提煉了 DevOps 的4大基柱:文化、精益產(chǎn)品、架構(gòu)和技術(shù)。
也就是:人 + 過程 + 產(chǎn)品 -> 文化、精益產(chǎn)品、架構(gòu) + 技術(shù)
微軟給的“無窮環(huán)”長這樣:

圖里描繪的 DevOps 生命周期還是分成6個(gè)階段,分別是:
計(jì)劃(Plan) 構(gòu)建(Build) 持續(xù)集成(Continuous Integration) 部署(Deploy) 運(yùn)維(Operate) 持續(xù)反饋(Continuous Feedback)
外加貫穿整個(gè) DevOps 生命周期全過程的“協(xié)作(Collaboration)”。
在圖外,微軟還定義了對其而言 DevOps 的8大能力:
持續(xù)計(jì)劃(Continuous Planning) 持續(xù)集成(Continuous Integration) 持續(xù)發(fā)布(Continuous Delivery) 持續(xù)運(yùn)維(Continuous Operations) 持續(xù)質(zhì)量(Continuous Quality) 持續(xù)安全(Continuous Security) 持續(xù)協(xié)作(Continuous Collaboration) 持續(xù)改進(jìn)(Continuous Improvement)
每次看到這里我總覺得微軟的圖該更新一版。
另外微軟有一句特別有深度總結(jié):
What is new? Continuous Everything. The process is a journey and requires a growth mindset to continually evolve and improve.
“Continuous Everything”,鏗鏘有力!微軟強(qiáng)調(diào) DevOps 過程是一段沒有終點(diǎn)的旅途,要求我們抱著成長的觀念模式,持續(xù)地改進(jìn),永不滿足。
3.3、AWS 回答“什么是 DevOps?”
不難猜到,AWS 也有一篇文章來回答“What is DevOps?”
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity.
DevOps 是文化理念、實(shí)踐和工具等的組合,能夠提升一個(gè)組織快速交付應(yīng)用和服務(wù)的能力。
這里 AWS 給了一個(gè)等式:
DevOps = 文化 + 實(shí)踐 + 工具
不過這篇文章里 AWS 不落俗套,沒有畫一個(gè)自己的“無窮環(huán)”,而是給了這樣一張圖:

這里提到了:
構(gòu)建(Build) 測試(Test) 發(fā)布(Release) 監(jiān)控(Monitor) 計(jì)劃(Plan)
還可以看到這個(gè)“交付管道”和“反饋環(huán)”連接的是“企業(yè)”和“客戶”,可見 AWS 希望強(qiáng)調(diào)“DevOps 的目的是更快地向客戶交付”。
四、DevOps 文化
我曾一度片面以為 DevOps 要解決的問題就只是工具問題,也就是如何選擇或者開發(fā)好用的 DevOps 工具 or 平臺,從而提升企業(yè)內(nèi)部整個(gè)研發(fā)生命周期的運(yùn)行效率。不記得是哪一天,我突然有一個(gè)強(qiáng)烈的想法:工具只是工具而已,文化建設(shè)才是成敗的關(guān)鍵!
文化決定了我們?nèi)绾稳プ鍪拢ぞ邲Q定了,決定了啥?可能啥也決定不了。因?yàn)槲艺J(rèn)為工具也是被文化所決定的。
4.1、什么是文化?
簡單說,文化就是一個(gè)組織的社交遺產(chǎn),也就是一個(gè)組織對于其成員的各種行為的響應(yīng)模式。
比如當(dāng)我們說一個(gè)企業(yè)有“加班文化”時(shí),其實(shí)是在說在這個(gè)企業(yè)內(nèi),員工加班會(huì)得到獎(jiǎng)賞,而不加班會(huì)受到懲罰。或者我們說一個(gè)企業(yè)是“狼性文化”、“奮斗者文化”…… 不同的文化背后對應(yīng)的也就是這個(gè)企業(yè)對于員工不同行為的不同響應(yīng)模式。
一個(gè)企業(yè)的文化決定了在這個(gè)企業(yè)內(nèi):
什么事情是對的,什么事情是錯(cuò)的; 什么事情是重要的,什么事情是不重要的; 什么事情是值得做的,什么事情是不值得做的。
所以文化決定了一個(gè)企業(yè)會(huì)去招聘哪些人,會(huì)開除哪些人,會(huì)提拔哪些人。
看到這里可能你已經(jīng)在思考自己呆過的企業(yè)對員工有哪些要求,在鼓勵(lì)什么,在懲罰什么…… 沒錯(cuò),此刻在你腦海中閃現(xiàn)的一幕幕就是企業(yè)文化。
4.2、什么是 DevOps 文化?
這幅圖大家肯定都不陌生:

什么是 DevOps 文化?
其實(shí)從這幅圖中我們就能看到文化的影子。我們都知道 DevOps 強(qiáng)調(diào)打通開發(fā)團(tuán)隊(duì)與運(yùn)維團(tuán)隊(duì)的壁壘,要求兩個(gè)團(tuán)隊(duì)拉齊認(rèn)知與責(zé)任,不再各自為戰(zhàn),而是一起為更快地交付更高質(zhì)量的產(chǎn)品而努力。沒錯(cuò),這就是最基礎(chǔ)的 DevOps 文化。
那么如何拉齊認(rèn)知與責(zé)任呢?
首先可以確認(rèn)的是,我們在組織架構(gòu)上直接融合 Dev 和 Ops 團(tuán)隊(duì),這并不是一個(gè) DevOps 團(tuán)隊(duì)。人是不是坐在一起,改變的只是溝通的效率。這里我想強(qiáng)調(diào)兩點(diǎn):
責(zé)任共擔(dān),在一個(gè) DevOps 模式組建團(tuán)隊(duì)里,每個(gè)人都需要為軟件開發(fā)交付的整個(gè)生命周期而負(fù)責(zé); 技能共享,通過持續(xù)學(xué)習(xí),互相學(xué)習(xí),讓本是傳統(tǒng) Dev 的工程師學(xué)習(xí) Ops 的技能,同時(shí)傳統(tǒng) Ops 的工程師也需要學(xué)習(xí) Dev 的技能。
Dev 與 Ops 互相學(xué)習(xí)彼此領(lǐng)域技能,每個(gè)人都懂開發(fā)又懂運(yùn)維,抱著“成長的觀念”,持續(xù)學(xué)習(xí),不滿足于當(dāng)前已掌握的技術(shù)棧。
但是我們也需要意識到不能要求每個(gè)工程師都精通開發(fā)與運(yùn)維,這是不可能的。這里說的 Dev 掌握 Ops 能力,更多的是 Dev 能夠借助完善的工具鏈從而掌握“應(yīng)用運(yùn)維”的能力,能夠在自己完成開發(fā)之后,有能力和權(quán)限將應(yīng)用部署上線,同時(shí)線上應(yīng)用出問題后,能夠直接對其負(fù)責(zé),定位、修復(fù)、更新升級等。而一些基礎(chǔ)設(shè)施的運(yùn)維能力需要獨(dú)立出來考慮,比如機(jī)房里的局域網(wǎng)配置、虛擬機(jī)掛 NAS 盤等傳統(tǒng)運(yùn)維能力。
同理 Ops 需要理解應(yīng)用開發(fā)的生命周期,知道 Dev 的痛點(diǎn),尤其是在流程上的痛點(diǎn),比如怎樣提升應(yīng)用的構(gòu)建速度,怎樣優(yōu)化應(yīng)用的 cd 流程等,Ops 要關(guān)注應(yīng)用的“生產(chǎn)過程”,進(jìn)而發(fā)力去優(yōu)化這個(gè)過程或相應(yīng)的工具,讓應(yīng)用能夠更可靠更快速地完成 cicd 流程等,更容易地部署上線或者對外交付。也就是說我們并不是要求 Ops 也去寫業(yè)務(wù)代碼,而是協(xié)助 Dev 去解決業(yè)務(wù)代碼之外的痛點(diǎn),讓 Dev 能夠更加專注于業(yè)務(wù)功能實(shí)現(xiàn)。
最后,一個(gè) DevOps 模式組件的團(tuán)隊(duì)中每個(gè)人都為整個(gè)軟件研發(fā)生命周期的速度和質(zhì)量負(fù)責(zé),每個(gè)具體的角色就像一個(gè)大頭釘,底部很寬,代表著技術(shù)面廣,關(guān)注整個(gè)軟件研發(fā)生命周期的所有環(huán)節(jié);同時(shí)頂部很高,在某個(gè)環(huán)節(jié)里專注,做好做精。
DevOps 成功落地的關(guān)鍵是什么?
我們前面說到的“其樂融融”的場景,我們希望 Dev 和 Ops 能夠互相學(xué)習(xí),共擔(dān)責(zé)任,一起為更快更好地交付產(chǎn)品而努力。但是,工程師們?yōu)槭裁匆@樣做?他們的動(dòng)力在哪里?
4.3、領(lǐng)導(dǎo)與激勵(lì)
Gartner 曾出過一個(gè)分析報(bào)告,表明在2023年,90%的 DevOps 改革將會(huì)失敗(相較于預(yù)期)。而失敗的主要原因是領(lǐng)導(dǎo)層管理方法的局限。
其實(shí)這是顯而易見的,DevOps 可以稱為一種“改革”,而很多人是抵觸“變化”,抵觸“新事物”的。比如 DevOps 鼓勵(lì)接受失敗,快速失敗,從失敗中學(xué)習(xí)經(jīng)驗(yàn),進(jìn)而在更長的時(shí)間維度上爭取更大的成功。但是可能你遇到的剛好是一個(gè)“失敗懲罰型”領(lǐng)導(dǎo),那么你的團(tuán)隊(duì)就會(huì)懼怕失敗,從而放棄創(chuàng)造與嘗試新技術(shù),選擇安于現(xiàn)狀。
一個(gè)技術(shù)團(tuán)隊(duì)的領(lǐng)導(dǎo)首先自己需要懂技術(shù),有豐富的經(jīng)驗(yàn),這是基礎(chǔ)要求。但是除此之外,更重要的是團(tuán)隊(duì)領(lǐng)導(dǎo)能夠激勵(lì)整個(gè)團(tuán)隊(duì),去發(fā)揮整個(gè)團(tuán)隊(duì)的主觀能動(dòng)性,讓所有團(tuán)隊(duì)成員都能夠有動(dòng)力持續(xù)學(xué)習(xí),快速學(xué)習(xí),同時(shí)也能夠敢于失敗,快速失敗且不懼怕失敗,把失敗當(dāng)做一個(gè)學(xué)習(xí)的機(jī)會(huì),進(jìn)而不斷成長,讓整個(gè)團(tuán)隊(duì)的戰(zhàn)斗力能夠越來越強(qiáng)。
所以領(lǐng)導(dǎo)怎樣激勵(lì)工程師呢?
福利?比如一些大廠提供的免費(fèi)零食或者定期的下午茶?免費(fèi)的咖啡或者午餐?
沒錯(cuò),作為一個(gè)工程師,這一切的福利都會(huì)讓其開心,但是其實(shí)無法激勵(lì)其更加認(rèn)真努力地工作。工程師的薪資水平普遍不低,所有這些零食也好,咖啡也好,大概率不會(huì)到其月薪的零頭。同理,工程師找工作時(shí),看重的也絕不會(huì)是一個(gè)企業(yè)是否提供免費(fèi)午餐和下午茶。
那么工程師看重的是什么?
在選擇一家企業(yè)的時(shí)候,可能工程師第一個(gè)考慮的是薪資,剩下的可能是成長的空間、工作內(nèi)容是否感興趣等等等等。但是進(jìn)入一家公司以后,真正開始工作的時(shí)候,工程師看重的是什么?我認(rèn)為可能是:
精通 自驅(qū) 目標(biāo)
我們逐個(gè)來解釋一下。
1. 精通
我們在某個(gè)工作方向做的好,我們擅長某個(gè)技術(shù)方向,進(jìn)而很好地完成相應(yīng)的工作,這時(shí)候我們會(huì)有一種成就感,滿足感,我們會(huì)覺得自己得心應(yīng)手,同時(shí)大概率會(huì)獲得認(rèn)可,贊揚(yáng),因此接下來的時(shí)間里我們就更加愿意在這個(gè)方向上繼續(xù)努力,做的更好。也就是說一個(gè)工程師能夠有機(jī)會(huì)專注于自己精通的技術(shù)上發(fā)力,那么他大概率會(huì)感受到激勵(lì)。
反例是什么呢?比如你是一個(gè) Java 工程師,但是你的領(lǐng)導(dǎo)擅長 PHP,并且覺得 PHP 是世界上最好的語言,于是要求整個(gè)團(tuán)隊(duì)轉(zhuǎn)向使用 PHP,這時(shí)候你會(huì)放棄自己研究多年的 Java 技術(shù)棧,努力學(xué)習(xí) PHP 并決心干出一番成績嗎?
2. 自驅(qū)
我們希望組建一個(gè)學(xué)習(xí)型、創(chuàng)造型的團(tuán)隊(duì),每個(gè)人能夠持續(xù)成長,樂于創(chuàng)新,自我驅(qū)動(dòng)。這就需要領(lǐng)導(dǎo)能夠允許團(tuán)隊(duì)花時(shí)間去學(xué)習(xí),去輸入,而不是一味地輸出,每時(shí)每刻匯報(bào)自己寫了幾行代碼。同時(shí)這也要求領(lǐng)導(dǎo)自身勇于接受新事物,擁抱變化,而不是“不求有功,但求無過”。舉個(gè)例子:假如你的領(lǐng)導(dǎo)最擔(dān)心的是線上應(yīng)用出事故,并且他認(rèn)為穩(wěn)定的第一要素就是不要引入新技術(shù),新工具,那么這時(shí)候你的領(lǐng)導(dǎo)也不會(huì)在意你是不是有時(shí)間學(xué)習(xí),也不會(huì)允許你花時(shí)間去研究新技術(shù),因?yàn)檫@一切只會(huì)帶來不穩(wěn)定。如果領(lǐng)導(dǎo)害怕失控,因而拒絕創(chuàng)新,那么這樣的團(tuán)隊(duì)成員也就只能滿足于實(shí)現(xiàn)日復(fù)一日的常規(guī)需求開發(fā)迭代,而不會(huì)享受技術(shù),自我驅(qū)動(dòng),擁抱創(chuàng)新。
3. 目標(biāo)
顯而易見,團(tuán)隊(duì)每個(gè)成員都需要知道自己為什么做?目的是什么?目標(biāo)是什么?而不是領(lǐng)導(dǎo)心里藏著一個(gè)目標(biāo),然后簡單地指揮團(tuán)隊(duì)成員完成一件件具體的零散的工作項(xiàng)。如果團(tuán)隊(duì)成員只知道今天需要完成事務(wù)A,明天需要完成事務(wù)B,而不知道為什么要做,最終要做成什么樣,那么大家只會(huì)滿足于機(jī)械地完成任務(wù),而不會(huì)有動(dòng)力追求“如何做得更好”。
五、總結(jié)
所以 DevOps 是什么?
我嘗試給出我的答案:
DevOps 是一種文化理念、工具與實(shí)踐的結(jié)合,目的是更快更可靠地向用戶持續(xù)交付價(jià)值。其中最重要的是文化,文化要求 Dev 和 Ops 團(tuán)隊(duì)責(zé)任共擔(dān),目標(biāo)一致,也要求整個(gè)團(tuán)隊(duì)持續(xù)學(xué)習(xí),抱著成長的心態(tài),Continuously Everything。其次 DevOps 離不開高效的工具集,工具是自動(dòng)化的基礎(chǔ)。最后我們要在各個(gè)環(huán)節(jié)追求最佳實(shí)踐,不管是工具的使用,還是團(tuán)隊(duì)的協(xié)作模式,溝通方法上面。
最后,關(guān)于標(biāo)題“什么是DevOps?看這一篇就夠了!”,我想告訴你,DevOps 文化里不存在“夠了”,所以我不得不承認(rèn),我撒謊了。本文只代表我個(gè)人現(xiàn)階段的粗淺認(rèn)知,我建議你查閱更多的資料,持續(xù)學(xué)習(xí),永不滿足。當(dāng)然如果本文對你有一點(diǎn)點(diǎn)的幫助,那么我很滿足。
