Google DevOps
由于 DevOps 是一個(gè)系統(tǒng)性工程,所以很難用一句話來(lái)說(shuō)明,即使我們用一句話說(shuō)明,也很難理解。要不然,也顯示不出它的優(yōu)越性!
1948 - TPS(豐田生產(chǎn)方式)
豐田生產(chǎn)方式(英語(yǔ):Toyota Production System,縮寫(xiě)為 TPS),是由豐田提出的一個(gè)整合的社會(huì)-技術(shù)系統(tǒng),包含一套管理理念和實(shí)踐。豐田生產(chǎn)方式為汽車(chē)制造安排生產(chǎn)和物流,當(dāng)中包括與供應(yīng)商和客戶的互動(dòng)。該系統(tǒng)是更通用的“精益生產(chǎn)”的先驅(qū)。大野耐一、新鄉(xiāng)重夫和豐田英二在1948年和1975年之間,開(kāi)發(fā)了這個(gè)系統(tǒng)。
針對(duì)于流水線自動(dòng)化,工業(yè)制造行業(yè)是領(lǐng)先于軟件行業(yè)的。早在1948年,豐田就采用 TPS 模式,與德國(guó)大眾,美國(guó)通用汽車(chē)一起成為世界三大汽車(chē)制造商。TPS 的核心在于杜絕浪費(fèi),簡(jiǎn)單理解,就是豐田在生產(chǎn)銷(xiāo)售的各個(gè)階段做到了成本最優(yōu)。
其實(shí),軟件開(kāi)發(fā)的流程中,尋求的也是成本最優(yōu),只不過(guò),我們逐漸把這個(gè)淡忘了而已。
1960 - Kanban(工業(yè)制造)
Kanban 源于豐田生產(chǎn)模式,Kanban 一詞來(lái)源于日文。隨后,在2006年,軟件行業(yè)中也出現(xiàn)了 Kanban 的概念。
用過(guò)一張對(duì)比圖來(lái)看一下 TPS 中的 Kanban 與軟件行業(yè)中的看板。
由上圖可見(jiàn),軟件行業(yè)中使用的 Kanban(比如 Trello,Jira)這些應(yīng)用,其實(shí)都是來(lái)源于 TPS。所以,軟件公司里要求員工使用類(lèi)似的 Kanban,根本原因,不是為了彰顯公司多專(zhuān)業(yè),而是從工業(yè)領(lǐng)域的實(shí)踐中來(lái)的。
當(dāng)然,工具是一方面,怎么去運(yùn)用 Kanban 是另一個(gè)話題了,只有在工具和運(yùn)用配合得當(dāng)?shù)臅r(shí)候,才可以發(fā)揮作用,不然 Kanban 就只會(huì)變成一個(gè)擺設(shè)。
簡(jiǎn)單來(lái)講,運(yùn)用 Kanban,我們可以追蹤項(xiàng)目進(jìn)度。
1970 - Waterfall(軟件行業(yè))
直到 1970年,軟件開(kāi)發(fā)流程一直是一個(gè)瀑布模型。這個(gè)模型其實(shí)很好理解,就是從頭到尾一氣合成。我們?cè)趯W(xué)校里或者剛開(kāi)始工作的時(shí)候,采用的都是這個(gè)模型。有不少小公司,采用的也是這種模型。
什么情況下,適合使用此類(lèi)模型?
瀑布模型已經(jīng)不推薦企業(yè)使用,說(shuō)的再白一點(diǎn),如果是團(tuán)隊(duì),就應(yīng)該避開(kāi)瀑布模型。也就是說(shuō),如果是一個(gè)人開(kāi)發(fā),可以采用瀑布模型,或者是不用后期維護(hù)的一次性開(kāi)發(fā),比如,做一個(gè)靜態(tài)頁(yè)面的網(wǎng)站。
1986 - Scrum(工業(yè)制造)
從單詞本身來(lái)翻譯,Scrum 的意思是爭(zhēng)吵。用于開(kāi)發(fā)、交付和維持錯(cuò)綜復(fù)雜產(chǎn)品的敏捷框架。所以,不是指我們每天做的站會(huì),站會(huì)只是 Scrum 的一個(gè)體現(xiàn)形式而已。
在工業(yè)生產(chǎn)領(lǐng)域,Scrum 體現(xiàn)了一個(gè)生產(chǎn)線的流程。在軟件開(kāi)發(fā)領(lǐng)域,Scrum 屬于 Agile(敏捷開(kāi)發(fā))的一個(gè)方法論,我們會(huì)在下文中介紹。
1991 - Lean manufacturing
精益生產(chǎn),一種系統(tǒng)性的生產(chǎn)方法,其目標(biāo)在于減少生產(chǎn)過(guò)程中的無(wú)益浪費(fèi)。這個(gè)概念也來(lái)源于 TPS。簡(jiǎn)單來(lái)說(shuō),精實(shí)生產(chǎn)的核心是用最少工作,創(chuàng)造價(jià)值,是 TPS 的發(fā)展產(chǎn)物。
1995 - Scrum(軟件行業(yè))
軟件行業(yè)中的 Scrum 由工業(yè)制造中而來(lái),只一套敏捷開(kāi)發(fā)的方法論。我們?cè)谌粘9ぷ髦杏龅降?Milestone,Epic,Spring,Task,站會(huì),都屬于 Scrum 里的概念。每個(gè)公司都應(yīng)該有一套自己的 Scrum 模式,而不是去抄襲別的公司的模式,甚至說(shuō),一個(gè)公司的不同團(tuán)隊(duì),都會(huì)有自己的 Scrum 模式,因?yàn)閳F(tuán)隊(duì)是由人來(lái)構(gòu)成的,每一個(gè)人的能力,性格的差異,會(huì)決定這個(gè)團(tuán)隊(duì)的生產(chǎn)力。
1995 - Agile(軟件行業(yè))
比起 Scrum,Lean 這些詞匯,Agile(敏捷開(kāi)發(fā))應(yīng)該是在國(guó)內(nèi)聽(tīng)到的最多的詞匯。很多我們使用的產(chǎn)品,例如,Jira,Trello,云效,Coding 這些產(chǎn)品,它的核心價(jià)值也是實(shí)現(xiàn)敏捷開(kāi)發(fā)。
提到 Agile,不得不提起 Agile Manifesto(Agile 宣言)。在2001年,十七名軟件開(kāi)發(fā)人員在猶他州的雪鳥(niǎo)度假村會(huì)面,討論這些輕量級(jí)的開(kāi)發(fā)方法,并由Jeff Sutherland,Ken Schwaber和Alistair Cockburn發(fā)起,一同發(fā)布了“敏捷軟件開(kāi)發(fā)宣言”。
現(xiàn)今的 Agile 的內(nèi)容已經(jīng)豐富了很多,不過(guò)在當(dāng)時(shí),Agile 宣言的主要內(nèi)容如下:
-
個(gè)體和互動(dòng):高于流程和工具。
-
工作的軟件:高于詳盡的文檔。
-
客戶合作:高于合同談判。
-
響應(yīng)變化:高于遵循計(jì)劃。
說(shuō)的白一點(diǎn),Agile 注重團(tuán)隊(duì)協(xié)同。 這不就是公司內(nèi)部一直在宣傳的口號(hào)嗎?
2003 - Lean(軟件行業(yè))
直到 2003年,Agile 框架中,除了 Scrum 方法論,又添加了 Lean 方法論。上面我們提到,Lean 就是使用最少的成本,達(dá)到目的。
-
消除浪費(fèi)
-
增強(qiáng)學(xué)習(xí)
-
盡量延遲決定
-
盡快發(fā)布
-
下放權(quán)力
-
嵌入質(zhì)量
-
全局優(yōu)化
2006 - Kanban(軟件行業(yè))
在 2006年,軟件行業(yè)也開(kāi)始大規(guī)模應(yīng)用 Kanban 模式,也出現(xiàn)了相應(yīng)的 SaaS 服務(wù)。國(guó)內(nèi)現(xiàn)在也已經(jīng)普及了 Kanban 模式的使用,不過(guò),大多數(shù)情況,并沒(méi)有應(yīng)用的得心應(yīng)手。Kanban 的存在很多時(shí)候,都是在應(yīng)付每周一次的例會(huì)。
2009 - DevOps(軟件行業(yè))
直到 2009年,DevOps 的概念又悄然升起。DevOps 并不屬于 Agile 框架。如果去搜索 DevOps 概念,每一個(gè)大公司都會(huì)給出一個(gè)自己的概念。
簡(jiǎn)單來(lái)說(shuō),DevOps 是一個(gè)企業(yè)的生產(chǎn)文化,是 Agile 框架的一個(gè)補(bǔ)充和拓展。
-
亞馬遜的定義:https://aws.amazon.com/devops/what-is-devops/
-
谷歌的定義:https://cloud.google.com/devops#section-2
-
微軟的定義:https://azure.microsoft.com/en-gb/overview/what-is-devops/#devops-overview
-
Atlassian 的定義:https://www.atlassian.com/devops/what-is-devops/benefits-of-devops
我們會(huì)在后續(xù)的文章中,詳細(xì)介紹這兩個(gè)的區(qū)別點(diǎn)。這里我們只給出一個(gè)簡(jiǎn)單的介紹。
2014 - ChatOps(軟件行業(yè))
2014年,ChatOps 又從 DevOps 里衍生出來(lái)。ChatOps 是一種協(xié)作模型,它將人員、工具、流程和自動(dòng)化連接到一個(gè)透明的工作流中。
不好理解對(duì)不對(duì)?簡(jiǎn)單來(lái)說(shuō),就是通過(guò) Chat 模式(使用企業(yè)微信,叮叮,飛書(shū),Slack)等工具 后臺(tái)的機(jī)器人,以聊天的模式完成工作流。
舉個(gè)例子:
我在 Git 上提交了一個(gè)代碼,這時(shí)候,后臺(tái)機(jī)器人會(huì)自動(dòng)往企業(yè)微信群里推送一個(gè)Git commit信息,你需要回復(fù)同意構(gòu)建/部署,才會(huì)進(jìn)行到下一步。
這也是為什么 Slack 等工具里,經(jīng)常出現(xiàn) bot(后臺(tái)機(jī)器人)等產(chǎn)品的原因。其實(shí)也好理解,自動(dòng)客服也是類(lèi)似的原理。
GitOps
2017年,又出現(xiàn)了 GitOps 的概念。
GitOps 是一種為云原生應(yīng)用程序?qū)崿F(xiàn)持續(xù)部署的方式。它通過(guò)使用開(kāi)發(fā)人員已經(jīng)熟悉的工具,包括 Git 和持續(xù)部署工具,專(zhuān)注于在操作基礎(chǔ)設(shè)施時(shí)以開(kāi)發(fā)人員為中心的體驗(yàn)。
FinOps
FinOps 是“云財(cái)務(wù)運(yùn)營(yíng)”或“云財(cái)務(wù)管理”或“云成本管理”的簡(jiǎn)寫(xiě)。這是一種將財(cái)務(wù)責(zé)任引入云的可變支出模型的做法,使分布式團(tuán)隊(duì)能夠在速度、成本和質(zhì)量之間進(jìn)行業(yè)務(wù)權(quán)衡。
AiOps
到現(xiàn)在為止,沒(méi)有達(dá)到規(guī)模性應(yīng)用,還處于孵化階段。說(shuō)白一點(diǎn),就是要把 AI 技術(shù)放到運(yùn)維當(dāng)中。
在接下來(lái)的文章中,會(huì)介紹 DevOps 與企業(yè)收益,DevOps 衡量,DevOps 與個(gè)人收益等話題。
問(wèn)題:到底需不需要引入 DevOps?
答案:需要,而且必須。