用AWS實(shí)現(xiàn)安全彈性的CI/CD管道
譯文【51CTO.com快譯】根據(jù)世界領(lǐng)先研究公司Gartner的報(bào)告顯示:2019年全球公共云平臺(tái)的收入預(yù)計(jì)將增長(zhǎng)17.3%。其中,在云端環(huán)境部署的IT基礎(chǔ)設(shè)施,包括:服務(wù)器、企業(yè)級(jí)存儲(chǔ)、以太網(wǎng)交換機(jī)等方面的總支出將達(dá)到10.9%的年增長(zhǎng)率,也就是說(shuō),今年會(huì)達(dá)到523億美元。與其他IT資產(chǎn)投入相比,與云服務(wù)相關(guān)的應(yīng)用每年的增速都很快。
眾所周知,任何基于云托管服務(wù)所構(gòu)建的大規(guī)模、高彈性的應(yīng)用程序,都需要配有自動(dòng)化的驗(yàn)證、基礎(chǔ)架構(gòu)的升級(jí)、開發(fā)與部署、質(zhì)量保證、以及基礎(chǔ)架構(gòu)的管理等配套功能。目前,針對(duì)傳統(tǒng)基礎(chǔ)架構(gòu)的管理模式,正在被能夠涵括到產(chǎn)品開發(fā)生命周期每個(gè)階段的、構(gòu)建CI/CD管道的模式所取代。
什么是DevOps?
DevOps是將軟件開發(fā)和運(yùn)營(yíng)相結(jié)合的一種方式。它是從敏捷開發(fā)的過(guò)程中發(fā)展起來(lái)的一種文化。其中,持續(xù)集成、持續(xù)交付和持續(xù)部署是隨著DevOps的興起,而新產(chǎn)生的開發(fā)類方法,它們給企業(yè)帶來(lái)了如下方面的好處:
- 實(shí)現(xiàn)團(tuán)隊(duì)之間的溝通、協(xié)作與凝聚力
- 提供針對(duì)應(yīng)用變更、配置和部署自動(dòng)化的優(yōu)秀實(shí)踐
- 提供各種更快的解決方案
- 監(jiān)控和規(guī)劃各種高頻次的產(chǎn)品更新
圖1:DevOps
CI/CD擺脫了過(guò)去的“手動(dòng)門(manual gate)”方式,實(shí)現(xiàn)了針對(duì)驗(yàn)收環(huán)境的全自動(dòng)化驗(yàn)證,并能確定管道是否適合后續(xù)的生產(chǎn)環(huán)境。
持續(xù)集成(Continuous Integration)側(cè)重于從代碼庫(kù)的角度,來(lái)控制各個(gè)開發(fā)者的軟件開發(fā)周期。它可以在一天內(nèi)執(zhí)行多次集成操作。其主要目的是:在早期就能檢測(cè)出集成中的錯(cuò)誤,達(dá)到更緊密的內(nèi)聚和更頻繁的開發(fā)協(xié)作。與之相關(guān)的主要活動(dòng)包括:靜態(tài)代碼分析、單元測(cè)試和自動(dòng)審核。
持續(xù)交付(Continuous Delivery)側(cè)重于測(cè)試,能夠在不同階段、或生產(chǎn)環(huán)境中實(shí)現(xiàn)自動(dòng)化代碼部署,并在獲得更新批準(zhǔn)后,通過(guò)自動(dòng)化的軟件發(fā)布流程,先發(fā)制人地發(fā)現(xiàn)各種部署過(guò)程中的問(wèn)題。
圖2:DevOps階段
DevOps的優(yōu)勢(shì)
- 改進(jìn)了各種協(xié)作、運(yùn)營(yíng)支持、以及更快的修復(fù)
- 提高了靈活性、靈敏性和可靠性
- 實(shí)現(xiàn)基礎(chǔ)設(shè)施的安全性和各類數(shù)據(jù)的保護(hù)
- 能夠更快地維護(hù)與升級(jí)
- 可以將數(shù)字化戰(zhàn)略轉(zhuǎn)變?yōu)轫?xiàng)目
- 提高了整體速度、生產(chǎn)率和IT團(tuán)隊(duì)的工作效率
AWS和DevOps
AWS提供了一整套開發(fā)者工具。用戶可以在安全、可擴(kuò)展、可維護(hù)、且易于集成的環(huán)境中,使用現(xiàn)有的CI/CD工具(如Ansible、Chef、puppet、Terraform等)實(shí)現(xiàn)DevOps的CI/CD。
AWS為虛擬機(jī)或基于容器的服務(wù)提供了CI/CD,以及管理(包括:創(chuàng)建、更新和刪除)所有其他服務(wù)(如:數(shù)據(jù)庫(kù)、存儲(chǔ)、計(jì)算機(jī)、機(jī)器學(xué)習(xí)等)的選項(xiàng)。
圖3:AWS的CI/CD工具
適用于DevOps集成的AWS服務(wù):
- AWS CloudFormation:為基礎(chǔ)架構(gòu)和各種服務(wù)模板提供了準(zhǔn)備工具。這些模板可以用JSON和YAML來(lái)編寫,并且可以通過(guò)版本控制來(lái)進(jìn)行管理。同時(shí),這些模板也可以在Jenkins或任何其他具有AWS CLI(命令行)的CI服務(wù)器上被執(zhí)行。Terraform為AWS Resource Manager提供了一個(gè)選項(xiàng),用戶可以使用到豐富的控件、以及帶有狀態(tài)管理的擴(kuò)展。
- AWS OpsWorks:通過(guò)與配置管理軟件(如Chef)、以及應(yīng)用程序生命周期管理的集成,它提供了更高級(jí)別的自動(dòng)化增值功能。
- AWS CodePipeline:通過(guò)持續(xù)交付和發(fā)布自動(dòng)化服務(wù),它能夠促進(jìn)部署的順利執(zhí)行。用戶可以將設(shè)計(jì)工作流程,運(yùn)用于檢入代碼、構(gòu)建代碼、將應(yīng)用程序部署到階段性的測(cè)試環(huán)境,以及發(fā)布到真正的生產(chǎn)環(huán)境中。
- AWS CodeCommit:這是一種安全的、且具有高可擴(kuò)展性的托管源控制服務(wù)。它可以托管各種私有類型的Git存儲(chǔ)庫(kù)。
- AWS CodeDeploy:它具有跨Amazon E2C集群部署應(yīng)用程序的能力。該服務(wù)能夠盡力地減少停機(jī)時(shí)間,并通過(guò)集中控制,與現(xiàn)有軟件版本、或持續(xù)交付的流程相集成。另外,它支持諸如Claudia和Serverless之類的第三方工具,實(shí)現(xiàn)了對(duì)于AWS Lambda和Elastic Beanstalk的部署。
- AWS ElasticBeanstalk:支持自動(dòng)化、以及眾多其他類型的DevOps優(yōu)秀實(shí)踐,其中包括:自動(dòng)化應(yīng)用程序的部署與監(jiān)視、基礎(chǔ)架構(gòu)的配置、以及版本的管理。同時(shí),它可以輕松地實(shí)現(xiàn)對(duì)于應(yīng)用程序和基礎(chǔ)架構(gòu)的更改、回滾和轉(zhuǎn)發(fā)。
- AWS ECS:這是一種安全的、且具有高可擴(kuò)展性的容器服務(wù),可用于存儲(chǔ)各種Docker鏡像。
- AWS XRay:能夠記錄并跟蹤所有服務(wù)之間的通信,進(jìn)而檢測(cè)各項(xiàng)性能,以及應(yīng)用程序中的權(quán)限問(wèn)題。
- AWS Config:這是一種審核工具,可用于監(jiān)控現(xiàn)有AWS的賬戶資源,并觸發(fā)針對(duì)基礎(chǔ)架構(gòu)的各種變更警報(bào)。
- AWS CloudTrail:它能夠支持有關(guān)治理性、合規(guī)性、運(yùn)營(yíng)性、以及其他風(fēng)險(xiǎn)類型的審計(jì)。
- AWS CloudWatch:該服務(wù)能夠?qū)崟r(shí)監(jiān)控所有的AWS資源與應(yīng)用程序。它通過(guò)設(shè)計(jì)儀表板、報(bào)警和觸發(fā)器的形式,為托管服務(wù)提供一系列的指標(biāo)參數(shù)。
圖4:使用AWS和其他CI工具的管道示例
如今,在軟件開發(fā)的過(guò)程中,傳統(tǒng)的模式正在發(fā)生蛻變,取而代之的是:無(wú)論IT運(yùn)營(yíng),還是開發(fā)人員都應(yīng)遵循如下的系統(tǒng)推進(jìn)原則與理念:
- 基礎(chǔ)架構(gòu)即代碼:我們需要以開發(fā)人員處置測(cè)試代碼的優(yōu)秀實(shí)踐方式,來(lái)處置基礎(chǔ)架構(gòu)。AWS能夠以DevOps為中點(diǎn),去創(chuàng)建并維護(hù)基礎(chǔ)架構(gòu)。
- 持續(xù)部署:這是DevOps的核心戰(zhàn)略概念。其主要目標(biāo)是實(shí)現(xiàn)適合于生產(chǎn)環(huán)境的應(yīng)用程序代碼,并實(shí)現(xiàn)自動(dòng)化部署。
- 自動(dòng)化:專注于基礎(chǔ)架構(gòu)和應(yīng)用程序的設(shè)置、配置、部署與支持。
- 監(jiān)控:由于溝通和協(xié)作是DevOps戰(zhàn)略的基礎(chǔ),因此,及時(shí)獲悉反饋是非常重要的。
- 安全:安全性是需要持續(xù)關(guān)注的。無(wú)論是基礎(chǔ)設(shè)施,還是公司的各項(xiàng)資產(chǎn)都需要得到妥善的保護(hù)。而且在出現(xiàn)問(wèn)題時(shí),開發(fā)人員應(yīng)當(dāng)與運(yùn)營(yíng)人員協(xié)同迅速解決。
為了保證云端軟件及其解決方案能夠得到高效、順利的實(shí)施,我們必須遵循DevOps的相關(guān)原則和實(shí)踐??梢哉f(shuō),DevOps已成為了當(dāng)今技術(shù)領(lǐng)域,特別是云端解決方案的重要組成部分。許多組織都需要通過(guò)DevOps的相關(guān)服務(wù),來(lái)自動(dòng)化地改善協(xié)作、監(jiān)控、管理和報(bào)告的效果,進(jìn)而順利完成產(chǎn)品交付的生命周期。通過(guò)使用AWS的配套工具和流程,用戶可以利用CI/CD來(lái)加速新服務(wù),以實(shí)現(xiàn)運(yùn)營(yíng)的靈活性,交付方式的高效性,并且能夠避免生產(chǎn)環(huán)境中的各項(xiàng)潛在問(wèn)題。
原文標(biāo)題:Secure and Scalable CI/CD Pipeline With AWS ,作者:Chandani Patel
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】