Zadig vs. Jenkins 详细比较

01、Zadig vs. Jenkins:关于时代的选择

最近官方公众号发布了一篇名为 《是时候和 Jenkins 说再见了》的文章,引起了社区的广泛关注和讨论。作为曾经最被广泛使用的持续构建交付工具,Jenkins 的江湖地位似乎被挑战了。评论中有一条被高度点赞顶起:

作为 Zadig 的创造者,我认为有必要与大家分享一份详细的比较文章。我的职业生涯伴随着工具、技术和基础设施的不断迭代,从十几年前的 TeamCity、Hudson,到 Jenkins、Travis、CircleCI 和 Drone,几乎每个产品和工具我个人都在企业环境下管理或者深度使用过,而 Jenkins 是我曾经非常推崇的选择。

回望 Zadig 来时的路,七年前 Zadig 她还是一个构想(Spock - 星际迷航的科学官及大副);五年前,她还是一个环境管理工具;三年前,她已经是一个好用的面向开发者的 CI/CD 平台;而今她在大规模客户的使用下,已然成为企业级一体化的云原生 DevOps 平台,通过广泛链接合作伙伴,为广义的企业开发者(包括产品、开发、测试、SRE、运维等不同职责的同学)提供简单易用的协同平面。

02、产品设计理念

Jenkins 和 Zadig 两种软件交付体系也因此难以被直观地理解,但她和车身制造技术从传统汽车制造工艺向特斯拉倡导的一体化压铸技术非常相似:传统 Jenkins 软件交付就像传统车身制造工艺,需要大量人员组装大量“零部件”插件完成构建、部署、测试、发布的交付过程;Zadig 生来就是一体化软件交付平台,就像使用超大型压铸机一次压铸成型,直接完成交付。在实现原有功能的同时,完成重量减轻、效率提高、成本降低的一次性交付。

不同的时代、不同的定位

Jenkins

Jenkins 是一款开源、可扩展的自动化构建和交付工具。其设计初衷是为了满足不同团队和项目的需求,提供高度可扩展和灵活的平台。通过插件和扩展,Jenkins 赋予开发团队持续集成和交付的能力,帮助实现软件开发的自动化、协作和快速交付。

Zadig/ZadigX

Zadig 是 KodeRover 公司基于 Kubernetes 自主设计和研发的开源、分布式持续交付产品。它拥有灵活易用的高并发工作流、面向开发者的云原生环境、高效协同的测试管理、强大免运维的模板库和客观精确的效能洞察等重要特性,为工程师提供统一的协作平台。Zadig 内置了 K8s YAML、Helm Chart、主机等复杂场景最佳实践,适用于大规模微服务、高频高质量交付等云原生场景。

而 ZadigX 则是 Zadig 的商业版本,包含了开源 Zadig 的全部功能,并提供灵活可扩展的工作流、多种发布策略编排、一键安全审核、AI 效能提升和诊断等特性。同时,ZadigX 支持定制的企业级 XOps 敏捷效能看板,深度集成多种企业级平台,并通过项目模板化批量快速接入,实现数千个服务的一键纳管治理。其主要目标是帮助企业实现产研的数字化转型,让工程师成为创新引擎,并为数字经济的无限价值链接提供支持。

03、功能差异比对表

以下功能差异主要侧重在 Zadig 与 Jenkins 基础能力的核心差异,部分功能在 ZadigX 中支持

04、核心能力差异详情

1、多服务并行构建部署

Jenkins

Jenkins 诞生于微服务流行之前,所以它在支持微服务方面差强人意。特别是在拥有大量微服务时的可观察性和监控方面,每个微服务都有自己的管道流程。由于不支持一次集成和测试多个服务,Jenkins 缺乏微服务应用程序的基本功能。他的主要实现方式是通过 Groovy 语言编写 Jenkinsfile,通过<parallel>来完成多个服务的并发构建部署,不同的服务组合场景可能需要修改工作流配置,或创建新的工作流来实现,这会导致工作流数量增多,增加管理成本。

Zadig

