软件设计和开发中该如何开始使用 CI / CD?

在软件设计和开发中,加快速度的关键是称为CI / CD的操作原理和实践的集合,它结合了持续集成(CI)和持续交付(CD)。 CI / CD使软件开发团队可以更频繁,更可靠地交付代码更改,从而更快地满足业务及其客户的需求。

持续集成是一种编码哲学和一组实践,旨在驱动开发团队进行较小的更改并经常将代码签入版本控制存储库。 鉴于当今大多数应用程序要求团队使用不同的平台和工具来开发代码,因此团队需要一种方法来集成和验证其更改。

持续集成的目的是创建一种一致,自动化的方式来构建,打包和测试软件应用程序。 集成过程中的一致性使开发团队可以更频繁地实施代码更改,从而增强了协作和软件质量。

同样在本系列中:

  • 2020年的数字化转型状态 (CIO)
  • 6个数字化转型成功案例 (CIO)
  • 安全在数字转换中的作用是什么? (CSO)
  • 如何应对数字化转型对网络的影响 (网络世界)
  • 建立联系:协作应用程序在数字化转型中的作用 (Computerworld)

持续集成之后的持续交付使应用程序自动交付到选定的基础架构环境。 如今,大多数开发团队除了在生产环境(包括测试环境)外,还在多种环境中工作,并且持续交付可确保采用自动方式将代码更改推送到这些不同的环境。

持续集成和持续交付需要持续测试,因为目标是向最终用户交付高质量和安全的应用程序和代码。 连续测试通常作为在管道内执行的一组自动化回归,性能和其他测试进行部署。

CI和CD在一起(CI / CD)包含一种文化,一套操作原则和一组可加速软件开发过程的实践。 该实现也称为CI / CD管道,被认为是devop团队的最佳实践之一。

行业专家说,越来越多的组织正在实施CI / CD,因为它们希望增强内部或客户使用的软件应用程序的设计,开发和交付。

研究公司Gartner的副总裁兼分析师Sean Kenefick说:“我们肯定会看到CI / CD的使用正在增加。” “我个人一直都在不断进行开发,测试和发布方面的问题。”

Kenefick说,Gartner最近的“企业敏捷”调查显示,越来越多的团队在进行敏捷开发 ,并且敏捷团队在持续集成,自动化验收测试和开发方面的执行率明显更高。

Kenefick说:“我认为CI是创建自动化管道的自然起点,而这正是团队倾向于开始的领域。” “ CD的最困难的方面是对自动化测试和应用程序重新架构的需求,以便可以单独测试和发布少量功能。”

云解决方案高级主管Josh Quint说,实际上,云咨询公司ServerCentral Turing Group参与的所有新软件项目都使用了一定程度的CI / CD。

这种趋势背后的核心驱动力是无服务器计算基础架构需要CI / CD集成。 安全要求要求开发人员登录到生产基础架构的权限有限或没有登录; Quint说,敏捷方法需要更快的部署和测试周期。

CI / CD已成为许多参与开发的组织的主流策略。

“持续的集成技术,全面的自动化测试和持续交付等技术专长只能一次由髋关节掌握,而现在,传统企业已成功地完成了新潮的创业公司。”持续部署能力的技术总监Hasan Yasar说,在卡内基梅隆大学软件工程学院(SEI)任职。

以下是一些建议的实施和维护CI / CD策略的做法。

尽早让参与CI / CD的主要利益相关者参与

Yasar说,最好让所有开发项目的利益相关者尽早参与到项目开始之初。

Yasar说:“最大的好处是,在项目的每个阶段,所有利益相关者的参与都可以做出发展决定。” 例如,IT运营人员将在体系结构决策中拥有发言权,因此开发人员可以在经过IT批准的基础架构上进行开发。

Yasar说:“这应该在所有类型的利益相关者的所有决策中完成,以便所有重大决策都可以由会议室内的专家做出。” “这种做法大大减少了整个项目生命周期中通常累积的技术债务。”

选择并实施正确的CI / CD系统-并继续实施

容器安全技术提供商StackRox的资深开发工程师Josh Komoroske说,市场上的CI / CD系统可以为组织提供具体的价值,并且它们的使用表明工程/产品组织的健康程度。

“如果构建,测试和部署新功能变得微不足道,那么(一个)组织应对变化的能力就会大大提高,”负责StackRox的CI / CD流程的Komoroske说。 “如果要花几周甚至几个月的时间才能在您的客户面前取得成功,那么其他人将可以并会做得更好。”

但是,公司在研究支持CI / CD流程的软件时需要进行足够的研究。 Komoroske说:“由负责产品技术指导,寿命或健康状况的人专门花一些时间来研究生态系统和可用的解决方案。” “请他们征求该产品开发人员的意见。 他们将成为CI / CD系统的主要客户,因为他们每天都会处理它。”

