用AWS实现安全弹性的CI/CD管道

译文
开发 架构
AWS提供了针对DevOps的配套工具和流程,用户可以利用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】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2022-05-19 09:00:00

安全CI/CD工具

2022-02-22 09:00:00

软件开发CI/CD 管道工具

2023-01-30 15:55:08

2023-05-04 16:03:50

KubernetesCI/CD集成

2021-07-02 16:30:01

CICDDevOps

2020-12-15 16:13:21

DevSecOpsCICD

2021-09-26 09:26:46

开发安全CICD管道

2021-07-28 13:23:32

CICD管道安全漏洞

2023-02-19 15:28:39

CI/CD 管道集成开发

2020-11-17 11:18:31

Docker

2018-08-24 09:00:00

DevOps持续集成连续部署

2023-05-24 16:20:39

DevOpsCI/CD 管道软件开发

2021-08-31 09:00:00

开发Azure DevOp集成

2023-04-18 08:17:11

GitLab持续集成

2023-05-09 16:20:54

蓝绿部署CI/CD 管道自动化部署

2024-11-06 14:40:18

2021-03-31 09:00:00

管道集成工具

2021-01-21 06:06:30

Jenkins分支管道CI

2023-07-17 13:44:23

2020-10-21 14:10:28

工具测试开发
点赞
收藏

51CTO技术栈公众号