云上持续集成和持续交付的工具
导读:本文共2745.5字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:云计算和人工智能快速发展的今天,软件开发和交付受到了持续的挑战。越来越多的企业面临着软件的安全性,性能的挑战。持续集成(Continuous integration, CI)和持续交付(Continuousdelivery, CD)成为现代软件开发必须采用的方法。不过这对开发人员和运维人员的素质也提出的较高的挑战,很多软件开发工程师没有测试和运维的概念,导致开发出来的软件质量不佳,维护过程中不能实... ...
目录
(为您整理了一些要点),点击可以直达。云计算和人工智能快速发展的今天,软件开发和交付受到了持续的挑战。越来越多的企业面临着软件的安全性,性能的挑战。持续集成(Continuous integration, CI)和持续交付(Continuousdelivery, CD)成为现代软件开发必须采用的方法。不过这对开发人员和运维人员的素质也提出的较高的挑战,很多软件开发工程师没有测试和运维的概念,导致开发出来的软件质量不佳,维护过程中不能实现高可用。所幸当前主流的云平台都提供了大量现成的工具,帮助公司快速搭建平台实现持续集成和持续交付,并保证软件的安全性,可靠性和质量。
软件开发中有很多有趣的原则,比如亚马逊CEO Jeff Bezos提出的两个披萨团队(two-pizza teams)或者面向微服务的架构(microservices/service oriented architecture)。不过这篇文章中,我们主要讨论在云上现有能够实现CI/CD的架构。
持续集成和持续交付(CI/CD)
首先我们来看一下什么是持续集成和持续交付。持续集成(CI)是软件开发中的一种方式,开发人员定期将代码迁入中央代码库,然后进行自动的编译和测试。CI的关键是能够更快地找到Bug,降低测试和软件更新的成本。持续交付(CD)则比CI更进了一步,他需要让代码的变更自动编译,测试和能随时交付。CD可以自动部署到测试环境或者生产环境。
这里要注意的是持续交付(Continuous delivery)和持续部署(Continuous Deployment)的区别。持续交付不是说所有的代码变更都要上生产系统,而是说所有代码变更都可以随时准备好上生产系统,持续交付的好处主要是自动化了软件发布流程,提高了开发的生产效率,提高代码的质量以及更快地发布更新。
这里要多提一句的是DevOps。DevOps是提高一个组织高速交付应用和服务的一组理论,最佳实践以及工具,CI/CD其实也是DevOps的一部分。
实现持续集成和持续交付
首先我们来看一下标准的持续集成和交付的流程:
要实现上述的流程有巨大的工作量,也可以检验一个团队的成熟度。这也是一个通用的流程,当然企业或者团队也
代码
这里我们需要一个中央的代码库来管理所有的代码。在互联网上有大量工具可以用在代码管理上,例如Git,TFS, SVN或者CVS,不过当前Git成为了主流。使用Git作为代码库有很多优点,例如分布式,内容管理或者项目管理。企业可以自己部署一套Git,也可以使用当前著名的代码管理SaaS提供上Github。在云上主要选择如下:
无论哪种工具,都能够实现代码的保存和管理,此外也可以进行版本控制。我们推荐使用云上的服务,避免了大量的后台维护工作。当然如果团队对代码的安全性要求比较高,也可以自己维护git服务器。
编译和测试
在编译里,我们可以使用Jenkins,Gitlab,也可以使用AWS CodeBuild和VSTS实现全自动的编译和执行测试脚本的工作。
部署
管理工具
DevOps工具
在云上实现CI/CD的统一部署
在云上我们有大量现成的工具,可以实现完整的CI/CD以及流程管理,下面我们简要介绍一下如何在AWS和Azure上实现完整的CI/CD。
在AWS上实现CI/CD
AWS提供了完整的CI/CD产品,主要包括AWSCodeStar, AWS CodeCommit, AWS CodePipeline,AWS CodeBuild以及AWSCodeDeploy。在DevOps工具里,提供了AWS Opsworks。这些工具已经完整地为AWS用户实现了CI/CD的各种需求,首先我们可以使用CodeCommit来存储代码,然后用CodeBuild编译,最后使用CodeDeploy进行部署,中间的工作流城通过CodePipeline来管理,也可以用CodeStar一键生成所有需要的环境,在运维阶段用OpsWorks自动部署和扩展。
下图展现了AWS代码服务中的各种产品。
而CodeStar更是在以上代码服务的基础上,增加了环境,Jira,用户管理等支持,将软件开发过程中需要的各种服务集成在了一起。如果我们使用的已经是AWS了,那么可以直接利用现有的产品,非常简单高效地完成CI/CD。
在Microsoft Azure上实现CI/CD
微软在传统软件开发领域有着大量的最佳实践,可以说是走在了整个软件开发流程的前列,下图是微软模式和实践中关于持续交付的流程图:
在Azure上自动化这些流程是非常简单的,所有的工作都可以通过Visual Studio Team Services(VSTS)来实现。Azure不像AWS有各种工具实现不同的功能,他现有的VSTS服务就可以从头到底完整实现。例如同时支持Git和TFVC集中式源代码管理,提供弹性的编译服务,持续自动交付到Azure,自动启动压力和性能测试,并且还有协作,敏捷项目管理等传统的MSF流程。
云计算给传统的软件开发模式带来的巨大的变革,能够快速应用现有的持续集成和持续交付工具的团队,就能够在云计算的时代快速实现高质量软件的开发和交付。我们建议新的项目都能够使用云平台上的各种代码管理和CI/CD产品,免去了自行运维的痛苦,也能够把主要精力放在业务逻辑上。
云上持续集成和持续交付的工具的详细内容,希望对您有所帮助,信息来源于网络。