做机械的外贸网站,c2c商城网站建设方案,专业制作网站 地摊,wordpress修改地址后01、Zadig vs. Jenkins#xff1a;关于时代的选择
最近官方公众号发布了一篇名为 《是时候和 Jenkins 说再见了》的文章#xff0c;引起了社区的广泛关注和讨论。作为曾经最被广泛使用的持续构建交付工具#xff0c;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、BranchPR/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 成为企业在持续交付和开发过程中不可或缺的伙伴共同推动产研的不断创新和进步。