优维科技解构CI/CD本质:很强大但并不万能

2023-05-29 0 602

优维科技解构CI/CD本质:很强大但并不万能

CI/CD是什么?它如何协助他们更慢地北迁、布署?它值得称赞他们这么贝阿尔恩县吗?责任编辑将一探到底。

CI/CD的全名是Continuous Integration and Continuous Delivery,原意是稳步软件系统和稳步交货,它智能化了从起初的标识符递交,一直到布署的开发过程,消解了大部分的芒翁成本。

CI/CD业务流程负责构筑、试验和布署新标识符到生产自然环境。Prometheus曾这样赞扬:它使软件项目组能更慢地布署质量更快的应用软件。听起来很幸福,但它在真实世界自然环境中有效吗?标准答案是依赖于系统这类的复杂程度。

让他们将CI/CD回收出来并分别探讨。CI的争论较细且更加常见。具体来说,它是使用智能化使项目组能够高效率、频密地将标识符更动分拆到共享资源存储库的一种作法。每一递交单厢在CI伺服器上促发两个智能化组织工作流,该组织工作流运转一连串任务以保证递交能安全地分拆到主组成部分中。两个好的CI业务流程倚赖几组好的试验。保护一组具有足够多覆盖面积且不虚弱的试验为丛藓科扭口藓,高试验覆盖面积通常须要较长的时间才能运转,这会影响开发者的劳动生产率。

这是两个艰困的均衡操作,但值得称赞牺牲恰当的不懈努力。

CI中常见的辅助工具有什么样呢?两个好的源码信息系统是所有人的基础。

Github是两个非常盛行的范例,它拥有构筑应用软件所须要的所有人,包括源码、试验JAVA和构筑应用应用软件流程的JAVA。

有许多辅助工具能管理CI业务流程这类。GithubActions和BuildKite是现今常见的事例,Jenkins、CircleCI和TravisCI也很普遍,这些辅助工具主要用于管理构筑和试验任务。

有许多用于编写和运转试验的试验辅助工具,这些辅助工具通常是特定于语言和生态系统的。

例如对于JavaScript而言,Jest是单元试验框架,而playwright和cypress则是常见的web应用流程软件系统试验框架。

构筑辅助工具则更加的多样化且倚赖特定的生态系统。

比如Greadle就是一款强悍的Java构筑辅助工具。JavaScript构筑的生态系统非常碎片化,很难跟踪。webpack是一款标准化的辅助工具,有很多新的构筑辅助工具声称要快得多,但它们的可扩展性其实还不如webpack。

接下来他们看一下CI/CD中CD的部分。

CD就是稳步布署。老实说,真正的稳步布署是很难的,它确实存在,但在实践中并不具备CI那样的普遍性。

许多项目组只在最基本的系统类型上练习CD。这些系统通常不会过时,例如API或Web伺服器层,通过良好的生产监控,这些系统能以最小的风险实现稳步布署,不仅不会过时,而且回滚通常也非常的安全高效率。将新功能包装在功能标志中,使得标识符布署与功能激活分开也是一种常见的作法。它能协助项目组在新功能引发任何问题时都能快速关闭,而且无需完全回滚。大家或许都知道,对于拥有数亿用户的产品,金丝雀布署也是常见的作法。

在大规模布署新标识符之前,先布署到一小部分高级用户和员工中,他们在期待新功能的同时又愿意承担风险以协助发现bug。这允许项目组在真实世界自然环境中试验新标识符,同时在出现问题时限制爆炸半径。这些技术适用于简单的无状态系统。

另一方面,很少有项目组有资源或信念在复杂的主要系统(如数据库后端集群)或其他类型的主要系统(如websocket集群)上实施真正的连续切换布署。

相反,这些系统通常采用固定的布署节奏,布署过程是手动的,有风险且耗时长,它们须要两个专门的项目组来保护,很少看到这些系统完全连续和自动部署。

那么现在有什么样用于CD的辅助工具呢?

他们前面提到的 Github Actions、BuildKite和Jenkins等辅助工具通常都是用于处理 CD 任务的。

还有一些特定于基础架构的辅助工具能使 CD 更易于保护,例如在Kubernetes上,ArgoCD就很受欢迎。

总之,CI/CD是一种强悍的应用软件开发实践,能协助项目组更慢地交货质量更快的应用软件。

但是,它并不是两个放之四海皆准的LX1解决方案,其实现程度会因为系统的复杂程度而呈现不同效果。

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务