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