敏捷開(kāi)發(fā)與DevOps的對(duì)比
敏捷開(kāi)發(fā)與DevOps的區(qū)別
敏捷與 DevOps 之間的主要區(qū)別在于:敏捷是關(guān)于如何開(kāi)發(fā)和交付軟件的哲學(xué),而 DevOps 則描述了如何通過(guò)使用現(xiàn)代工具和自動(dòng)化流程來(lái)持續(xù)部署代碼。
敏捷宣言
如果軟件開(kāi)發(fā)人員是敏捷的,他們的行為方式與敏捷宣言中定義的價(jià)值觀和原則相一致。
敏捷宣言于 2001 年由軟件開(kāi)發(fā)領(lǐng)導(dǎo)者撰寫(xiě)并簽署,它定義了敏捷從業(yè)者必須遵循的十二項(xiàng)原則和四項(xiàng)基本價(jià)值觀,包括:
個(gè)體和互動(dòng)高于流程和工具
工作的軟件高于全面的文檔
客戶合作高于合同談判
響應(yīng)變化高于遵循計(jì)劃
雖然敏捷宣言對(duì)軟件開(kāi)發(fā)社區(qū)的重要性不言而喻,但它的篇幅卻非常短。 總共不到500字。
除了堅(jiān)持將軟件持續(xù)將會(huì)給客戶是敏捷的最高優(yōu)先級(jí)之外,宣言并沒(méi)有提供任何簡(jiǎn)明的指導(dǎo),也沒(méi)有推薦任何可以遵循的具體流程。 這純粹是一種哲學(xué)練習(xí)。
如何定義 DevOps?
與敏捷相比,DevOps 有定義文檔。 DevOps 沒(méi)有普遍接受的定義。
我們甚至不清楚 DevOps 是什么時(shí)候進(jìn)入公共詞典的,盡管許多人指出 John Allspaw 和 Paul Hammond 在 2009 年 Velocity 大會(huì)上的演講《每天10+個(gè)部署:Flickr上的開(kāi)發(fā)和運(yùn)維合作》是它的開(kāi)端。許多人也認(rèn)為 Gene Kim 的《鳳凰計(jì)劃》一書(shū)也是 DevOps 普及的一個(gè)推動(dòng)因素。

在 2009 年的 Velocity 演示中,Allspaw 和 Hammond 描述了他們對(duì)的軟件測(cè)試?yán)痰男判脑鯓邮沟迷陂_(kāi)發(fā)和運(yùn)營(yíng)之間建立了諸多信任,該公司甚至已經(jīng)實(shí)施了一個(gè)流程,可以每天將代碼自動(dòng)部署到生產(chǎn)環(huán)境中 10 次以上。自動(dòng)化這樣的事情在當(dāng)時(shí)被認(rèn)為是石破驚天的。
自 2009 年以來(lái),軟件開(kāi)發(fā)行業(yè)發(fā)生了許多變化,但 DevOps 的基石仍然是:
開(kāi)發(fā)和運(yùn)維團(tuán)隊(duì)之間的信任和協(xié)作
嚴(yán)重依賴全面的軟件測(cè)試?yán)?/p>
集成現(xiàn)代工具以簡(jiǎn)化開(kāi)發(fā)和運(yùn)營(yíng)任務(wù)
無(wú)需任何人工干預(yù)或檢查點(diǎn)即可自動(dòng)部署到生產(chǎn)中
敏捷和 DevOps 文化
盡管許多人爭(zhēng)論 DevOps 到底是什么,但大多數(shù)定義都包含“文化”一詞。這就引出了一個(gè)問(wèn)題:什么是文化?
一般來(lái)說(shuō),文化可以定義為任何一群志同道合的人,他們使用一套通用的工具并遵循一套可重復(fù)的流程。
從本質(zhì)上講,文化可以歸結(jié)為以下三點(diǎn):
人
流程
及他們所用的工具

DevOps 工具和流程
在 DevOps 的世界中,從業(yè)者使用的流行工具包括:
Git 和 GitHub
Docker 和容器
Jenkins 其他 CI 工具
用于編排的 Kubernetes
Chef 和 Puppet
靜態(tài)代碼分析
Terraform
公有云
使用這些產(chǎn)生的過(guò)程是代碼的持續(xù)集成和部署(CI/CD)。
敏捷和 DevOps 有何相似之處?
從事 DevOps 的人有什么獨(dú)特之處?
數(shù)字化轉(zhuǎn)型成功的先決條件是什么?
這正是敏捷和 DevOps 的交匯點(diǎn)。
為了使 DevOps 發(fā)揮作用,所有 DevOps 從業(yè)者都必須接受敏捷思維。
所有 DevOps 從業(yè)者都相信:
手動(dòng)任務(wù)的自動(dòng)化和未完成工作的重要性
與積極的個(gè)人組成的自組織團(tuán)隊(duì)合作的重要性
將軟件持續(xù)交付給客戶作為最高優(yōu)先級(jí)
這些要點(diǎn)中的每一個(gè)都直接映射到敏捷宣言中列出的十二條原則之一。

如何將敏捷和 DevOps 結(jié)合起來(lái)?
DevOps 人員必須是敏捷的。
要正確執(zhí)行 DevOps,DevOps 從業(yè)者必須接受敏捷思維。
敏捷和 DevOps 從業(yè)者不僅有共同的思維模式,而且他們的目標(biāo)也很一致。
DevOps 過(guò)渡的最終目標(biāo)是將工作代碼完全自動(dòng)化部署到生產(chǎn)中。這代表了 DevOps 的完整啟示。
敏捷宣言毫不含糊地指出,其最高優(yōu)先級(jí)是持續(xù)向客戶交付軟件。
敏捷和 DevOps 都相信構(gòu)建軟件、確保透明度和促進(jìn)可持續(xù)發(fā)展的最佳方式是將可工作的軟件交到客戶手中。
敏捷和 DevOps 有著完全相同的目標(biāo),就是讓開(kāi)發(fā)和運(yùn)營(yíng)團(tuán)隊(duì)使用現(xiàn)代工具并遵照流程,將軟件盡快交到客戶手中。
敏捷與 DevOps 的異同
總結(jié)一下,下面是 DevOps 和敏捷之間最常見(jiàn)的區(qū)別和相似之處:
1. 敏捷由敏捷宣言定義,而 DevOps 沒(méi)有普遍接受的定義
2. DevOps 定義了一種工作文化,而敏捷是一種軟件開(kāi)發(fā)理念
3. 敏捷的最高優(yōu)先級(jí)是持續(xù)交付,而 DevOps 則是持續(xù)部署
4. DevOps 堅(jiān)持所有手動(dòng)任務(wù)的自動(dòng)化,而敏捷則重視“未完成的工作量”
5. DevOps 從業(yè)者擁護(hù)敏捷思維,而敏捷則要求參與者自組織和激勵(lì)
敏捷和 DevOps 相結(jié)合
敏捷和 DevOps 并不是相互沖突的概念。事實(shí)上,情況恰恰相反。
擁有敏捷思維并接受 DevOps 文化的人都有一個(gè)共同的目標(biāo),那就是向客戶持續(xù)交付和部署有價(jià)值的軟件。
要正確執(zhí)行 DevOps,所有參與者都必須接受敏捷思維。只有這樣,基于 DevOps 的數(shù)字化轉(zhuǎn)型才會(huì)成功。
【注】本文譯自:Agile vs DevOps: What's the difference? (theserverside.com)