theagileadmin.com 原文鏈接
Ernest Mueller, Aug 2, 2010 – Last Revised Dec 7, 2016
翻譯:邵棟 2017.5.21
DevOps作為一個術(shù)語娇斑,包含了一組概念葛躏,雖然這些概念并不全是新的澈段,但 DevOps已經(jīng)演化成了一個在整個技術(shù)社區(qū)迅速蔓延的運動。像任何新的和流行的術(shù)語一樣舰攒,人們對它有很多困惑败富,有時是相互矛盾的印象。在本文中摩窃,我嘗試給出一個有效的DevOps定義兽叮。我將這個定義作為一個框架,以便我們可以更清楚地討論DevOps涵蓋的各種問題猾愿。像“質(zhì)量”或“敏捷”一樣鹦聪,DevOps是一個非常大的概念,需要掌握很多細節(jié)才能完全理解蒂秘。
[2016年12月更新:我們非常高興發(fā)布了The Agile Admin的新資源泽本。我們?yōu)閘ynda.com組織了一個全面的DevOps基礎課程,該課程涵蓋從DevOps歷史到DevOps功能領(lǐng)域的所有內(nèi)容姻僧,我們希望你喜歡它规丽。]
DevOps的定義
DevOps是一個與兩個相關(guān)趨勢有關(guān)的新詞。第一個趨勢是“agile system administration, 敏捷系統(tǒng)管理”或“agile operations, 敏捷運維”撇贺;它采用了較新的敏捷和精益方法來進行運營馆里。第二個趨勢是刨秆,在開發(fā)和運營服務的過程中薪贫,我們對于開發(fā)和運維人員在開發(fā)生命周期各個階段的協(xié)作價值骂远,以及運營在日益增長的面向服務的世界中的重要性(cf. Operations: The New Secret Sauce),有了更廣泛的了解翠订。
Jez Humble向我提出的一個定義是巢音,DevOps是
“致力于研究創(chuàng)建、演化和運營大規(guī)木〕快速變化彈性系統(tǒng)的跨學科實踐社區(qū)”官撼。
這是個不錯的定義,但它可能有點太深奧和偏向于互聯(lián)網(wǎng)創(chuàng)業(yè)公司橙弱。我相信可以更精確地定義DevOps為:
DevOps是在整個服務的生命周期中,運維和開發(fā)工程師共同參與的燥狰,從設計到開發(fā)過程到生產(chǎn)支持的完整實踐棘脐。
對此定義的一個重要推論是,對比以前實踐龙致, DevOps有了一個重要的變化:
DevOps中運維人員使用許多與開發(fā)人員相同的技術(shù)來進行系統(tǒng)的工作蛀缝。
這些包括敏捷開發(fā)過程中使用的的從源代碼控制到測試等一系列技術(shù)。
為此目代,“DevOps”不區(qū)分不同的系統(tǒng)管理子分支 - “Ops”是系統(tǒng)工程師屈梁,系統(tǒng)管理員嗤练,運維人員,發(fā)布工程師在讶,DBA煞抬,網(wǎng)絡工程師,安全專業(yè)人員以及其他各種有關(guān)的職務的通稱构哺。 “Dev”被用作開發(fā)人員的縮寫革答,但實際上它更為廣泛,意味著“所有參與開發(fā)產(chǎn)品的人”曙强,包括產(chǎn)品残拐,質(zhì)量保證 QA和其他相關(guān)工作人員。
DevOps與敏捷和精益方法有很強的關(guān)聯(lián)碟嘴。舊的觀點認為“Dev”方面是“制造者”溪食;而“Ops”方面則是“ 處理產(chǎn)品被制造出以后工作的人” - 認識到行業(yè)中這兩者被分割所造成的傷害是DevOps背后的核心驅(qū)動力。這樣娜扇,DevOps可以被解釋為敏捷軟件開發(fā)的擴展错沃。敏捷軟件開發(fā)描述了客戶,產(chǎn)品管理袱衷,開發(fā)人員捎废,和(有時)QA的密切協(xié)作,以填補各自之間的鴻溝致燥,并快速迭代以得到更好的產(chǎn)品登疗。DevOps說:“是的,但服務最終交付以及應用程序和整個系統(tǒng)如何交互也是實現(xiàn)客戶價值的基本部分嫌蚤,因此產(chǎn)品團隊需要將這些內(nèi)容作為最高優(yōu)先級考慮辐益。”從這個角度來看脱吱,DevOps只是將敏捷原則擴展到超越“代碼”邊界的完整交付服務智政。
進一步定義
DevOps對于不同的人來說意味著很多不同的東西,因為它的討論涵蓋了很多方面箱蝠。人們談論DevOps是“開發(fā)和運營協(xié)作”续捂,或者將“將代碼視為基礎設施”,或者是“使用自動化”或“使用看板”或“工具鏈方法”或“文化”或許多看似松散相關(guān)的內(nèi)容宦搬。 進一步定義它的最好方法是借鑒和它類似復雜的一個詞-敏捷開發(fā)牙瓢。根據(jù)維基百科和敏捷宣言,敏捷開發(fā)由四個不同的“層次”組成间校。 我添加了第五個矾克,工具級別 - 敏捷和 DevOps可能會太癡迷于工具,但假裝工具不存在也是不對的憔足。
敏捷價值觀
頂級哲學胁附,被認同在“敏捷宣言”中酒繁。 這些是塑造敏捷的核心價值觀。
敏捷原則
支持這些價值觀的被廣泛認同的策略方法控妻。 “敏捷宣言”中描述了十二項更具體的原則州袒。你不必認為將它們?nèi)繉崿F(xiàn)才是敏捷,但如果你不認可他們中的許多內(nèi)容饼暑,你可能不是在做敏捷稳析。
敏捷方法
根據(jù)上述原則的更具體的流程實現(xiàn)。 XP弓叛,Scrum彰居,您自己的自制過程 - 這是哲學讓位于“我們打算如何在現(xiàn)實生活中實現(xiàn)”的操作劇本的地方。它們都不是強制性的撰筷,只是可能的實現(xiàn)陈惰。
敏捷實踐
高度具體的戰(zhàn)術(shù)技術(shù),傾向于與敏捷方法結(jié)合使用毕籽。這些實踐并不是專屬敏捷的抬闯,但許多敏捷實現(xiàn)已經(jīng)看到了采用它們的價值。比如站立會議关筒,計劃撲克溶握,產(chǎn)品需求條目(backlog),持續(xù)集成蒸播,開發(fā)人員用于工作的所有特定工件(artifacts)睡榆。
敏捷工具
團隊根據(jù)這些方法進行工作實踐的具體技術(shù)實現(xiàn)。JIRA Agile(又名Greenhopper)袍榆,planningpoker.com等胀屿。
理想情況下,較高級別可以賦予較低級別內(nèi)容價值 - 在不了解基本原理的情況下使用某種工具和實踐的人員或組織可能看到包雀,也可能看不到工具和實踐的價值宿崭,這種“貨物崇拜”方法通常被認為具有次優(yōu)結(jié)果。
我認為人們談論的DevOps的不同內(nèi)容可以直接映射到這些相同的級別才写。
DevOps價值觀
我認為葡兑,敏捷宣言有效地包含了基本的DevOps價值觀,或許應當更加強調(diào)將整個服務或軟件完全交付給客戶赞草,而不是簡單的“可工作的軟件”讹堤。以前有一些對DevOps的定義,如Alex Honor的“人超越過程房资,超越工具”蜕劝,呼應了敏捷宣言的內(nèi)容檀头,并鼓勵開發(fā)和運維的協(xié)作轰异。
DevOps原則
沒有一個所有人都同意的列表岖沛,但有幾個廣泛接受的- 約翰·威利斯的“CAMS”,詹姆斯·特恩布爾的定義搭独。 “基礎設施作為代碼”是經(jīng)常被引用的DevOps原則婴削。我在“DevOps宣言”中削減了現(xiàn)有的敏捷宣言和原則。我個人認為牙肝,DevOps在概念層面上主要只是敏捷原則的擴大唉俗,它包括系統(tǒng)開發(fā)和運維,而不是停止在代碼完成階段配椭。
DevOps方法
一些方法是一樣的虫溜;您可以使用在運維中使用Scrum,看板等(雖然通常更傾向于將運維股缸、開發(fā)衡楞、QA和產(chǎn)品團隊集成在產(chǎn)品團隊中)。存在一些更特別的方法敦姻,如可視化運維風格的變更控制瘾境,使用事件命令系統(tǒng)進行事件響應等。這些方法的集合正在增長:例如镰惦,更周全的監(jiān)測方法是常見敏捷方法未明確定義的領(lǐng)域迷守。
DevOps實踐
作為實現(xiàn)上述概念和過程的一些特定技術(shù)。持續(xù)集成和持續(xù)部署旺入,“使您的開發(fā)人員隨時在線”兑凿,使用配置管理,指標和監(jiān)控方案眨业,工具鏈工具的方法...使用虛擬化和云計算也是一種常見的做法急膀,用于加速現(xiàn)代基礎設施。
DevOps工具
用于實施這些原則的工具龄捡。在DevOps世界中卓嫂,發(fā)布(jenkins,travis聘殖,teamcity)晨雳,配置管理(puppet,chef奸腺,ansible餐禁,cfengine),編排(zookeeper突照,noah帮非,mesos),監(jiān)控,虛擬化和容器化(AWS末盔,OpenStack 筑舅,wagrant,docker)等等陨舱。而與敏捷一樣翠拣,說一個工具是“DevOps工具”,意味著它將神奇地將DevOps帶給你是不正確的游盲。當然误墓,正在開發(fā)的一些具體工具,其目的是促進上述原則益缎,方法和實踐谜慌,并且符合對DevOps的理解,應該包含在DevOps 工具中莺奔。
就像它的前輩 Agile 一樣畦娄,DevOps有些難以定義。 但盡可能的給出 DevOps 的定義是值得的弊仪。 當停留在純粹的哲學層面時熙卡,兩者可能看起來都像老生常談,受到批評“你只是告訴我把工作做的更好些...”,但相反励饵,只有實踐而沒有更高層次的指導會變成貨物崇拜驳癌。 “我做這個只是因為Scrum書上是這么說的,所以我在做敏捷”是錯誤的役听,因為我正在使用 Chef(一個集群自動化管理工具)颓鲜,所以我在做DevOps對嗎?成為一個成功的敏捷或DevOps從業(yè)者要了解所有層次的知識典予,一個具體DevOps實現(xiàn)可能包含或不包含的內(nèi)容甜滨。
最后,DevOps希望為敏捷帶來的是一種理念和一組實踐瘤袖,軟件在成功交付給用戶并滿足他們對可用性衣摩,性能和變化速度的期望之前尚未完成。