诞生于大规模应用爆发阶段,对 Kubernetes 环境更具备适应性,原生支持微服务的并发构建、部署、测试,在执行工作流任务时可以根据实际需求任意选择服务组合及其对应的代码信息进行更新,可自由选择<Branch>、<PR/MR>、<Branch+PR/MR>、<Tag>方式进行构建。

字节跳动飞书的 SRE Tech Leader 曾在《字节跳动飞书为什么选择 Zadig 实现主干开发、主干发布》一文中提到:“ 我们深度认同 Zadig 的设计理念,并且认为 Zadig 真正意义上解决了微服务集成测试的痛点。Zadig 毫无疑问是业界优秀的 CI/CD 产品,它也是真正理解微服务、重视微服务、解决微服务痛点的产品。”

2、环境管理及运行时服务可视化

Jenkins

Jenkins 作为传统 CI 工具的典型代表,主要专注于持续集成的能力,并不直接提供环境管理功能。然而,在实际的产品生产和交付过程中,除了 CI 能力外,还需要搭建 CD 相关的能力。这个过程需要耗费额外的人力去维护。

Zadig

Zadig 除了基本的工作流能力外,还支持环境管理以及运行时服务可视化。Zadig 支持分钟级创建或复制一套完整的隔离环境,以应对频繁的业务变更和产品迭代。基于全量基准环境,快速为开发者提供一套独立的自测环境。一键托管集群资源即可轻松调试已有服务,验证业务代码。通过环境可以获取与服务相关的各种信息,例如服务版本、日志和网络等等,以帮助进行问题诊断和团队成员之间的日常沟通和协作。

iMile 运维团队在《iMile 利用 Zadig 多云环境周部署千次,跨云跨地域持续交付全球业务》文章中说道:“Zadig 通过工作流整体串联了 K8s 的各个组件,也串联起了我们整个研发团队,极大地减轻了脚本的维护、环境治理的成本,同时上手也非常简单高效。在项目迭代和交付中起到了极大的帮助作用,节约了大量的时间成本,让专业的人做‘专业’的事儿,让项目研发高效并行,减少团队间的沟通 Gap,给我们的研发交付帮助极大。总结就是‘简单,高效’!”

3、权限管理与协作模式

Jenkins

Jenkins 可以通过插件实现权限的管控,该插件控制 Job 权限的方式是将用户和角色平铺成一张表格,通过勾选的方式来配置用户权限。在用户数量或 Job 数量不断增多的情况下表格会变得异常复杂,难以维护。

Zadig

在 Zadig 协作模式中通过简单配置,可以支持对项目中指定工作流和环境资源做权限控制。

4、安全可靠的生产环境发布

为了确保新版本的安全发布,通常需要利用自动化能力,在发布流程中根据实际情况编排灰度发布策略、进行资源观测,并进行人工确认。

Jenkins

在 Jenkins 上需要通过对每个服务编写灰度发布脚本的方式,再结合一系列的插件来完成整个发布过程,然而这种配置相对繁琐,且维护成本较高。

下图以单个服务的金丝雀发布过程为例子,实际发布过程可能会涉及到多个服务,需要考虑金丝雀过程中使用的 YAML 的管理问题。

Zadig

ZadigX 的发布工作流支持系统内审批、飞书审批流、钉钉审批流,除此之外,支持对接外部系统进行合规审批。工作流内置编排蓝绿、金丝雀、分批次灰度、istio 等发布策略,通过界面即可完成配置过程,简单易操作,发布执行过程透明可靠。

5、产研效能洞察及 AI 诊断分析

Jenkins

Jenkins 工作流步骤都通过脚本的方式来实现,本身不具备业务属性,因此以一个完整的业务单元来统计和分析研发过程、测试过程、发布过程的效能情况难以实现。

Zadig

Zadig 具有工程化的项目协同能力,提供全生命周期的效能数据,帮助分析各个环境的变化过程以及效能短板。ZadigX 为企业管理者提供更多的决策依据,可以通过 ZadigX 自定义效能指标,添加进度项:平均需求交付周期、需求研发交付周期。企业可以定制 XOps 敏捷效能看板,通过项目评分比对快速识别短板,制定适合企业现状的效能目标,用数据驱动持续改进。同时近期也将公开基于 LLM 打造的 AI 企业效能分析模块。

05、其他亮点功能介绍

1、现有项目支持从 Jenkins 平滑过渡

对于现有大量的服务,可以通过托管项目零侵入快速将现有 K8s 集群接入到 Zadig,并且提供了可满足开发人员日常使用的可视化 K8s 管理功能。通过切换为 K8s YAML 项目实现服务 YAML 的全生命周期管理。

除此之外,为了降低那些已经在使用 Jenkins 作为 CI 工具的项目迁移到 Zadig 的成本,Zadig 工作流还兼容支持接入多个 Jenkins 构建。前锅圈 DevOps 工程师曾在《锅圈如何利用 Zadig 从容落地运维容器化建设》一文中提到采用混合方案,快速实现从传统发布方式到容器化发布方式的转变。

2、模板库助力运维规范化治理

Zadig 支持 Dockerfile 模板、K8s YAML 模板、Helm Chart 模版、构建模板、工作流模板,企业根据实际情况抽象出几套服务和构建模板,基于模板可快速新建数百上千的微服务,降低运维新服务接入的复杂度和后续的管理成本。路特斯 DevOps 工程师楚乔在《路特斯如何使用 Zadig 实现混合云全球交付》一文中说道:“模板功能是 Zadig 进阶功能中最强大的,毫不夸张地说,活用模板可以为运维降低 90%以上的事务性工作!目前我们已经可以实现只需维护一套 K8S YAML 模板、一套 DOCKERFILE 模板、一套构建模板便可以满足 95% 的后端项目需求,运维接入一个服务只需要 2 分钟。”

3、安全扫描编排到产品全生命周期

Zadig 支持编排 Coverity、SonarQube、CleanSource (清源) SCA、 DongTai 等安全工具和服务到整个交付链路中,通过强大的运行时环境和自定义工作流能力,为产研团队提供有力的安全支撑。

4、广泛集成内外系统服务于开发者

每家企业都面临着现存系统、技术债和工具链等挑战,这导致了研发过程的碎片化,影响了效率和团队的协作。Zadig 以“平台工程”思路为指导,将碎片化的建设统一起来,依托云原生技术支撑产研交付的关键流程,实现了“一个平台,一键上线”的理念。Zadig 深度集成了项目管理平台 Jira/飞书 Meego、代码管理平台 GitHub/GitLab/Gitee/CodeUp、配置管理工具 Nacos/Apollo,以及数据变更工具 DMS/Flyway/Mysql,从而将产品研发管理由碎片化跃迁为平台化。团队可以自动化高效协同,业务稳定迭代,确保研发过程的顺利进行。

5、测试管理帮助团队打造质量工程

Zadig 测试管理模块支持对接 Jmeter、Pytest 等主流测试框架,给测试人员一个平面,沉淀和管理 UI、API、E2E 测试用例资产。通过工作流,向研发提供前置测试验证能力。通过持续测试和质量分析,充分释放测试价值。

06、关于产品的总结

在上述比对中,我详细对比了 Zadig 和 Jenkins 的设计理念、功能差异以及 Zadig 的特有亮点。它们都旨在为开发人员提供轻松构建和自动化工具,以提高工作效率并释放创造力。然而,随着时代的发展,技术不断进步,新工具不断涌现,Jenkins 曾经是一个很好的选择,但现在可能需要更适应时代的工具。

在选择工具时,企业需要综合考虑需求和团队情况,包括组织规模、业务复杂度和开发者体验等因素,以选择最适合的工具来支持团队的发展和项目的成功。在拥有一定规模微服务(20 个以上)和基于 K8s 容器交付场景时,Zadig 在持续交付、多服务并行部署、运行时环境治理和多服务编排等方面表现出强大的优势,能够支持中型和大型团队的成功交付和项目稳定迭代发展。需要注意的是,在非云原生场景下,Jenkins 依然表现优异,而云原生 CI/CD 工具如 GitLab CI、CircleCI、Argo 和 Tekton 等与 Zadig 也并不冲突,Zadig 可以和它们结合起来,实现统一的开发协同平台,更好的服务于开发者。

07、Zadig 现状和未来展望

