隨著技術(shù)和業(yè)務(wù)的不斷發(fā)展,企業(yè)的IT架構(gòu)也更趨向于雙模態(tài)勢(shì),一邊是對(duì)于核心業(yè)務(wù)系統(tǒng)穩(wěn)定運(yùn)行的要求,一邊是對(duì)于系統(tǒng)快速迭代的需求。對(duì)于這些“運(yùn)營(yíng)者”而言,DevOps的引入能極大的提升業(yè)務(wù)的效率。
領(lǐng)先的公有云服務(wù)提供商在提供基礎(chǔ)計(jì)算資源的同時(shí)也向用戶提供運(yùn)維服務(wù)的平臺(tái)(PaaS)以及其他云軟件基礎(chǔ)設(shè)施服務(wù)。其中,AWS的DevOps體系中就有CodeCommit 代碼版本控制服務(wù),CodePipeline 持續(xù)交付服務(wù),CodeDeploy 部署和分發(fā)等諸多適用于DevOps場(chǎng)景下的產(chǎn)品。
今天就讓我們介紹下AWS的CodeDeploy。
CodeDeploy能將應(yīng)用程序部署、分發(fā)到開發(fā)、測(cè)試、生產(chǎn)環(huán)境中。從代碼的存儲(chǔ)、管理、版本控制結(jié)合著構(gòu)建、打包,然后進(jìn)行分發(fā)、部署,最后完成優(yōu)化、運(yùn)維這一整套開發(fā)運(yùn)維的流程,CodeDeploy能快速的將已經(jīng)構(gòu)建好的代碼發(fā)布到it環(huán)境中。
CodeDeploy著眼于將大系統(tǒng)分解為多個(gè)SOA服務(wù),通過部署分解后的SOA服務(wù)來處理整個(gè)系統(tǒng)的部署。相當(dāng)于把整個(gè)系統(tǒng)部署分成多個(gè)局部部署,分而治之。CodeDeloy定義了基于時(shí)間部署流程接口,在接口定義中,定義多個(gè)部署文件拷貝源目標(biāo)部署映射,以及部署中各個(gè)步驟以及步驟之間的執(zhí)行順序。
其優(yōu)點(diǎn)在于:
1、自動(dòng)化部署:可以將代碼自動(dòng)部署到任意的實(shí)例中,還會(huì)隨著基礎(chǔ)設(shè)施進(jìn)行擴(kuò)展,這樣可以避免傳統(tǒng)維護(hù)中手動(dòng)操作帶來的錯(cuò)誤,還可以很大程度的提高部署效率,節(jié)約人力物力等。
2、最大程度減少停機(jī)時(shí)間:可以跨實(shí)例進(jìn)行滾動(dòng)更新,并根據(jù)可配置的規(guī)則追蹤應(yīng)用程序的運(yùn)行狀況。
3、集中控制:CodeDeploy會(huì)生成詳細(xì)報(bào)告,以便能夠查看每個(gè)應(yīng)用程序修訂版的部署時(shí)間以及部署到哪些實(shí)例中,這些都是可以通過控制臺(tái)或AWS CLI輕松管理的。
4、易于采用:與平臺(tái)和語言無關(guān),可以與現(xiàn)有的軟件發(fā)布過程或持續(xù)交付工具鏈進(jìn)行集成。
5、與其他服務(wù)結(jié)合:CodeDeploy可以和彈性負(fù)載均衡(Elastic Load Balancer)、自動(dòng)擴(kuò)展組(Auto Scaling Group)等服務(wù)結(jié)合,完成無縫升級(jí)和動(dòng)態(tài)部署。
場(chǎng)景示例:
某客戶所有的工作負(fù)載都運(yùn)行在AWS中,在AWS上有大量的生產(chǎn)環(huán)境、測(cè)試環(huán)境、開發(fā)環(huán)境,客戶項(xiàng)目更新迭代非常快,如何快速部署、動(dòng)態(tài)發(fā)布成為客戶首要解決的問題。
1、我們幫助客戶進(jìn)行環(huán)境分組,分別劃分為開發(fā)環(huán)境、測(cè)試環(huán)境以及生產(chǎn)環(huán)境,將這些環(huán)境獨(dú)立分隔。
2、使用CloudFormation定義的CodeDeploy和CodePipeline配置創(chuàng)建一個(gè)部署管道,快速的將代碼部署到這三個(gè)環(huán)境中。
3、CodeDeploy結(jié)合ELB做灰度測(cè)試和動(dòng)態(tài)發(fā)布,解決快速迭代,整體提高it運(yùn)維的敏捷性。