DevOps 的發展史

作者:dongxuny

來源:my.oschina.net/u/4955601/blog/5270321

Google DevOps

當我們在搜索引擎搜索 DevOps 的時候,會出現很多其他的名詞,例如,Agile(敏捷開發),Scrum,Lean,Kanban 等等。無形之中增加了我們的學習難度。

看看 DevOps 是怎麼來的?

當我們無法從網上找到一個確切的答案時,最好辦法就是看它的變遷史。

由於 DevOps 是一個系統性工程,所以很難用一句話來說明,即使我們用一句話說明,也很難理解。要不然,也顯示不出它的優越性!

1948 - TPS(豐田生產方式)

豐田生產方式(英語:Toyota Production System,縮寫爲 TPS),是由豐田提出的一個整合的社會 - 技術系統,包含一套管理理念和實踐。豐田生產方式爲汽車製造安排生產和物流,當中包括與供應商和客戶的互動。該系統是更通用的 “精益生產” 的先驅。大野耐一、新鄉重夫和豐田英二在 1948 年和 1975 年之間,開發了這個系統。

針對於流水線自動化,工業製造行業是領先於軟件行業的。早在 1948 年,豐田就採用 TPS 模式,與德國大衆,美國通用汽車一起成爲世界三大汽車製造商。TPS 的核心在於杜絕浪費,簡單理解,就是豐田在生產銷售的各個階段做到了成本最優。

其實,軟件開發的流程中,尋求的也是成本最優,只不過,我們逐漸把這個淡忘了而已。

1960 - Kanban(工業製造)

Kanban 源於豐田生產模式,Kanban 一詞來源於日文。隨後,在 2006 年,軟件行業中也出現了 Kanban 的概念。

用過一張對比圖來看一下 TPS 中的 Kanban 與軟件行業中的看板。

由上圖可見,軟件行業中使用的 Kanban(比如 Trello,Jira)這些應用,其實都是來源於 TPS。所以,軟件公司裏要求員工使用類似的 Kanban,根本原因,不是爲了彰顯公司多專業,而是從工業領域的實踐中來的。

當然,工具是一方面,怎麼去運用 Kanban 是另一個話題了,只有在工具和運用配合得當的時候,纔可以發揮作用,不然 Kanban 就只會變成一個擺設。

簡單來講,運用 Kanban,我們可以追蹤項目進度。

1970 - Waterfall(軟件行業)

直到 1970 年,軟件開發流程一直是一個瀑布模型。這個模型其實很好理解,就是從頭到尾一氣合成。我們在學校裏或者剛開始工作的時候,採用的都是這個模型。有不少小公司,採用的也是這種模型。

什麼情況下,適合使用此類模型?

瀑布模型已經不推薦企業使用,說的再白一點,如果是團隊,就應該避開瀑布模型。也就是說,如果是一個人開發,可以採用瀑布模型,或者是不用後期維護的一次性開發,比如,做一個靜態頁面的網站。

1986 - Scrum(工業製造)

從單詞本身來翻譯,Scrum 的意思是爭吵。用於開發、交付和維持錯綜複雜產品的敏捷框架。所以,不是指我們每天做的站會,站會只是 Scrum 的一個體現形式而已。

在工業生產領域,Scrum 體現了一個生產線的流程。在軟件開發領域,Scrum 屬於 Agile(敏捷開發)的一個方法論,我們會在下文中介紹。

1991 - Lean manufacturing

精益生產,一種系統性的生產方法,其目標在於減少生產過程中的無益浪費。這個概念也來源於 TPS。簡單來說,精實生產的核心是用最少工作,創造價值,是 TPS 的發展產物。

1995 - Scrum(軟件行業)

軟件行業中的 Scrum 由工業製造中而來,只一套敏捷開發的方法論。我們在日常工作中遇到的 Milestone,Epic,Spring,Task,站會,都屬於 Scrum 裏的概念。每個公司都應該有一套自己的 Scrum 模式,而不是去抄襲別的公司的模式,甚至說,一個公司的不同團隊,都會有自己的 Scrum 模式,因爲團隊是由人來構成的,每一個人的能力,性格的差異,會決定這個團隊的生產力。