Zadig 作为一款年轻的开源工具,在过去的 2 年多时间里随着社区的发展不断得到完善和成长,已成为数千个企业和众多工程师的得力助手。我们团队非常重视来自社区广泛用户的反馈,特别关注开发者体验。为确保用户获得更加顺畅和便捷的使用体验,我们将持续优化产品的交互体验和主要功能路径。随着客户规模的不断扩大,我们将致力于为更多场景提供交付支持和增强能力。

在扩展性方面,我们将进一步增强工作流自定义任务的能力,让用户可以根据自身需求灵活定制工作流程。同时,我们也会提供更多的开发者 OpenAPI,以满足外部系统调用的需求,帮助用户更好地整合和使用 Zadig 产品。

我们团队将持续投入精力,不断改进产品,以满足不断增长的用户需求。我们的目标是为开发者们带来更好的交付体验和平台支持。我们致力于让 Zadig 成为企业在持续交付和开发过程中不可或缺的伙伴,共同推动产研的不断创新和进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/711550.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【字符串函数】

1.strlen的使⽤和模拟实现 size_t strlen ( const char * str ); 1.字符串以 \0 作为结束标志&#xff0c;strlen函数返回的是在字符串中 \0 前⾯出现的字符个数&#xff08;不包 含 \0 )。 2.参数指向的字符串必须要以 \0 结束。 3.注意函数的返回值为size_t&#xff0c;是⽆…

Denoising Prior Driven Deep Neural Network for Image Restoration

之所以能够检索到这篇论文是想看看该论文是如何利用多尺度相似性解决图像去噪问题&#xff0c;除了摘要和结论&#xff0c;论文中两次提到这个术语。next section是指section 4。然后整个section 4&#xff0c;根本没有提多尺度的事儿&#xff0c;更别说解决了。又看了一下The …

excel中按多列进行匹配并对数量进行累加

公司的生产计划是按订单下发&#xff0c;但不同订单的不同产品中可能有用到相同的配件&#xff0c;按单1对1时&#xff0c;对计算机十分友好&#xff0c;但对于在配件库检料的工人来说就比较麻烦&#xff0c;上百条产品里可能会有多条都是相同的产品&#xff0c;首先考虑的办法…

[面试题]Java【并发】

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL 因为 Java 并发涉及到的内容会非常多&#xff0c;本面试题可能很难覆盖到所有的知识点&#xff0c;所以推荐 《Java并发编程的艺术》 。 Java 线程 线程 通知 等待 线…

Linux C编译器从零开发一

基础程序汇编 test.c int main() {return 42; } 查看反汇编 cc -o test test.c objdump -d -M intel test 0000000000001129 <main>:1129: f3 0f 1e fa endbr64 112d: 55 push rbp112e: 48 89 e5 mov rbp,rsp1131: b…

抽象工厂模式(大话设计模式)C/C++版本

抽象工厂模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15927110.html #include <iostream> using namespace std;// 抽象产品Department ,定义具体产品的公共接口 class Department { public:virtual ~Department() default;virtual void Insert()…

Rust 实战丨并发构建倒排索引

引言 继上篇 Rust 实战丨倒排索引&#xff0c;本篇我们将参考《Rust 程序设计&#xff08;第二版&#xff09;》中并发编程篇章来实现高并发构建倒排索引。 本篇主要分为以下几个部分&#xff1a; 功能展示&#xff1a;展示我们最终实现的 2 个工具的效果&#xff08;构建索…

大话C语言:第24篇 预处理

1 C语言编译流程 C语言的编译流程包括&#xff1a; 预编译&#xff1a;将.c 中的头文件展开、宏展开&#xff0c;生成的文件是.i 文件。gcc指令&#xff1a;gcc -E file.c -o file.i 编译&#xff1a;将预处理之后的.i 文件生成 .s 汇编文件。gcc指令&#xff1a;gcc -S file…

逢3必过报数游戏-第13届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第84讲。 逢3必过报数游戏&…

直流放大器

一&#xff0c;概念及存在问题 集成电路主要由半导体材料构成&#xff0c;其内部适合用二极管&#xff0c;三极管等类型的元器件制作&#xff0c;而不适用电容&#xff0c;电感和变压器&#xff0c;因此集成放大电路内部多个放大电路之间通常采用直接耦合。直接耦合电路除了可…

