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