1995 - Agile(軟件行業)

比起 Scrum,Lean 這些詞彙,Agile(敏捷開發)應該是在國內聽到的最多的詞彙。很多我們使用的產品,例如,Jira,Trello,雲效,Coding 這些產品,它的核心價值也是實現敏捷開發。

提到 Agile,不得不提起 Agile Manifesto(Agile 宣言)。在 2001 年,十七名軟件開發人員在猶他州的雪鳥度假村會面,討論這些輕量級的開發方法,並由 Jeff Sutherland,Ken Schwaber 和 Alistair Cockburn 發起,一同發佈了 “敏捷軟件開發宣言”。

現今的 Agile 的內容已經豐富了很多,不過在當時,Agile 宣言的主要內容如下:

一個模凌兩可的解釋,對不對?

說的白一點,Agile 注重團隊協同。 這不就是公司內部一直在宣傳的口號嗎?

2003 - Lean(軟件行業)

直到 2003 年,Agile 框架中,除了 Scrum 方法論,又添加了 Lean 方法論。上面我們提到,Lean 就是使用最少的成本,達到目的。

由 Lean 方法論,2011 年,又出現了 Lean Startup(精益創業)的概念。

2006 - Kanban(軟件行業)

在 2006 年,軟件行業也開始大規模應用 Kanban 模式,也出現了相應的 SaaS 服務。國內現在也已經普及了 Kanban 模式的使用,不過,大多數情況,並沒有應用的得心應手。Kanban 的存在很多時候,都是在應付每週一次的例會。

2009 - DevOps(軟件行業)

直到 2009 年,DevOps 的概念又悄然升起。DevOps 並不屬於 Agile 框架。如果去搜索 DevOps 概念,每一個大公司都會給出一個自己的概念。

簡單來說,DevOps 是一個企業的生產文化,是 Agile 框架的一個補充和拓展。

DevOps 與 Agile 有什麼區別點?

我們會在後續的文章中,詳細介紹這兩個的區別點。這裏我們只給出一個簡單的介紹。

2014 - ChatOps(軟件行業)

2014 年,ChatOps 又從 DevOps 裏衍生出來。ChatOps 是一種協作模型,它將人員、工具、流程和自動化連接到一個透明的工作流中。

不好理解對不對?簡單來說,就是通過 Chat 模式(使用企業微信,叮叮,飛書,Slack)等工具 + 後臺的機器人,以聊天的模式完成工作流。

舉個例子:

我在 Git 上提交了一個代碼,這時候,後臺機器人會自動往企業微信羣裏推送一個 Git commit 信息,你需要回復同意構建 / 部署,纔會進行到下一步。

這也是爲什麼 Slack 等工具裏,經常出現 bot(後臺機器人)等產品的原因。其實也好理解,自動客服也是類似的原理。

GitOps

2017 年,又出現了 GitOps 的概念。

GitOps 是一種爲雲原生應用程序實現持續部署的方式。它通過使用開發人員已經熟悉的工具,包括 Git 和持續部署工具,專注於在操作基礎設施時以開發人員爲中心的體驗。

FinOps

FinOps 是 “雲財務運營” 或“雲財務管理”或 “雲成本管理” 的簡寫。這是一種將財務責任引入雲的可變支出模型的做法,使分佈式團隊能夠在速度、成本和質量之間進行業務權衡。

AiOps

到現在爲止,沒有達到規模性應用,還處於孵化階段。說白一點,就是要把 AI 技術放到運維當中。

結論

在這裏,我們只是簡單的回顧了一下 DevOps 相關的歷史變遷,沒有涉及到概念和核心。

在接下來的文章中,會介紹 DevOps 與企業收益,DevOps 衡量,DevOps 與個人收益等話題。

問題:到底需不需要引入 DevOps?

答案:需要,而且必須。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/YnxG7VaurzXYBBQEFB2sUg