當(dāng)我們談到 DevOps 時(shí),可能討論的是:流程和管理捎迫,運(yùn)維和自動(dòng)化晃酒,架構(gòu)和服務(wù),以及文化和組織等等概念窄绒。那么贝次,到底什么是"DevOps"呢?
什么是DevOps
隨著軟件發(fā)布迭代的頻率越來(lái)越高彰导,傳統(tǒng)的「瀑布型」(開(kāi)發(fā)—測(cè)試—發(fā)布)模式已經(jīng)不能滿足快速交付的需求蛔翅。2009 年左右 DevOps 應(yīng)運(yùn)而生,簡(jiǎn)單地來(lái)說(shuō)螺戳,就是更好的優(yōu)化開(kāi)發(fā)(DEV)搁宾、測(cè)試(QA)、運(yùn)維(OPS)的流程倔幼,開(kāi)發(fā)運(yùn)維一體化盖腿,通過(guò)高度自動(dòng)化工具與流程來(lái)使得軟件構(gòu)建、測(cè)試损同、發(fā)布更加快捷翩腐、頻繁和可靠。
關(guān)于 DevOps 是什么膏燃,DevOps 的合著者 John Willis 寫(xiě)了一個(gè)非常好的帖子茂卦,在這里.
Devops 的好處與價(jià)值
在2016 DevOps 新趨勢(shì)調(diào)查報(bào)告顯示,74% 的公司在嘗試接受 DevOps组哩,那么 Devops 有哪些好處與價(jià)值呢等龙?
代碼的提交直接觸發(fā):消除等待時(shí)間,快速反饋
每個(gè)變化對(duì)應(yīng)一個(gè)交付管道:使問(wèn)題定位和調(diào)試變得簡(jiǎn)單
全開(kāi)發(fā)流程高效自動(dòng)化:穩(wěn)定伶贰,快速蛛砰,交付結(jié)果可預(yù)測(cè)
持續(xù)進(jìn)行自動(dòng)化回歸測(cè)試:提升交付質(zhì)量
設(shè)施共享并按需提供:資源利用最大化
以上可以看出,DevOps 的好處更多基于在于持續(xù)部署與交付黍衙,這是對(duì)于業(yè)務(wù)與產(chǎn)品而言泥畅。而 DevOps 始于接受 DevOps 文化與技術(shù)方法論,它是部門(mén)間溝通協(xié)作的一組流程和方法琅翻,有助于改善公司組織文化位仁、提高員工的參與感柑贞。
Devops與持續(xù)集成
DevOps 是一個(gè)完整的面向IT運(yùn)維的工作流,以 IT 自動(dòng)化以及持續(xù)集成(CI)聂抢、持續(xù)部署(CD)為基礎(chǔ)钧嘶,來(lái)優(yōu)化程式開(kāi)發(fā)、測(cè)試琳疏、系統(tǒng)運(yùn)維等所有環(huán)節(jié)康辑。
縱觀各個(gè) DevOps 實(shí)踐公司的技術(shù)資料,最全面最經(jīng)典的是 flickr 的10+ deploys per day最佳實(shí)踐提到的 DevOps Tools 的技術(shù)關(guān)鍵點(diǎn):
1.Automated infrastructure(自動(dòng)化轿亮,系統(tǒng)之間的集成)
2.shared version control(SVN共享源碼)
3.one step build and deploy(持續(xù)構(gòu)建和部署)
4.feature flags(主干開(kāi)發(fā))
5.Shared metrics
6.IRC and IM robots(信息整合)
以上的技術(shù)要點(diǎn)由持續(xù)集成/部署一線貫穿疮薇,主干開(kāi)發(fā)是進(jìn)行持續(xù)集成的前提,自動(dòng)化以及代碼周邊集中管理是實(shí)施持續(xù)集成的必要條件我注。毫無(wú)疑問(wèn)按咒,DevOps 是持續(xù)集成思想的延伸,持續(xù)集成/部署是 DevOps 的技術(shù)核心但骨,在沒(méi)有自動(dòng)化測(cè)試励七、持續(xù)集成/部署之下,DevOps就是空中樓閣奔缠。
我們做了一款 Hosted 持續(xù)集成產(chǎn)品—— flow.ci 掠抬,它融入了 workflow 機(jī)制的持續(xù)集成(CI)服務(wù),也可以理解為自動(dòng)化流程平臺(tái)校哎,除了集成代碼两波、編譯、測(cè)試之外闷哆,還可以集成常用的工具腰奋、靈活自定義流程,幫助你們塑造一個(gè)更優(yōu)秀智能的 DevOps 環(huán)境抱怔。
DevOps 的技術(shù)棧與工具鏈
Everything is Code劣坊,DevOps 也同樣要通過(guò)技術(shù)工具鏈完成持續(xù)集成、持續(xù)交付屈留、用戶反饋和系統(tǒng)優(yōu)化的整合局冰。Elasticbox 整理了 60+ 開(kāi)源工具與分類,其中包括版本控制&協(xié)作開(kāi)發(fā)工具灌危、自動(dòng)化構(gòu)建和測(cè)試工具康二、持續(xù)集成&交付工具、部署工具乍狐、維護(hù)工具赠摇、監(jiān)控固逗,警告&分析工具等等浅蚪,
補(bǔ)充了一些國(guó)內(nèi)的服務(wù)藕帜,可以讓你更好的執(zhí)行實(shí)施 DevOps 工作流。
版本控制&協(xié)作開(kāi)發(fā):GitHub惜傲、GitLab洽故、BitBucket、SubVersion盗誊、Coding时甚、Bazaar
自動(dòng)化構(gòu)建和測(cè)試:Apache Ant、Maven 哈踱、Selenium荒适、PyUnit、QUnit开镣、JMeter刀诬、Gradle、PHPUnit
持續(xù)集成&交付:Jenkins邪财、Capistrano陕壹、BuildBot、Fabric树埠、Tinderbox糠馆、Travis CI、flow.ci Continuum怎憋、LuntBuild又碌、CruiseControl、Integrity绊袋、Gump赠橙、Go
容器平臺(tái): Docker、Rocket愤炸、Ubuntu(LXC)期揪、第三方廠商如(AWS/阿里云)
配置管理:Chef、Puppet规个、CFengine凤薛、Bash、Rudder诞仓、Powershell缤苫、RunDeck、Saltstack墅拭、Ansible
微服務(wù)平臺(tái):OpenShift活玲、Cloud Foundry、Kubernetes、Mesosphere
服務(wù)開(kāi)通:Puppet舒憾、Docker Swarm镀钓、Vagrant、Powershell镀迂、OpenStack Heat
日志管理:Logstash丁溅、CollectD、StatsD
監(jiān)控探遵,警告&分析:Nagios窟赏、Ganglia、Sensu箱季、zabbix涯穷、ICINGA镐作、Graphite驮瞧、Kibana
順便再分享一個(gè) DevOps BookMarks,涉及了DevOps方方面面的工具和內(nèi)容膨更,有興趣的同學(xué)可以去學(xué)習(xí)下诉稍。
DevOps 最佳實(shí)踐
自 2009 年提出 DevOps 的概念起蝠嘉,很多公司都開(kāi)始實(shí)施 DevOps,國(guó)外比較著名的有Amazon 杯巨、Google蚤告、Facebook等,國(guó)內(nèi)著名的有百度服爷、華為杜恰、阿里等。Amazon 是 DevOps 最佳實(shí)踐的最有說(shuō)服力的代表之一仍源。這是 Amazon 在 Why We Need DevOps 一個(gè)月的 DevOps 快照:
11.6 seconds: 平均部署時(shí)長(zhǎng) (工作日)
1,079: 一小時(shí)的最大部署量
10,000: 主機(jī)平均并發(fā)接收部署量
30,000: 主機(jī)最高并發(fā)接收部署量
從早期的大型 SOA (Service Oriented Architecture)到 DevOps 文化的形成心褐,Amazon 的每個(gè)工程師都可以完全獨(dú)立地編寫(xiě)代碼,測(cè)試代碼笼踩,版本管理逗爹,部署上線,服務(wù)監(jiān)測(cè)等任務(wù)嚎于。這套內(nèi)部強(qiáng)大的 DevOps 文化最終形成核聚變掘而, Amazon 一躍成為世界級(jí)別的云服務(wù)領(lǐng)導(dǎo)者 —— Amazon Web Services (AWS)。
除了 Amazon 外還有一些國(guó)內(nèi)外的 DevOps 實(shí)踐公司于购,一起來(lái)看看袍睡。
- flickr
最全面最經(jīng)典的是 flickr 的10+ deploys per day,簡(jiǎn)直是 DevOps 教科書(shū)般的存在肋僧。
- 百度
百度技術(shù)團(tuán)隊(duì)是如何利用DevOps斑胜,來(lái)看看解密百度持續(xù)交付方法與實(shí)踐控淡。
- 騰訊
百度技術(shù)團(tuán)隊(duì)是如何利用DevOps,來(lái)看看解密百度持續(xù)交付方法與實(shí)踐止潘。
- Netflix
解密Netflix 技術(shù)團(tuán)隊(duì)在整個(gè) DevOps 過(guò)程中使用的部署工具和服務(wù).
- Etsy
2009年掺炭,Etsy建立自己的工具來(lái)更好更快地部署發(fā)布,「Etsy 如何應(yīng)用 DevOps」值得一讀覆山。
2009年,LinkedIn 團(tuán)隊(duì)就開(kāi)始使用自動(dòng)化部署工具泥栖,用于管理在1000+節(jié)點(diǎn)環(huán)境下發(fā)布上千個(gè)應(yīng)用/服務(wù)的復(fù)雜性簇宽。這是 LinkedIn 自己造的輪子 >>Deployment and Monitoring Automation with glu.
- Airbnb
Airbnb 作為第三方平臺(tái)公司,需要迅速發(fā)布多個(gè)小型部署吧享。關(guān)于 Airbnb 的數(shù)據(jù)和基礎(chǔ)設(shè)施魏割,可以參考這個(gè)slides。
- Starbucks
星巴克的 DevOps 計(jì)劃>> Starbucks Announces #DevOpsTogether.
- Ancestry.com
Ancestry.com 是 DevOps 運(yùn)動(dòng)的早期采用者钢颂,是 Continuous Delivery 和 DevOps 運(yùn)動(dòng)的先鋒钞它。想了解更多關(guān)于他們的過(guò)程、遷移和 DevOps 文化殊鞭,不妨查看一下他們的系列文章http://blogs.ancestry.com/techroots/category/devops/遭垛。
DevOps = Culture + Tools
如果想整個(gè)業(yè)務(wù)部署 DevOps,不但需要軟性要求即從上而下的培養(yǎng) DevOps 文化自上而下地進(jìn)行探索操灿,也有硬性工具鏈要求锯仪,才能獲得更高質(zhì)量的軟件交付。
最后趾盐,不論你是技術(shù)Leader庶喜,還是一名Dev、QA 或 Ops救鲤,實(shí)現(xiàn)全面的 DevOps 非常理想化也十分有挑戰(zhàn)久窟,希望這份 DevOps 初學(xué)者指南是一個(gè)好的開(kāi)始:)