在前面的文章中我们了解到 CI/CD 通过部署一条自动化的流水线,帮我们解决了软件交付中的一些常见问题,利用频繁且自动化交付软件的思想方法实现了更快更好地交付软件,接下来让我们悉数更多 CI/CD 带来的好处。制品库管理的具体问题可以到我们网站了解一下,也有业内领域专业的客服为您解答问题,值得您的信赖!
CI/CD 创建了一个可重复的、可靠的且可预见的发布流程,从而大大缩短了发布周期,使得新增功能和缺陷修复能更早与用户见面。这么做为我们节省下了巨大的金钱成本,还节省了包括建立和维护这样一个发布系统所需要的时间投入。
大大缩减成本的 CI/CD
自动化流水线的一个巨大优势在于它具有“拉动效应”,它授权团队,把部署的权利下放到各个成员,使测试人员、运维人员或支持服务人员能够做到自服务,即他们可以自行决定将哪个版本的应用程序部署到哪个环境中。
将部署权利下放的 CI/CD
这样做给软件交付带来了许多好处。
授权团队解决快速部署问题
经验告诉我们,缩短发布时间的主要贡献者是那些在整个交付流程中,等待拿到应用程序的某个“好”版本的人。为了得到一个可用的版本,通常需要很多的电子邮件沟通、问题跟踪单,以及其他效率不高的沟通方式。假如是分布式交付团队的话,这一点就成了主要的低效之源。然而实现了部署流水线之后,这个问题就彻底解决了,因为每个人都能看到应该拿哪个版本部署到相应的环境中,而且只需要单击按钮就能完成部署。
授权团队带来的其他众多好处
在实际的软件开发中,不同的开发环境中运行着不同的版本,而不同角色的人工作在其上。能够轻松地将任意版本的软件部署到任意环境的能力能为我们带来很多好处:
测试人员可以选择性地部署较旧的版本,以验证新版本上的功能变化。开发人员可以自己部署某个已发布的版本,用于重现缺陷。运维人员可以自己选一个已知的正确版本,将其部署到生产环境中,实现灾难恢复。
部署工具为不同角色的人员提供了强大的灵活性,改变了以往传统低效的工作方式。总而言之,团队成员可以更好地控制工作节奏,从而改进工作质量,进而让应用程序的质量得以提高。他们之间的协作更加有效,无用的交互更少,可以更高效地工作,因为不需要花太多的时间等待可用的版本。
在整个开发的生命周期中,我们可能在各个环境将错误引入到软件中。在最初的需求分析环节就有可能出错,比如客户提出错误的需求。如果需求分析人员将需求理解错了,那么开发人员也写出了到处都是缺陷的程序,此外还有由不良好的配置管理引入到生产环境的错误。而部署流水线则可以回避这里的由配置所导致的错误。
规避错误的 CI/CD
什么是配置管理、以及配置管理的重要性
当我们说配置管理时,指的是让你识别并控制一组完整信息的流程与机制,这些完整的信息包括比如数据库模式的正确版本、负载均衡器的正确配置信息、应用程序所依赖的 Web 服务的正确 URL 等。一个应用程序正确地工作除了需要正确版本的代码,还需要正确地配置信息,为了让应用良好工作我们必须管理好配置。
以具体的例子为例,服务器 A 的接池限数为100,而 B 的限数是120,这类问题通常看似无关紧要,但某些时候却是至关重要的。比如在业务交易最忙的时段里可能会有突发事故,可能正是由于配置项的不一致性导致的。这种情况通常发生在那些用于指定软件运行环境的配置项上,而且这种配置信息实际上经常通过代码指定新的执行路径。我们必须考虑到这类配置信息的更改,并且需要像对待代码一样,对代码运行的环境进行良好的定义与控制。修改数据库配置、应用服务器或 Web 服务器的话,肯定会让应用程序更快出故障,而且比直接修改编译器或源代码来得更快更容易。
手工进行配置管理的缺点
现实中依赖手工的配置管理存在很多问题。假如这类配置参数都是由手工配置和管理的话,难免会在那种重复性的工作中出现人为错误。在一些重要的位置上,只要一个简单的输入失误就可以让应用程序停止运行。编程语言可以通过语法检查来发现编译问题,单元测试可以验证代码中有没有输入错误。可是很少有哪种检查方式可以用于配置信息的验证,尤其是当这些配置信息是在某个控制台上直接输入的时候。此外,现在的软件系统常常是由几GB的内容组成,没有哪个团队或个人能够在没有机器帮助的情况下,轻松地查出这种大规模软件中的一小处不同。
相比极易出错的手工,为什么不选择机器呢?
部署流水线的好处
机器就可以规避手工容易出错的问题。将配置信息放在版本控制系统中会带来巨大的好处,当我们不小心修改了配置信息,版本控制系统就会发出提醒。这就至少消除了一种非常常见的错误源。当所有的配置信息都放在版本控制系统中以后,接下来就要消除“中间人”了,即让计算机直接使用这些配置信息,而不是再通过手工输入的方式来进行软件配置。
有了部署流水线,部署的灵活性也会大大提升,在一个全新环境上运行应用程序变成了一件相当简单的事。理想情况下,只要安装机器或虚拟镜像,然后配置一些与具体运行环境相关的特定选项,然后就可以使用自动化过程准备好新的部署环境,并选择指定的应用程序版本进行部署。
交付项目往往是一件充满压力的事。当项目越临近发布日期,就越能感觉到压力,而压力也往往带来许多问题。而部署流水线可以大大减缓开发部署的压力。
如果发布只需要单击一下按钮,而且只需要等上几分钟,甚至几秒钟内就可以完成。另外,假如发生了非常糟糕的事情,只要花上相同的几分钟或几秒钟的时间就可以把刚部署的内容恢复到从前的老样子。而且软件发布周期总是很短,那么当前生产环境中的版本与新版本之间的差异应该非常小。如果上述设想都是事实的话,那么发布的风险一定会大大降低,发布是否成功的压力也将大大减少。减少压力的关键在于拥有一个我们前面所描述的自动化部署过程,并频繁地运行它,当部署失败后还能够快速恢复到原来状态。尽管刚开始做自动化时可能会很痛苦,但它会渐渐地变得容易起来,而它给项目和团队带来的好处是不可限量的。
以上这些便是 CI/CD 给软件交付所带来的的众多好处,这些好处让我们看到 CI/CD 无愧是如今的交付利器。
(部分图片来自网络,如有侵权,立即删除) |