• 我的订阅
  • 科技

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

类别:科技 发布时间:2023-05-29 18:00:00 来源:砍柴网
优维科技解构CI/CD本质:很强大但并不万能

CI/CD是什么?它如何帮助我们更快地迁移、部署?它值得我们这么兴师动众吗?本文将一探究竟。

CI/CD的全称是Continuous Integration and Continuous Delivery,意思是持续集成和持续交付,它自动化了从最初的代码提交,一直到部署的开发过程,消除了大部分的人工干预成本。

CI/CD流程负责构建、测试和部署新代码到生产环境。Prometheus曾经这样评价:它使软件团队能够更快地部署质量更好的软件。听起来很美好,但它在真实环境中有效吗?答案是取决于系统本身的复杂性。

让我们将CI/CD拆解出来并分别讨论。CI的争议较小且更为常见。简而言之,它是使用自动化使团队能够高效、频繁地将代码更改合并到共享存储库的一种做法。每个提交都会在CI服务器上触发一个自动化工作流,该工作流运行一系列任务以确保提交可以安全地合并到主分支中。一个好的CI流程依赖于一组好的测试。维护一组具有足够覆盖率且不脆弱的测试并非易事,高测试覆盖率通常需要更长的时间才能运行,这会影响开发人员的生产力。

这是一个艰难的平衡操作,但值得付出正确的努力。

CI中常用的工具有哪些呢?一个好的源代码管理系统是一切的基础。

Github是一个非常流行的例子,它拥有构建软件所需要的一切,包括源代码、测试脚本和构建软件应用程序的脚本。

有许多工具可以管理CI流程本身。GithubActions和BuildKite是当今常见的案例,Jenkins、CircleCI和TravisCI也很普遍,这些工具主要用于管理构建和测试任务。

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

例如对于Java而言,Jest是单元测试框架,而playwright和cypress则是常见的web应用程序集成测试框架。

构建工具则更加的多样化且依赖于特定的生态系统。

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

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

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

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

在大规模部署新代码之前,先部署到一小部分高级用户和员工中,他们在期待新功能的同时又愿意承担风险以帮助发现bug。这允许团队在真实环境中测试新代码,同时在出现问题时限制爆炸半径。这些技术适用于简单的无状态系统。

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

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

那么现在有哪些用于CD的工具呢?

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

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

总之,CI/CD是一种强大的软件开发实践,可以帮助团队更快地交付质量更好的软件。

但是,它并不是一个放之四海皆准的万能解决方案,其实现程度会因为系统的复杂性而呈现不同效果。返回搜狐,查看更多

责任编辑:

以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。

快照生成时间:2023-05-29 19:45:12

本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。

信息原文地址:

歌锐科技“牛顿”手术机器人全球首次操刀5G远程骨科内镜手术
...者及时享受到优质的医疗服务。立足临床需求,回归医疗本质歌锐打造全新一代智能诊疗装备和系统近年来,技术的革新、政策的出台以及患者需求的增加,都在推动手术机器人行业大跨步向前发展
2023-06-13 12:16:00
构建多租户系统的重要性
...常有益的——这可以降低成本、节省时间并增强协作。从本质上讲,多租户系统上的MLOps团队可以成倍地提高效率,因为他们不会把时间浪费在两个不同的堆栈或系统切换上。多租户系统的采
2023-09-03 20:24:00
解码新质生产力|科创企业如何塑造适应新质生产力的生产关系
...有限公司(下称“深兰科技”)创始人陈海波表示,“从本质上讲,新质生产力并不是通过对传统生产力做局部优化与简单迭代而获得,而是由生产技术的革命性突破、生产要素的创新性配置以及产
2024-01-10 07:10:00
麦当劳的DevOps范儿:Ninja平台工程实践揭秘
...家全员拥抱敏捷、打破界限、追求精益、高效协作的新型科技企业。细观当下,这套凝结着麦当劳集体智慧的平台,俨然已经成为帮助内部开发者提效、赋能业务敏捷交付的IT利器;而谈及未来,
2023-11-03 23:39:00
深化敏捷研发转型,金融行业逐浪数字化“深水区”
...融服务场景,为用户带来全新体验。政策支持上,《金融科技发展规划(2022-2025年)》等诸多重磅文件发布,明确了金融行业数字化转型的目标、任务、路径;市场发展上,金融科技新
2023-06-06 11:41:00
从大模型到Agent会改变的游戏规则
...本的节奏、产品节奏、业务节奏就会失衡,然后就会发生本质和庞氏骗局差不多的事:无限放大预期与畏缩不前的现实先天就是哺育击鼓传花接盘侠的构型。做局再比谁跑的快,到最后谁能肯定是赢
2023-12-02 12:02:00
玩游戏还能推动人工智能发展?
...转自:科技日报视觉中国供图◎本报记者 叶 青人工智能本质上来讲,是模拟人的思维模式开展技术创新,游戏科技为人工智能提供了一种“低成本”的试验场景。在游戏科技领域,人类为了追求
2023-05-09 01:56:00
...联互通,以及通过更强大的智能工具来探索抗老化的一些本质问题等。”这样的科研愿景,值得期待。
2022-12-26 05:32:00
金融企业2024年需要关注的两大DevOps趋势
...程中,制品库扮演着连接CI和CD环节的关键角色。DevOps的本质是将需求转化为软件产品并部署到相应服务器,而制品库关注的正是这个软件包的生命周期信息,包括代码贡献者、需求满
2024-01-31 12:30:00
更多关于科技的资讯: