最近老是碰到這個(gè)名詞概漱,所以想了解一下這個(gè)到底是撒玩意丑慎?
DevOps(Development和Operations的組合詞)是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱瓤摧,用于促進(jìn)開(kāi)發(fā)(應(yīng)用程序/軟件工程)竿裂、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門(mén)之間的溝通、協(xié)作與整合照弥。
它是一種重視“軟件開(kāi)發(fā)人員(Dev)”和“IT運(yùn)維技術(shù)人員(Ops)”之間溝通合作的文化腻异、運(yùn)動(dòng)或慣例。透過(guò)自動(dòng)化“軟件交付”和“架構(gòu)變更”的流程这揣,來(lái)使得構(gòu)建悔常、測(cè)試、發(fā)布軟件能夠更加地快捷给赞、頻繁和可靠机打。
它的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開(kāi)發(fā)和運(yùn)營(yíng)工作必須緊密合作片迅。
從定義來(lái)看残邀,其實(shí)devops就是為了讓開(kāi)發(fā)、運(yùn)維和QA可以高效協(xié)作的流程。(可以把DevOps看作開(kāi)發(fā)芥挣、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)三者的交集驱闷。)
DevOps對(duì)應(yīng)用程序發(fā)布的影響
在很多企業(yè)中,應(yīng)用程序發(fā)布是一項(xiàng)涉及多個(gè)團(tuán)隊(duì)空免、壓力很大空另、風(fēng)險(xiǎn)很高的活動(dòng)。然而在具備DevOps能力的組織中鼓蜒,應(yīng)用程序發(fā)布的風(fēng)險(xiǎn)很低痹换,原因如下?[2]?:
(1)減少變更范圍
與傳統(tǒng)的瀑布模式模型相比,采用敏捷或迭代式開(kāi)發(fā)意味著更頻繁的發(fā)布都弹、每次發(fā)布包含的變化更少娇豫。由于部署經(jīng)常進(jìn)行,因此每次部署不會(huì)對(duì)生產(chǎn)系統(tǒng)造成巨大影響畅厢,應(yīng)用程序會(huì)以平滑的速率逐漸生長(zhǎng)冯痢。
(2)加強(qiáng)發(fā)布協(xié)調(diào)
靠強(qiáng)有力的發(fā)布協(xié)調(diào)人來(lái)彌合開(kāi)發(fā)與運(yùn)營(yíng)之間的技能鴻溝和溝通鴻溝;采用電子數(shù)據(jù)表框杜、電話會(huì)議和企業(yè)門(mén)戶(wiki浦楣、sharepoint)等協(xié)作工具來(lái)確保所有相關(guān)人員理解變更的內(nèi)容并全力合作。
(3)自動(dòng)化
強(qiáng)大的部署自動(dòng)化手段確保部署任務(wù)的可重復(fù)性咪辱、減少部署出錯(cuò)的可能性振劳。
與傳統(tǒng)開(kāi)發(fā)方法那種大規(guī)模的、不頻繁的發(fā)布(通常以“季度”或“年”為單位)相比油狂,敏捷方法大大提升了發(fā)布頻率(通常以“天”或“周”為單位)历恐。
實(shí)現(xiàn)DevOps需要什么?
硬性要求:工具上的準(zhǔn)備
上文提到了工具鏈的打通专筷,那么工具自然就需要做好準(zhǔn)備∪踉簦現(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
腳本語(yǔ)言: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ù)庫(kù):MySQL陡蝇、Oracle、PostgreSQL等關(guān)系型數(shù)據(jù)庫(kù)赞弥;cassandra毅整、mongoDB、redis等NoSQL數(shù)據(jù)庫(kù)
項(xiàng)目管理(PM):Jira绽左、Asana悼嫉、Taiga、Trello拼窥、Basecamp戏蔑、Pivotal Tracker
在工具的選擇上,需要結(jié)合公司業(yè)務(wù)需求和技術(shù)團(tuán)隊(duì)情況而定鲁纠。(注:更多關(guān)于工具的詳細(xì)介紹可以參見(jiàn)此文:51 Best DevOps Tools for #DevOps Engineers)
軟性需求:文化和人
DevOps成功與否总棵,公司組織是否利于協(xié)作是關(guān)鍵。開(kāi)發(fā)人員和運(yùn)維人員可以良好溝通互相學(xué)習(xí)改含,從而擁有高生產(chǎn)力情龄。并且協(xié)作也存在于業(yè)務(wù)人員與開(kāi)發(fā)人員之間。
出席了2016年倫敦企業(yè)級(jí)DevOps峰會(huì)的ITV公司在2012年就開(kāi)始落地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)佑笋。