一篇文了解DevOps:從概念、關(guān)鍵問題、興起到實(shí)現(xiàn)需求(devops基本概念)
“
目前在國(guó)外,互聯(lián)網(wǎng)巨頭如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb,傳統(tǒng)軟件公司如Adobe、IBM、Microsoft、SAP等,亦或是網(wǎng)絡(luò)業(yè)務(wù)非核心企業(yè)如蘋果、沃爾瑪、索尼影視娛樂、星巴克等都在采用DevOps或提供相關(guān)支持產(chǎn)品。那么DevOps究竟是怎樣一回事?
在Puppet、RightScale分別DevOps出版的調(diào)查報(bào)告基礎(chǔ)上,整理本文,以期為讀者理清思路。另外,中國(guó)正在開展了一份自己的調(diào)查問卷,由南京大學(xué)發(fā)起,歡迎大家戳閱讀原文投票參與。
本文主要結(jié)構(gòu)如下,讀完大概需要 10 分鐘
DevOps是什么?從哪里來?
DevOps的幾個(gè)關(guān)鍵問題
為什么DevOps會(huì)興起?為什么會(huì)繼續(xù)火下去?
實(shí)現(xiàn)DevOps需要什么?
DevOps的采用現(xiàn)狀
1
DevOps是什么?從哪里來?
DevOps的概念
DevOps一詞的來自于Development和Operations的組合,突出重視軟件開發(fā)人員和運(yùn)維人員的溝通合作,通過自動(dòng)化流程來使得軟件構(gòu)建、測(cè)試、發(fā)布更加快捷、頻繁和可靠。
DevOps概念早先升溫于2009年的歐洲,因傳統(tǒng)模式的運(yùn)維之痛而生。
DevOps是為了填補(bǔ)開發(fā)端和運(yùn)維端之間的信息鴻溝,改善團(tuán)隊(duì)之間的協(xié)作關(guān)系。不過需要澄清的一點(diǎn)是,從開發(fā)到運(yùn)維,中間還有測(cè)試環(huán)節(jié)。DevOps其實(shí)包含了三個(gè)部分:開發(fā)、測(cè)試和運(yùn)維。
換句話說,DevOps希望做到的是軟件產(chǎn)品交付過程中IT工具鏈的打通,使得各個(gè)團(tuán)隊(duì)減少時(shí)間損耗,更加高效地協(xié)同工作。專家們總結(jié)出了下面這個(gè)DevOps能力圖,良好的閉環(huán)可以大大增加整體的產(chǎn)出。
歷史變革
由上所述,相信大家對(duì)DevOps有了一定的了解。但是除了觸及工具鏈之外,作為文化和技術(shù)的方法論,DevOps還需要公司在組織文化上的變革?;仡欆浖袠I(yè)的研發(fā)模式,可以發(fā)現(xiàn)大致有三個(gè)階段:瀑布式開發(fā)、敏捷開發(fā)、DevOps。
DevOps早在九年前就有人提出來,但是,為什么這兩年才開始受到越來越多的企業(yè)重視和實(shí)踐呢?因?yàn)镈evOps的發(fā)展是獨(dú)木不成林的,現(xiàn)在有越來越多的技術(shù)支撐。微服務(wù)架構(gòu)理念、容器技術(shù)使得DevOps的實(shí)施變得更加容易,計(jì)算能力提升和云環(huán)境的發(fā)展使得快速開發(fā)的產(chǎn)品可以立刻獲得更廣泛的使用。
(注:上圖摘自上月紅帽副總裁Ashesh Badani的一次新聞分享會(huì))
2
DevOps的幾個(gè)關(guān)鍵問題
好處是什么?
DevOps的一個(gè)巨大好處就是可以高效交付,這也正好是它的初衷。Puppet和DevOps Research and Assessment (DORA) 主辦了2016年DevOps調(diào)查報(bào)告,根據(jù)全球4600位各IT公司的技術(shù)工作者的提交數(shù)據(jù)統(tǒng)計(jì),得出高效公司平均每年可以完成1460次部署。
與低效組織相比,高效組織的部署頻繁200倍,產(chǎn)品投入使用速度快2555倍,服務(wù)恢復(fù)速度快24倍。在工作內(nèi)容的時(shí)間分配上,低效者要多花22%的時(shí)間用在為規(guī)劃好或者重復(fù)工作上,而高效者卻可以多花29%的時(shí)間用在新的工作上。所以這里的高效不僅僅指公司產(chǎn)出的效率提高,還指員工的工作質(zhì)量得到提升。
DevOps另外一個(gè)好處就是會(huì)改善公司組織文化、提高員工的參與感。員工們變得更高效,也更有滿足和成就感;調(diào)查顯示高效員工的雇員凈推薦值(eNPS:employee Net Promoter Score)更高,即對(duì)公司更加認(rèn)同。
快速部署同時(shí)提高IT穩(wěn)定性。這難道不矛盾嗎?
快速的部署其實(shí)可以幫助更快地發(fā)現(xiàn)問題,產(chǎn)品被更快地交付到用戶手中,團(tuán)隊(duì)可以更快地得到用戶的反饋,從而進(jìn)行更快地響應(yīng)。而且,DevOps小步快跑的形式帶來的變化是比較小的,出現(xiàn)問題的偏差每次都不會(huì)太大,修復(fù)起來也會(huì)相對(duì)容易一些。
因此,認(rèn)為速度就意味著危險(xiǎn)是一種偏見。此外,滯后軟件服務(wù)的發(fā)布也并不一定會(huì)完全地避免問題,在競(jìng)爭(zhēng)日益激烈的IT行業(yè),這反而可能錯(cuò)失了軟件的發(fā)布時(shí)機(jī)。
3
為什么DevOps會(huì)興起?
為什么會(huì)繼續(xù)火下去?
條件成熟:技術(shù)配套發(fā)展
技術(shù)的發(fā)展使得DevOps有了更多的配合。早期時(shí),大家雖然意識(shí)到了這個(gè)問題的,但是苦于當(dāng)時(shí)沒有完善豐富的技術(shù)工具,是一種“理想很豐滿,但是現(xiàn)實(shí)很骨感”的情況。DevOps的實(shí)現(xiàn)可以基于新興的容器技術(shù);也可以在自動(dòng)化運(yùn)維工具Puppet、SaltStack、Ansible之后的延伸;還可以構(gòu)建在傳統(tǒng)的Cloud Foundry、OpenShift等PaaS廠商之上。
來自市場(chǎng)的外部需求:這世界變化太快
IT行業(yè)已經(jīng)越來越與市場(chǎng)的經(jīng)濟(jì)發(fā)展緊密掛鉤,專家們認(rèn)為IT將會(huì)有支持中心變成利潤(rùn)驅(qū)動(dòng)中心。事實(shí)上,這個(gè)變化已經(jīng)開始了,這不僅體現(xiàn)在Google、蘋果這些大企業(yè)中,而且也發(fā)生在傳統(tǒng)行業(yè)中,比如出租車業(yè)務(wù)中的Uber、酒店連鎖行業(yè)中的Airbnb、圖書經(jīng)銷商Amazon等等。能否讓公司的IT配套方案及時(shí)跟上市場(chǎng)需求的步伐,在今天顯得至關(guān)重要。
DevOps 2016年度報(bào)告給出了一個(gè)運(yùn)維成本的計(jì)算公式: 停機(jī)費(fèi)用成本 = 部署頻率 * 版本迭代失敗概率 * 平均修復(fù)時(shí)間 * 斷電的金錢損失
來自團(tuán)隊(duì)的內(nèi)在動(dòng)力:工程師也需要
對(duì)于工程師而言,他們也是DevOps的受益者。微軟資深工程師Scott Hanselman說過“對(duì)于開發(fā)者而言,最有力的工具就是自動(dòng)化工具”(The most powerful tool we have as developers is automation)。
工具鏈的打通使得開發(fā)者們?cè)诮桓盾浖r(shí)可以完成生產(chǎn)環(huán)境的構(gòu)建、測(cè)試和運(yùn)行;正如Amazon的VP兼CTO Werner Vogels那句讓人印象深刻的話:“誰開發(fā)誰運(yùn)行”。(You build it, you run it)
4
實(shí)現(xiàn)DevOps需要什么?
硬性要求:工具上的準(zhǔn)備
上文提到了工具鏈的打通,那么工具自然就需要做好準(zhǔn)備?,F(xiàn)將工具類型及對(duì)應(yīng)的不完全列舉整理如下:
-
代碼管理(SCM):GitHub、GitLab、BitBucket、SubVersion
構(gòu)建工具:Ant、Gradle、maven
自動(dòng)部署:Capistrano、CodeDeploy
持續(xù)集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方廠商如AWS
編排:Kubernetes、Core、Apache Mesos、DC/OS
服務(wù)注冊(cè)與發(fā)現(xiàn):Zookeeper、etcd、Consul
腳本語言:python、ruby、shell
日志管理:ELK、Logentries
系統(tǒng)監(jiān)控:Datadog、Graphite、Icinga、Nagios
性能監(jiān)控:AppDynamics、New Relic、Splunk
壓力測(cè)試:JMeter、Blaze Meter、loader.io
預(yù)警:PagerDuty、pingdom、廠商自帶如AWS SNS
HTTP加速器:Varnish
消息總線:ActiveMQ、SQS
應(yīng)用服務(wù)器:Tomcat、JBoss
Web服務(wù)器:Apache、Nginx、IIS
數(shù)據(jù)庫:MySQL、Oracle、PostgreSQL等關(guān)系型數(shù)據(jù)庫;cassandra、mongoDB、redis等NoSQL數(shù)據(jù)庫
項(xiàng)目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
在工具的選擇上,需要結(jié)合公司業(yè)務(wù)需求和技術(shù)團(tuán)隊(duì)情況而定。(注:更多關(guān)于工具的詳細(xì)介紹可以參見此文:51 Best DevOps Tools for #DevOps Engineers)
軟性需求:文化和人
DevOps成功與否,公司組織是否利于協(xié)作是關(guān)鍵。開發(fā)人員和運(yùn)維人員可以良好溝通互相學(xué)習(xí),從而擁有高生產(chǎn)力。并且協(xié)作也存在于業(yè)務(wù)人員與開發(fā)人員之間。
出席了2016年倫敦企業(yè)級(jí)DevOps峰會(huì)的ITV公司在2012年就開始落地DevOps,其通用平臺(tái)主管Clark在接受了InfoQ的采訪,在談及成功時(shí)表示,業(yè)務(wù)人員非常清楚他們希望在最小化可行產(chǎn)品中實(shí)現(xiàn)什么,工程師們就按需交付,不做多余工作。
這樣,工程師們使用通用的平臺(tái)(即打通的工具鏈)得到更好的一致性和更高的質(zhì)量。此外,DevOps對(duì)工程師個(gè)人的要求也提高了,很多專家也認(rèn)為招募到優(yōu)秀的人才也是一個(gè)挑戰(zhàn)。
5
DevOps的采用現(xiàn)狀
哪些公司在用?
DevOps正在增長(zhǎng),尤其是在大企業(yè)中:調(diào)查發(fā)現(xiàn),DevOps的接受度有了顯著提高。74%的受訪者已經(jīng)接受了DevOps,而去年這一比例為66%。目前,在81%的大企業(yè)開始接受DevOps,中小企業(yè)的接受度僅為70%。
那么具體而言都有些公司在采用DevOps呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛歐實(shí)時(shí)全額自動(dòng)清算系統(tǒng))、Walmart、Sony等等。
他們?cè)趺磳?shí)施的?
首先,大企業(yè)正在自下而上接受DevOps,其中業(yè)務(wù)單位或部門(31%)以及項(xiàng)目和團(tuán)隊(duì)(29%)已經(jīng)實(shí)施DevOps。不過,只有21%的大企業(yè)在整個(gè)公司范圍內(nèi)采用了DevOps。
其次,在工具層面上,DevOps工具的用量大幅激增。Chef和Puppet依然是最常用的DevOps工具,使用率均為32%。Docker是年增長(zhǎng)率最快的工具,用量增長(zhǎng)一倍以上。Ansible的用量也有顯著增加,使用率從10%翻倍至20%。
并且調(diào)查還發(fā)現(xiàn)不到半數(shù)(43%)的公司在使用諸如Chef、Puppet、Ansible或Salt等配置工具;然而使用配置工具的公司更有可能同時(shí)使用多個(gè)工具。25%的受訪者使用兩種或更多配置工具,只使用一種工具的比例為18%。其中Chef和Puppet是最常用的組合:使用Chef的組織中有67%同時(shí)也使用Puppet,類似的,使用Puppet的組織中也有67%同時(shí)使用了Chef。
中國(guó)也在準(zhǔn)備一份DevOps的報(bào)告
文中的統(tǒng)計(jì)數(shù)據(jù)來自于國(guó)外的DevOps調(diào)研報(bào)告。其中由Puppet發(fā)起的DevOps年度國(guó)際調(diào)查報(bào)告已經(jīng)連續(xù)出版五年,先后收集了2.5萬技術(shù)人員的答卷;2016年收集的有效答卷為4600份,不過僅有10%來自于亞洲。我們并不認(rèn)為這樣的采樣率和采樣數(shù)量可以充分地反映中國(guó)的DevOps行業(yè)現(xiàn)狀。
目前,依托DevOps中國(guó)社區(qū)成員的積極參與支持,由南京大學(xué)發(fā)起開展《DevOps中國(guó)2016年度調(diào)查》活動(dòng)。期望通過本次問卷調(diào)查,收集DevOps的率先實(shí)踐者們關(guān)于DevOps實(shí)踐及經(jīng)驗(yàn)的相關(guān)信息,從而了解DevOps在中國(guó)推廣應(yīng)用的狀況,并匯總在DevOps實(shí)踐中可能遇到的障礙、挑戰(zhàn)和最佳實(shí)踐,最終通過調(diào)查報(bào)告進(jìn)一步促進(jìn)DevOps在中國(guó)的認(rèn)知和推廣,同時(shí)為DevOps的每一位實(shí)踐者提供有價(jià)值的參考信息和幫助。
期待大家能「戳閱讀原文」填寫調(diào)查問卷,支持中國(guó)DevOps的發(fā)展!
本文首發(fā)于InfoQ垂直號(hào)「高效開發(fā)運(yùn)維」
關(guān)注常規(guī)運(yùn)維、
亦或是正在崛起的DevOps;
探討怎樣穩(wěn)定地提高產(chǎn)品迭代,
讓運(yùn)維有效地交付并實(shí)現(xiàn)IT價(jià)值。
高效開發(fā)運(yùn)維,
在后方為你提供運(yùn)維補(bǔ)給,
愿看你屢立戰(zhàn)功,
愿祝你成為中流砥柱!
▽
喜歡我們的會(huì)點(diǎn)贊,愛我們的會(huì)分享!