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