在竞争激烈的互联网市场,企业承受着比竞争对手更快、更高质量的软件交付要求,只有当公司快速迭代更新,产品良好的功能集和用户范围才会进一步扩大。因此,很多企业正在尝试采用DevOps和CI/CD方法来提高计划、构建、测试和发布应用程序和特性的能力。IDC预测,到2022年,全球DevOps软件市场将从2017年的39亿美元增至80亿美元。
围绕持续集成,持续部署和持续交付的讨论从未停止,但是实际上但是由于企业在DevOps实践方面的技能不足,CI / CD真正落地实践案例很少,企业因为缺少CI / CD和DevOps自动化实践而产生了不小的损失。
对于许多公司而言,DevOps是他们必须尝试的事情,一方面由于竞争对手也在尝试DevOps,另一方面这将成为一种未来趋势,在没有理解DevOps原理的情况下进行尝试,这是一件非常痛苦的事情。
DevOps项目是一个由统一的portal为主控,由各个领域优秀的开源工具为支撑,通过各种其提供的API对其进行动作触发,数据整合、分析,监控告警,设备管理,报表展示等等功能的集成项目。用户不用担心从不同供应商那里得到许多不同的解决方案。
1 什么是CI/ CD?
每当开发人员提交并将更改推入存储库时,CI系统将重新构建分支并运行所有相关的测试用例,以验证新的更改不会破坏现有的应用程序和功能。
持续交付是持续集成的扩展,它可以帮助用户通过单击按钮部署应用程序。这意味着每次通过CI测试时都要部署更改。这样,用户就可以轻松地自动化构建和测试阶段以及大部分发布过程。
通过持续部署,开发人员将能够在生产环境中自动发布或部署软件。在这个阶段,不会在应用程序中手动签入代码。代码会通过CI过程自动测试问题,如果没有发现问题,则会部署代码。
2 为什么选择CI/ CD?
CI/CD是测试和部署应用程序的最佳实践。为了保证质量,最好的做法是让CI/CD成为部署代码的单一通道。DevOps团队应该确保所有内容都经过CI/CD管道,以便测试和生产中的代码是相同的。这还将减少人为错误,并避免部署未被错误测试的其他版本。
如今,企业采用CI/CD的最大原因之一是软件交付速度更快,产品的快速迭代更新和持续改进方案将有助于提高客户满意度,对于企业来说,这是一个竞争优势,它为企业提供了更多新的特性,可以帮助企业保持领先于竞争对手。
通过CI/CD管道传递代码可以确保在进入交付管道的下一阶段之前,所做的任何更改都符合已建立的标准。任何故障或差异都将阻止此类更改推进到下一个步骤,直到其得到纠正。这只是意味着CI / CD的这种方法可确保不会将错误代码带入生产环境。
CI/CD可以快速促进失败、快速学习和快速交付方法。当你安装了自动CI / CD时,开发人员每次提交代码时,都会在CI / CD流程中不断运行代码,从而可以快速捕获错误-由于每个小更改都需要单独测试,因此更容易隔离错误。
3 什么是CI/ CD管道?
CI/CD管道现在是软件公司的主流,它已经成为现代DevOps环境的支柱。DevOps提出了与文化方面相关的原则和标准,CI/CD侧重于自动化、流程、流程和工具。随着容器化和微服务的引入,CI / CD的场景也发生了变化。现在,每个云供应商都支持和与Docker和Kubernetes之类的工具的集成,以帮助CI/CD管道扩展。
4 持续交付管道的阶段
测试自动化和CI:这是准备新功能和原型的重要阶段,完成编码,然后将代码与基础集成。通过使用CI服务器,就可以完成单元测试和打包。
构建自动化:这是工件被开发人员(即,依赖项,Docker映像)推送到注册表(即,Amazon ECR或Docker Hub或任何容器注册表)的阶段。
Alpha部署:在这个阶段,开发人员签入变更。开发人员可以查看他们所做的更改以及它们如何相互影响并影响其他系统。此外,在这里开发人员可以看到他们是否在master分支中破坏了任何内容
Beta部署:这是测试人员执行手动测试的阶段。仍然需要手动测试才能看到CI工具的完善性。这使DevOps团队可以保证应用程序的状态良好,并且在部署后一定可以正常工作。
生产部署:这是最后一个阶段,应用程序开始运行。
5 市场对CI/ CD的看法是什么?
- Google在全球范围内对关键字“CI/CD管道”的搜索量逐渐增加。
- 当测试自动化公司Mabl调查500名软件测试人员时,53%的人说他们的团队使用持续集成,38%的人使用持续交付,只有29%的人采用持续部署。
- Codefresh的DevOps相关调查显示,三分之一的公司已经实现了一半以上的工作负载自动化,但只有1%的公司实现了自动化。几乎没有人实现了整个CI/CD过程的自动化。许多工程团队的自动化程度还不到整个过程的10%。
- iOS开发者社区调查是迄今为止对苹果平台开发者进行的最大规模的调查,共有2290人填写了问卷,CI/CD问题也是调查的一部分。
以下结果显示,在商业应用程序中,大多数开发者都在实践CI/CD。
图1 你会为你的个人/爱好应用练习持续的交付吗?
图2 您是否对您的企业应用程序进行持续交付?
- 未来: 除非企业采用合适的部署管道,否则他们将无法充分利用容器和DevOps,。公司将开始向客户提供预制管道,比如JFrog管道。需要一个统一的平台,该平台具有支持CI / CD系统所需的所有工具——自动化(管道),二进制存储库管理(Artifactory)、安全(Xray)、发布/部署(分发),等等。JFrog提供了统一的平台。
- Codefresh进行了一项调查,并在KubeCon CloudNativeCon Europe 2019 会议上发布了对130位开发人员的调查结果,结果有些令人震惊。结果表明,将近三分之一(32%)的企业根本不使用任何持续集成或持续交付(CI / CD)平台。60%的调查受访者表示,他们的组织尚未充分利用自动化来加速软件开发和部署。
- GigaOm发布的《市场雷达报告》是一份关于企业CI/CD解决方案的最新研究报告,作者在报告中比较了业内领先的CI/CD解决方案,并根据不同的估值标准对它们进行了评级。结果显示,JFrog、Codefresh和GitLab表现出众,如下所示:
图3:用于CI / CD的GigaOm雷达。资料来源:GigaOm
CI/ CD的DevOps最佳实践,因为它确保开发人员和业务之间的一致性。它提高了自动化程度,开发人员可以更可靠、更频繁地推送代码变更。与此同时,由于环境具有标准配置,并且回滚过程是自动化的,因此业务团队可以获得更高的稳定性。如何利用好CI/CD,开发团队和业务团队都需要就正确的工具和方法达成共识,从长远来看,这些工具和方法有利于业务的发展。
6 云计算与DevOps密不可分
没有云计算你就不能做DevOps,DevOps也不会有多少价值。同样的,没有DevOps, 云计算也不会有太大的价值。
云计算有很多定义,云的基本解释可以定义为支持基础架构供应的系统。因此,它允许将其描述为代码或模板,从而促进可重复流程的创建。这也是DevOps的基本原理,最大限度地自动化软件开发生命周期中的过程/任务。
云计算对CI/CD的最大好处之一是云基础设施的动态特性。这非常适合CI/CD工作负载的短暂性和突发性。云资源可以根据CI/CD工作负载自动伸缩。
无论我们如何定义云技术,也不管是通过哪条DevOps路线来通过云集成实现数字化转型,但在DevOps词典中都可以轻松地将云技术和服务的美学融合在一起,因为它们从根本上补充了DevOps原则和流程。
对于DevOps的实现,敏捷原则充当了驱动因素,因为有更短的发布周期和自动化来快速交付并按时交付。要实现连续实践,云计算是一个很好的推动者,因为资源可以快速用于应用程序生命周期管理中涉及的所有活动。敏捷原则,以及云计算和DevOps实践,使开发人员的生产率和组织的快速增长成为可能。
有了安全的云网关,用户就可以从任何地方、使用任何设备轻松访问企业资源,而不会影响网络的安全性。让用户从他们的设备访问您的网络有时看起来很可怕,但是现代云平台可以提供更多的功能,它们带有内置的安全性堆栈,以帮助管理员提供管理和支持安全性所需的工具。
DevOps与云技术的结合为企业带来了巨大的好处:
1、提高开发人员的生产力和协作能力。
2、通过快速轻松地访问开发环境来加快产品上市时间。
3、帮助自动化不同的重复任务,以便开发人员可以专注于重要的任务。
4、通过采用自动化和基础设施作为代码的方法,可以极大降低云的复杂性和系统维护。
5、利用现代云平台和原理来消除人为错误,从而提高安全性。
6、通过基于云的持续业务操作,帮助消除停机时间。开发人员可以构建带有自动化的无状态应用程序,这将增加可用性和故障转移能力,并提高业务可靠性和客户满意度。
7、 企业使用云计算和DevOps的主要原因之一是在需要时扩展基础设施和应用程序。
7 云部署模型
当云提供商托管组织的应用程序和数据时,它就是公共云。只需建立Internet连接,使用公共云的公司员工就可以访问应用程序。
私有云是指组织的资源(如存储、计算和网络资源)存在于供应商的数据中心。企业之所以青睐私有云,主要是因为它的安全性以及在运行应用程序时存储高度敏感的数据。
另一种更现代的方法是混合云,它是私有和公共云服务的组合。根据流量和需求的考虑,组织可以进行变更。一些客户可能具有on-prem CI / CD系统。其中一些CI/CD系统可以在混合设置中将工作负载扩展到云中。
当需求较高时,工作负载可以在公共云中运行,当一切恢复正常时,返回到私有云。这种方法减少了花在云资源上的开销成本。此外,关键的一点是,敏感信息、数据和关键应用程序可以保存在私有云中。相比之下,敏感性较低的数据和应用程序可以存储和运行在公共云中。
8 结语
如果云是一种乐器,那么DevOps就是演奏它的音乐家。
云计算和DevOps扮演着至关重要的角色,是IT战略中相互关联的部分。云计算和DevOps一起帮助IT将重心从“我们能在多长时间内不停机?”到“我们可以多久交付一次新的稳定的功能/特性?”或者“我们能以多快的速度部署新服务?”