一旦组织选择了这样的系统,就需要避免不使用的问题。 “这些解决方案中的大多数都可以免费试用,并且可以与GitHub之类的平台集成,” Komoroske说。 “设置一个集成,并使其开始构建某些东西。 自动化构建,测试或部署。 当人们看到这些系统为其工作流程提供价值时,他们自然会开始将更多任务迁移到它们上。”

将全面的自动化测试与手动批准相结合

Kenefick说,连续交付基本上由四个主要部分组成:

  • 重新架构以进行隔离
  • 测试自动化
  • 创建自动化流程管道
  • 自动化环境的供应和配置

他说:“这四个组成部分相当笼统,可能需要许多单独的实践来实现它们。”

例如,为了使测试自动化,团队将专注于测试优先方法,以加强自动化单元测试和功能测试的创建。 创建一组自动回归,性能和安全性测试; 并进行自动化测试,以确保正确配置了环境和业务流程平台。

Kenefick说:“没有任何一项测试比其他测试更重要,这很重要。” Kenefick说:“并且应该与其他质量实践相结合,例如使用静态分析工具,确保通过拉动请求进行同行评审以及使用持续集成管道。”

Quint说,确保在部署过程中的关键时刻有手动批准步骤。 他说:“手动批准步骤可防止未经测试或未经批准的代码进入生产环境或更高的测试环境。” “这还使您可以控制代码到达关键环境的时间。”

跟踪指标以确保CI / CD成功

与大多数其他技术和流程部署一样,CI / CD并非“一劳永逸”的主张。

“对构建/测试/部署周期的时间和脆弱性有深入的了解,” Komoroske说。 “确定优化和改进的领域和机会。 快慢于慢,但可靠性和正确性胜于速度。”

Komoroske说,CI / CD流程和相关工具应被视为“力量倍增器”,从减少工程设计,测试时间和缩短产品上市时间方面获得回报。

通过采用CI / CD,组织可以在开发和工程上实现可衡量的改进,并且他们应该衡量这些改进并随时间进行性能比较。

协作软件提供商Altimetrik的工程主管Farid Roshan说:“ Devops建立在持续学习和改进的前提下,大多数组织在采用CI / CD的早期就忽略了它。” 他说,公司应该在CI / CD工具上进行数据清单,以帮助确定在整个开发过程中要衡量的关键绩效指标,绩效目标和分析。

了解采用CI / CD的业务驱动力,并考虑未来需求

对于组织而言,重要的是要理解为什么它实际上需要采用CI / CD,以便组织的开发团队能够建立必要的能力,以确保实现关键目标。

“正确完成后,CI / CD可以改善   开发人员的生产力,交付框架的优化,运营效率和敏捷转换。” Roshan说。

Roshan说,第一代CI / CD平台是作为业务流程服务开发的,该服务将整个产品生命周期中的流程连接起来,以提高生产率。 但是,根据开发代码所需的时间,这样的平台可能不会产生强大的投资回报(ROI)。

Roshan表示:“现代CI / CD功能采用模块化架构,允许采用“即插即用”采用模型,并且可以通过管道配置来支持各种交付框架。 适当地将流水线作为代码实现,可使工程团队开发高级功能,以满足业务的当前需求。 但是预测将来的需求也很重要。

“为您的业务目标未来状态开发CI / CD功能,” Roshan说。 “在基于现有流程的筒仓中采用devops CI / CD将导致[工具采用]分散,缺乏标准化,并且将为实现交付敏捷性提供最小的ROI。 这种失误会在整个企业中产生连锁反应。”

使有意义的任何地方自动化

Yasar说,作为CI / CD的一部分,组织应该使可以自动化的东西自动化,并清楚地描述不能自动化的事情。 他说:“自动化是devop的Struts之一,也是从实现CI / CD的devop实施中获得的主要好处之一。”

通过“基础架构即代码”(IaC)的实践,SEI推荐的敏捷开发方法成为可能-使用devops团队用于源代码的相同版本控制方法来管理网络,虚拟机和负载均衡器等基础架构组件,并通过自动化各种环境。

Yasar说:“组织可以采用流程和实践来启用IaC,包括配置管理,环境供应等。” “目标是将所有自动化程序都视为代码,并存储在安全的版本控制系统中。”

理想情况下,基础结构代码与应用程序代码存储在同一存储库中,操作团队和其他利益相关者可以随时访问它。

From: https://www.infoworld.com/article/3513499/how-to-get-started-with-cicd.html

你可能感兴趣的:(软件设计和开发中该如何开始使用 CI / CD?)