从 CI_CD 到 DevOps
扫描二维码
随时随地手机看文章
在当下的数字化转型浪潮中,其目标之一便是找到一种新的工作方式,使组织能够更高效和轻松地应对快速的变化,同时以更快的速度向客户交付更多价值。
CI/CD 是一种在应用开发阶段通过自动化的方式,频繁向客户交付应用的方法,其核心概念是持续集成、持续交付和持续部署。CI/CD 可以让持续的自动化与监控贯穿整个生命周期,覆盖从集成到测试再到交付与部署,与之相关联的事务通常被统称为“CI/CD 管道”,具体实施则由开发和运维团队以敏捷开发的方式协作。
持续集成 CI
持续集成(CI)是支持迭代开发的重要概念,从 20 世纪 90 年代末开始流行,属于开发人员的自动化流程。成功搭建的 CI 意味着应用代码会定期更新、测试并合并到共享存储库中。这种方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
现代应用开发的目标是让多位开发人员同时处理同一应用的不同功能。但如果企业有“合并日”计划,即计划在一天之内合并所有分支源代码,则可能造成工作繁琐、耗时,而且需要手动完成所有工作。造成此困境的原因是,当一个独立工作的开发人员在对应用进行更改时,可能也有其他开发人员在进行更改,这就会带来冲突,而如果每个开发人员都有自定义的本地集成开发环境,而不是整个团队基于云的 IDE 达成一致,那么问题会更严重。
基于此,持续集成 CI 可以有效改善上述问题。他可以帮助开发人员更频繁地将代码合并到共享分支或“主干”中去,一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试,来验证这些更改,确保这些更改没有对应用造成破坏。这也意味着测试内容会涵盖从类和函数,到组成整个应用的不同模块,如果自动化测试发现新代码和现有代码之间存在冲突,CI 则可以更加轻松快速地修复这些错误。
持续集成是一种基础技术,它可以帮助企业在实现目标的道路上,尽早并且经常性地发布功能,从而为业务创造价值。
持续交付、持续部署 CD
持续交付最早是敏捷方法中的一个概念,是将软件交付过程从缓慢的节奏、较长的发布周期转变为快速、增量与迭代的方式的关键。有了这个概念,团队便可确保开发的每个功能在任何时候都可以发布到生产环境中,借助一些自动化平台和工具,只需要按下一个按钮,就可以发布更改,无需等待满场的测试和发布周期。
当然,想要达成持续交付,产品开发团队需要采用一些重要的技术与实践,根据《数字化转型:企业破局的 34 个锦囊》一书中传授的技巧,这些技术包括:
构建包括业务人员的更小的跨职能团队。
将需求分节成更细粒度的、有价值的、可发布的独立单元。
在“迭代”中工作,在开始下一个迭代之前,从开始到生产中完成一个小需求。
编写完全自动化的测试,创建安全的网络环境。这样,短的发布周期就可以在没有繁重的人工过程和工作的情况下得到适当的测试。
使用自动化技术,以一致的方式在从开发到生产的所有环境中启用“一键”部署。
将基础设施“作为代码”管理,以更容易地根据需要创建和重新创建环境,来消除瓶颈,实现可伸缩性和灾难恢复。
有了持续交付,团队就可以确保在任何时候都能将开发的每个特性发布到生产环境中。
同时,CD 的另一个概念是指持续部署。对于一个成熟的 CI/CD 管道来说,最终阶段的持续部署,是持续交付的延伸,持续部署可以自动将应用发布到生产环境。持续部署在很大程度上需要依赖精心设计的测试自动化。
实际上,持续部署意味着开发人员对应用的更改可能在更改完成之后的几分钟内就生效,这更有利于持续接收和整合用户反馈。总而言之,所有这些 CI/CD 的关联步骤都有助于降低应用的部署风险,因此更便于频繁发布对应用的更改。
对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。
不过,在实施持续部署之前,还需要有自动化测试环节,以适应 CI/CD 中的各种测试和发布阶段。自动化测试可帮助实现持续交付,从而确保软件质量和安全,并提高代码生产效率。
从 CI/CD 到 DevOps
2009 年左右,持续交付成为敏捷团队的标准实践,与此同时,另一种叫做 DevOps 的想法开始在开发者社区中流行开来。
在大多数技术组织中,软件开发和运维是两项各自独立的活动。软件系统投入生产后,会有一个专门的团队做运维工作,包括管理和维护生产环境、软件配置、监视性能等等,并且处理生产过程中遇到的问题与处理用户投诉等等。
而从敏捷开发,到持续交付的出现,再到 DevOps 概念的提出,其目的都是为促使企业更快、更频繁地发布软件。
近年来,许多以“解放开发者生产力”为宗旨的工具出现,其本意都是希望让开发人员从繁琐的重复性编码工作中解放出来,而将精力集中在更高难度的设计和规划层面。从 DevOps 概念之中,新一代全自动软件开发平台正在普及。
近日,在有关基础软件黄金时代之下的新一代开发工具的讨论之中,飞算 SoFlu 全自动软件工程平台频频出镜。飞算云智总裁陈定玮表示,飞算 SoFlu 全自动软件工程平台可以实现一次开发、到处部署,后续不与平台本身强绑定,且整个平台使用可视化的模式面向 Java 开发,单从外表看与 BPM 模式类似,但内在逻辑有很大不同,平台上提供的每个组件都是一个技术点,类似于代码块。
飞算 SoFlu 全自动软件工程平台的出发点是想让 DevOps 真正的落地,而实现“落地”,首先重点要解决的就是开发的问题, 包括开发的品质、安全和效率等,再逐步解决测试和运维问题。
陈定玮透露,飞算曾经服务过一家国有背景的企业,其主要需求是开发一个电商平台,涵盖商品推荐、下单、客服、秒杀等众多单元。为了完成该平台的研发,该企业组建了一个数十人的研发团队花费了一年左右,上线之后依旧出现了很多问题,比如功能无法满足需求、系统稳定性遭受质疑、信息安全达不到要求,最重要的是无法在短期内对上述问题进行修复。
在使用了飞算 SoFlu 全自动软件工程平台之后,该企业仅投入了五、六位研发人员在 45 天内,就基于飞算 SoFlu 全自动软件工程平台完成了开发,且测试过程也表明平台的稳定性经得起考验,该电商平台可以根据企业的后续需求独立部署到任何平台,所有数据企业均可自行存储且平台本身已经将很多安全规范包含其中,保证了数据的安全。
不可否认,DevOps 的成功离不开这些平台与工具的帮助,当一个组织善用工具来改善自身的生产流程,将正确的内容源源不断交付至生产环境中,才能最有效地实现价值。