目前在國外谱醇,互聯(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究竟是怎樣一回事宰闰?
http://www.cnblogs.com/cy163/p/3869175.html
http://www.importnew.com/17770.html
什么是DevOps
DevOps (a clipped compound of "development" and "operations") is a software development process that emphasizes communication and collaboration between product management, software development, and operations professionals. DevOps also automates the process of software integration, testing, deployment and infrastructure changes.[1][2] It aims to establish a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.https://en.wikipedia.org/wiki/DevOps
DevOps是強調(diào)產(chǎn)品管理茬贵,軟件開發(fā)和運營專業(yè)人員之間溝通和協(xié)作的軟件開發(fā)過程簿透。DevOps還可以自動化軟件集成,測試解藻,部署和基礎(chǔ)設(shè)施變更過程老充。DevOps旨在建立一套快速、頻繁舆逃、穩(wěn)定地進行構(gòu)建蚂维,測試,發(fā)布軟件的文化與環(huán)境路狮。https://en.wikipedia.org/wiki/DevOps
2 DevOp工具鏈
Code — Code development and review, version control tools, code mergingBuild — Continuous integration tools, build statusTest — Continuous testing tools that provide feedback on business risksPackage — Artifact repository, application pre-deployment stagingRelease — Change management, release approvals, release automationConfigure — Infrastructure configuration and management, Infrastructure as Code toolsMonitor — Applications performance monitoring, end–user experiencehttps://en.wikipedia.org/wiki/DevOps#DevOps_toolchain
1
DevOps是什么虫啥?從哪里來?****DevOps的概念DevOps一詞的來自于Development和Operations的組合奄妨,突出重視軟件開發(fā)人員和運維人員的溝通合作涂籽,通過自動化流程來使得軟件構(gòu)建、測試砸抛、發(fā)布更加快捷评雌、頻繁和可靠。DevOps概念早先升溫于2009年的歐洲直焙,因傳統(tǒng)模式的運維之痛而生景东。
DevOps是為了填補開發(fā)端和運維端之間的信息鴻溝,改善團隊之間的協(xié)作關(guān)系奔誓。不過需要澄清的一點是斤吐,從開發(fā)到運維,中間還有測試環(huán)節(jié)厨喂。DevOps其實包含了三個部分:開發(fā)和措、測試和運維。
換句話說蜕煌,DevOps希望做到的是軟件產(chǎn)品交付過程中IT工具鏈的打通派阱,使得各個團隊減少時間損耗,更加高效地協(xié)同工作斜纪。專家們總結(jié)出了下面這個DevOps能力圖贫母,良好的閉環(huán)可以大大增加整體的產(chǎn)出。
歷史變革由上所述盒刚,相信大家對DevOps有了一定的了解腺劣。但是除了觸及工具鏈之外,作為文化和技術(shù)的方法論伪冰,DevOps還需要公司在組織文化上的變革誓酒≌寥洌回顧軟件行業(yè)的研發(fā)模式贮聂,可以發(fā)現(xiàn)大致有三個階段:瀑布式開發(fā)靠柑、敏捷開發(fā)、DevOps吓懈。DevOps早在九年前就有人提出來歼冰,但是耻警,為什么這兩年才開始受到越來越多的企業(yè)重視和實踐呢隔嫡?因為DevOps的發(fā)展是獨木不成林的,現(xiàn)在有越來越多的技術(shù)支撐甘穿。微服務(wù)架構(gòu)理念腮恩、容器技術(shù)使得DevOps的實施變得更加容易,計算能力提升和云環(huán)境的發(fā)展使得快速開發(fā)的產(chǎn)品可以立刻獲得更廣泛的使用温兼。
(注:上圖摘自上月紅帽副總裁Ashesh Badani的一次新聞分享會)
2
DevOps的幾個關(guān)鍵問題****好處是什么秸滴?****DevOps的一個巨大好處就是可以高效交付,這也正好是它的初衷募判。Puppet和DevOps Research and Assessment (DORA) 主辦了2016年DevOps調(diào)查報告荡含,根據(jù)全球4600位各IT公司的技術(shù)工作者的提交數(shù)據(jù)統(tǒng)計,得出高效公司平均每年可以完成1460次部署届垫。與低效組織相比释液,高效組織的部署頻繁200倍,產(chǎn)品投入使用速度快2555倍装处,服務(wù)恢復(fù)速度快24倍误债。在工作內(nèi)容的時間分配上,低效者要多花22%的時間用在為規(guī)劃好或者重復(fù)工作上符衔,而高效者卻可以多花29%的時間用在新的工作上找前。所以這里的高效不僅僅指公司產(chǎn)出的效率提高,還指員工的工作質(zhì)量得到提升判族。DevOps另外一個好處就是會改善公司組織文化躺盛、提高員工的參與感。員工們變得更高效形帮,也更有滿足和成就感槽惫;調(diào)查顯示高效員工的雇員凈推薦值(eNPS:employee Net Promoter Score)更高,即對公司更加認同辩撑。快速部署同時提高IT穩(wěn)定性界斜。這難道不矛盾嗎?快速的部署其實可以幫助更快地發(fā)現(xiàn)問題合冀,產(chǎn)品被更快地交付到用戶手中各薇,團隊可以更快地得到用戶的反饋,從而進行更快地響應(yīng)。而且峭判,DevOps小步快跑的形式帶來的變化是比較小的开缎,出現(xiàn)問題的偏差每次都不會太大,修復(fù)起來也會相對容易一些林螃。
因此奕删,認為速度就意味著危險是一種偏見。此外疗认,滯后軟件服務(wù)的發(fā)布也并不一定會完全地避免問題完残,在競爭日益激烈的IT行業(yè),這反而可能錯失了軟件的發(fā)布時機横漏。
3
為什么DevOps會興起谨设?****為什么會繼續(xù)火下去?****條件成熟:技術(shù)配套發(fā)展技術(shù)的發(fā)展使得DevOps有了更多的配合缎浇。早期時铝宵,大家雖然意識到了這個問題的,但是苦于當時沒有完善豐富的技術(shù)工具华畏,是一種“理想很豐滿鹏秋,但是現(xiàn)實很骨感”的情況。DevOps的實現(xiàn)可以基于新興的容器技術(shù)亡笑;也可以在自動化運維工具Puppet侣夷、SaltStack、Ansible之后的延伸仑乌;還可以構(gòu)建在傳統(tǒng)的Cloud Foundry百拓、OpenShift等PaaS廠商之上。來自市場的外部需求:這世界變化太快IT行業(yè)已經(jīng)越來越與市場的經(jīng)濟發(fā)展緊密掛鉤晰甚,專家們認為IT將會有支持中心變成利潤驅(qū)動中心衙传。事實上,這個變化已經(jīng)開始了厕九,這不僅體現(xiàn)在Google蓖捶、蘋果這些大企業(yè)中,而且也發(fā)生在傳統(tǒng)行業(yè)中扁远,比如出租車業(yè)務(wù)中的Uber俊鱼、酒店連鎖行業(yè)中的Airbnb、圖書經(jīng)銷商Amazon等等畅买。能否讓公司的IT配套方案及時跟上市場需求的步伐并闲,在今天顯得至關(guān)重要。DevOps 2016年度報告給出了一個運維成本的計算公式: 停機費用成本 = 部署頻率 * 版本迭代失敗概率 * 平均修復(fù)時間 * 斷電的金錢損失來自團隊的內(nèi)在動力:工程師也需要對于工程師而言谷羞,他們也是DevOps的受益者帝火。微軟資深工程師Scott Hanselman說過“對于開發(fā)者而言,最有力的工具就是自動化工具”(The most powerful tool we have as developers is automation)。工具鏈的打通使得開發(fā)者們在交付軟件時可以完成生產(chǎn)環(huán)境的構(gòu)建犀填、測試和運行萌京;正如Amazon的VP兼CTO Werner Vogels那句讓人印象深刻的話:“誰開發(fā)誰運行”。(You build it, you run it)
4
實現(xiàn)DevOps需要什么宏浩?********硬性要求:工具上的準備上文提到了工具鏈的打通,那么工具自然就需要做好準備】肯梗現(xiàn)將工具類型及對應(yīng)的不完全列舉整理如下:代碼管理(SCM):GitHub比庄、GitLab、BitBucket乏盐、SubVersion
構(gòu)建工具:Ant佳窑、Gradle、maven
自動部署:Capistrano父能、CodeDeploy
持續(xù)集成(CI):Bamboo神凑、Hudson、Jenkins
配置管理:Ansible何吝、Chef溉委、Puppet、SaltStack爱榕、ScriptRock GuardRail
容器:Docker瓣喊、LXC、第三方廠商如AWS
編排:Kubernetes黔酥、Core藻三、Apache Mesos、DC/OS
服務(wù)注冊與發(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
壓力測試: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ù)庫
項目管理(PM):Jira晋渺、Asana、Taiga脓斩、Trello木西、Basecamp、Pivotal Tracker
随静、數(shù)據(jù)庫部署腳本
1)add.sh 創(chuàng)建 grp_000* 庫八千,在該庫下創(chuàng)建schema :grp_000*、log_000*燎猛、stat_000*恋捆。其中序列號從1開始遞增,庫的序列號和schema序列號一直
./add.sh 創(chuàng)建線上庫
./add.sh test 創(chuàng)建測試庫(參數(shù)為test)
./add.sh train 創(chuàng)建聯(lián)系庫(參數(shù)為train)
[[圖片上傳失敗...(image-2d3ade-1510644263836)]
2)add_pms.sh 創(chuàng)建pms schema, 在grp_000*下創(chuàng)建名稱為pms_000*_00000* schema重绷。 標黃部分序列號和所屬庫一直鸠信,標藍的序列號從1開始遞增
./add_pms.sh grp_000* (參數(shù)為庫名)
[[圖片上傳失敗...(image-d468b-1510644263836)]
2、備份腳本
1)備份非pms庫论寨,備份文件會打tar壓縮包
pg_backup_all.sh
[[圖片上傳失敗...(image-8f2208-1510644263835)]
2)夜審備份
A星立、夜審前備份
pms_before_night_audit.sh pms_0001_000001 (參數(shù)為pms類schema名稱)
[[圖片上傳失敗...(image-9e18ed-1510644263835)]
pms_before_night_audit.sh](https://dev.jointwisdom.net/confluence/download/attachments/29101250/pms_before_night_audit.sh?version=1&modificationDate=1509520379000&api=v2)
B、夜審后備份
pms_after_night_audit.sh pms_0001_000001 (參數(shù)為pms類schema名稱)葬凳。 判斷依據(jù) hpt_cmm_hoteldate表字段ngt_dt大于今天時間绰垂。
[[圖片上傳失敗...(image-7d5712-1510644263835)]
3、數(shù)據(jù)遷移
1)單庫遷移(庫為單位)
備份文件位置/mnt/ops/scripts/test_env/pg_migrate火焰, 備份文件庫名.sql
a.備份./export_db.sh grp_0001 (參數(shù) 為庫名)
[[圖片上傳失敗...(image-31931b-1510644263835)]
b.拷貝備份文件到要目標服務(wù)器下的 /mnt/ops/scripts/test_env/pg_migrate
c.導(dǎo)入數(shù)據(jù)./import_db.sh grp_0001 (參數(shù) 為庫名)
[[圖片上傳失敗...(image-4df6bf-1510644263835)]
2)單schema遷移(schema為單位)
備份文件位置/mnt/ops/scripts/test_env/pg_migrate 劲装,備份文件庫名.schema名稱
a. 備份./ schema_migration.sh expect grp_0001 grp_0001 (3參數(shù),第1個 expect 操作類型為導(dǎo)出昌简, 第2個grp_0001為庫名占业, 第3個grp_0001為schema名稱)
[[圖片上傳失敗...(image-ec47b8-1510644263835)]
b. 拷貝備份文件到要目標服務(wù)器下的 /mnt/ops/scripts/test_env/pg_migrate
c. 導(dǎo)入數(shù)據(jù)./ schema_migration.sh import grp_0001 grp_0001 grp_test_0001 grp_test_0001 (5參數(shù), 第1個impect 操作類型為入纯赎, 第2個grp_0001為導(dǎo)出庫名谦疾, 第3個grp_0001為導(dǎo)出schema名稱,第4個grp_test_0001 為導(dǎo)入庫名 第5個grp_test_0001為導(dǎo)入schem名稱)
4犬金、新增腳本
1)export_template_and_scp.sh
[[圖片上傳失敗...(image-e14791-1510644263835)]
export_template_and_scp.sh](https://dev.jointwisdom.net/confluence/download/attachments/29101250/export_template_and_scp.sh?version=1&modificationDate=1509520379000&api=v2)
導(dǎo)出模板并傳輸?shù)铰?lián)系庫念恍,供線上和練習(xí)系統(tǒng)部署庫使用
2)transmit_dev_to_train.sh 庫名grp_0001
導(dǎo)數(shù)數(shù)據(jù)庫六剥,傳輸?shù)铰?lián)系庫
[[圖片上傳失敗...(image-70d672-1510644263835)]
3)export_template_and_scp.sh 庫名grep_train_0003
練習(xí)庫導(dǎo)入