文生视频新王登场:Luma官宣免费、电影级大片生成,Sora?可灵?SD3.0?(内附网址)

✨点击这里✨&#xff1a;&#x1f680;原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; 文生视频新王登场&#xff1a;Luma官宣免费、电影级大片生成&#xff0c;Sora&#xff1f;可灵&am…

TJA1145休眠唤醒调试

目录 项目场景:TJA1145引脚图问题描述SPI链路验证休眠唤醒休眠唤醒配置唤醒报文配置代码相关寄存器:模式寄存器使能CAN唤醒设置唤醒边沿检测事件状态及捕获寄存器CANFD报文不会被识别为有效的唤醒帧项目场景: 最近开发过程中,选择了这颗芯片,踩了很多坑,总算是把这个芯片…

基于RandLA-Net深度学习模型的激光点云语义分割

一、场景要素语义分割部分的文献阅读笔记 RandLA-Net是一种高效、轻量级的神经网络&#xff0c;其可直接逐点推理大规模点云的语义标签。RandLA-Net基于随机点采样获得了显著的计算和内存效率&#xff0c;并采用新的局部特征聚合模块有效地保留了几何细节&#xff0c;弥补了随机…

【报错】无法找到模块“element-plus/es/locale/index.mjs”的声明文件。

报错&#xff1a; 无法找到模块“element-plus/es/locale/index.mjs”的声明文件。“E:/codeAll/work/test1/test2/HealinLikeMe-ui/node_modules/.pnpm/element-plus2.7.3_vue3.4.27_typescript5.4.5_/node_modules/element-plus/es/locale/index.mjs”隐式拥有 "any&quo…

51 USART数据收发

1.0 USART实现单个数据收发 串口启动之前需要对串口进行初始化&#xff0c;主要是设置产生波特率的定时器1&#xff0c;使用串口的工作方式还是中断的工作方式具体的配置步骤如下所示。 注&#xff1a; 1&#xff1a; 确定TMOD &#xff08;定时器模式寄存器&#xff09; 确…

vue3医疗项目

配置src别名 打开viteconfig.js文件进行配置 import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; // 引入node提供内置模块path&#xff1a;可以获取绝对路径 import path from "path";// https://vitejs.dev/config…

Lexar NM620 512GB SSD PCIE3.0 X4测评

Lexar NM620 512GB SSD PCIE3.0 X4测评 官方可选容量256GB~2TB PCIE 3.0X4 支持NVME 1.4协议 CDM顺序Read速度3448MB\s CDM顺序Write速度2626MB\s CDM 4K随机Read速度465MB\s CDM 4K随机Write速度602MB\s AS SSD顺序Read速度为2855MB\s AS SSD顺序Write速度为2331MB\s AS SSD…

增值税发票OCR识别API在Java、Python、PHP中的使用教程

​增值税发票OCR识别是一种利用光学字符识别&#xff08;OCR&#xff09;技术&#xff0c;自动提取和识别增值税发票上的文字信息的过程。增值税发票是企业在销售商品或提供服务过程中产生的一种税务凭证&#xff0c;包含了关键的财务信息&#xff0c;如商品明细、金额、税率等…

紫光展锐5G处理器T750__国产手机芯片5G方案

展锐T750核心板采用6nm EUV制程工艺&#xff0c;CPU架构采用了八核设计&#xff0c;其中包括两个主频为2.0GHz的Arm Cortex-A76性能核心和六个主频为1.8GHz的A55小核。这种组合使得T750具备卓越的处理能力&#xff0c;并能在节能的同时提供出色的性能表现。该核心模块还搭载了M…

推荐一款可以下载B站视频和音频的工具

cobalt是一个免费的下载网站&#xff0c;主要是用于载视频和音频。只要你把相应的网址复制下来&#xff0c;然后打开cobalt网站&#xff0c;黏贴网址&#xff0c;选择要下载的格式&#xff0c;就可以下载相应的音频或者视频了。 该网站非常简洁&#xff0c;使用也很简单。目前只…