打造一个功能全面、稳定且用户体验友好的 DevOps 平台对于推动持续集成、持续交付、团队协作和效率提升至关重要。企业在选择 DevOps 平台时,有的倾向于采用平台类产品,如 Zadig、云效、Coding 等;而另一些企业则基于企业文化和项目需求,在已有的 CI/CD 工具(如 Jenkins、GitLab、Argo、Tekton)基础上自建 DevOps 平台,以实现对企业内部 DevOps 方案的定制。无论是选择平台类产品还是自建平台,都需要在搭建之前进行充分的规划和评估,以确保满足企业的需求并提升 DevOps 实践的效率。
本文将详细分析各个 DevOps 平台和工具的设计理念、特点、局限性等,并从多个维度(团队规模和业务复杂度、多云策略和厂商关联、使用场景和业务需求等)出发,结合企业实际的业务需求给出建议,为企业 DevOps 选型指明方向。
DevOps 平台类产品
Zadig
Zadig 是由 KodeRover 公司基于 Kubernetes 研发的自助式云原生 DevOps 平台,服务端源码 100% 开放。Zadig 提供灵活可扩展的工作流支持、多种发布策略编排以及一键安全审核等特性。该平台还支持定制的企业级 XOps 敏捷效能看板,深度集成多种企业级平台,并通过项目模板化批量快速接入,实现数千个服务的一键纳管治理。其主要目标是帮助企业实现产研的数字化转型,使工程师成为创新引擎,并为数字经济的无限价值链接提供支持 [1]。
01-Zadig 具有以下几个核心特性:
- 灵活易用的高并发工作流
- 面向开发者的云原生环境
- 高效协同的测试管理
- 强大免运维的模板库
- 安全可靠的发布管理
- 稳定高效的客户交付
- 客观精确的效能度量
- 云原生 IDE 插件
02-Zadig 的核心优势:
- 设计理念:产品级交付,包含代码、配置、数据全要素的交付
- 底座真云原生架构:Zadig 基于 k8s 底座,支持较高规模的构建部署并发、多个微服务同时交付场景
- 用户接入难度低:Zadig 支持导入和托管现有服务,并对现有流程几乎无侵入极简、开放,易于企业内落地,不需要改变用户行为
- 产品可用性较强:3 年开源、大量一线真实场景高频使用打磨,积众家之所长,积累 15 万企业开发者,全球累计部署 50 万应用,2000 家企业高频使用,稳定可靠保证,内置众多最佳实践工作模式
- 产品开放性较强:天生支持企业私有化部署,支持全球多地部署、分布式交付分发,针对具有全球化战略的企业更为友好
03-Zadig 的局限性:
- 设计理念和其他 DevOps 平台存在不同,初次接触的用户需要一定时间学习和掌握
- 系统依赖 K8s,对于对于未采用 K8s、完全处于传统主机环境的企业项目而言并不适用
云效
云效是阿里云提供的一站式 DevOps 平台,提供涵盖软件研发全生命周期的研发工具链和研发管理服务,并支持公共云、专有云多种部署形态。通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升 [2]。
云效具有项目协作、代码管理、流水线、制品仓库、测试管理、应用交付平台、效能洞察等核心能力。
01-云效主要特点:
- 开箱即用
- 企业级安全保障
- 实践经验模板化沉淀
- 无缝对接阿里云产品
02-云效的局限性:
- 系统比较厚重,迁移成本比较高
- 耦合度较高,跟阿里云产品深度绑定,对于多云架构的支持不够友好
- 对于非阿里云工具链的扩展较困难
云效与其他平台在设计理念上存在显著差异,云效专注于单应用的交付,将环境管理能力主要集中在应用维度。云效流水线以代码库为主要视角,随着业务增长,流水线数量迅速增加,配置管理难度加大,所以云效更适用于初期快速启动 DevOps 的场景。云效天然亲和阿里云资源和产品,对于多云需求或全球交付需求的企业而言,接入云效可能面临一定的适应难度。
Coding
Coding DevOps 是面向软件研发团队的一站式研发协作管理平台,提供从需求到设计、开发、构建、测试、发布到部署的全流程协同及研发工具支撑 [3]。
Coding 具有团队管理、项目协同、代码仓库、代码扫描、持续集成、持续部署、应用管理等核心能力
01-Coding 主要特点:
- 一站式协作平台及研发工具链
- 支持双态研发体系建设(瀑布模型、敏捷模型)
- 项目度量数据可视化
- 无缝集成第三方平台
02-Coding 的局限性:
- 以代码库为核心的工作流,管理成本较高
- 现有工程体系迁移有一定的成本
- 耦合度较高,跟腾讯云产品深度绑定,对于多云架构的支持不够友好
和其他平台的定位上存在不同,Coding 是流程协同平台,一站式为开发者提供完整的 DevOps 工具链。由于其天然亲和腾讯云资源和产品,对于存在多云架构以及现有业务由其他云平台支撑的场景不够友好。在接入 Coding 过程中,需要做服务的初始化,有一定迁移成本。此外,Coding 构建和部署为两个单独的模块,对于习惯在一条工作流走完所有流程(构建、部署、测试、配置变更、数据变更等)的用户,可能需要重新适应或者调整使用方式。
DevOps 工具类产品
Jenkins
Jenkins 是一款开源、可扩展的自动化构建和交付工具。其设计初衷是为了满足不同团队和项目的需求,提供高度可扩展和灵活的平台。通过插件和扩展,Jenkins 赋予开发团队持续集成和交付的能力,帮助实现软件开发的自动化、协作和快速交付 [4]。
01-Jenkins 的主要特点:
- 扩展性非常强,有大量的插件支持
- 分布式构建
- 流水线项目 pipeline as code 支持在代码仓库中管理
02-Jenkins 的局限性:
- 系统本身安装过程不复杂,但对于插件管理非常繁琐
- 项目实施难度大,所有任务都需要写脚本,维护成本高
- Jenkinsfile 分散到不同的工程中,对于后期维护成本比较高
对用户而言,Jenkins 需依赖众多插件和大量脚本来解决业务交付过程中的构建、部署、测试和自动化流程串接的难题。对于云原生的场景而言需要通过脚本的方式来操作集群,对脚本维护和管理要求比较高。此外 Jenkins 通过插件来管理工作流的权限,权限管理负担较重。
Zadig 和 Jenkins 的比对请参阅 「Zadig vs. Jenkins 详细比对:时代的选择与开发者之选」一文。
GitLab CI/CD
GitLab 是一个基于 Git 的版本控制和协作平台。它提供了一套强大的工具,支持团队协作、代码托管、持续集成、持续交付等软件开发过程中的多个方面 [5]。
GitLab 具有代码仓库管理、CI/CD 流水线、效能管理、敏捷项目管理、集成其他工具等核心能力。
01-GitLab 的主要特点:
- 一站式管理 DevOps 工具
- 自动化工作流程加速软件交付
- 与云厂商解耦
02-GitLab 的局限性:
- As code 工作流配置不直观,学习和维护成本较高
- 缺少基本环境管理能力,需另外搭建其他平台观测服务的情况
- 多角色协同过程中,权限管理比较难,需要给运维测试代码仓库权限才能做 CI/CD,风险较大
GitLab CI/CD 设计理念是以代码仓库为核心,对于小型项目、单仓库顺序交付的场景较为友好,而对于更为复杂的项目和团队多角色协作,使用方面和管理上存在一定局限性。
Argo
Argo 是一个基于 Kubernetes CRD 实现的一个开源工具,基于 Kubernetes 的调度能力实现了工作流的控制和任务的运行。同时提供了一个 UI 方便用户查看任务的详情 [6]。
Argo 有三个核心产品 Workflows 、CD、Rollouts,为持续集成、持续交付、持续部署提供底层能力。
- Workflows:云原生工作流引擎,支持编排构建、测试、部署等场景,支持声明式地管理复杂任务的执行流程
- CD:基于 GitOps 的理念实现自动化部署、回滚和版本管理
- Rollouts:用于实现 Kubernetes 上的蓝绿发布、金丝雀发布、渐进式发布等发布策略,确保生产发布的稳定性
01-Argo 的局限性:
- 声明式的配置,维护和管理成本较高
- 本身提供的 Web UI 无法企业级安全性和合规性要求
- 适用 K8s 场景,对于传统主机场景并不适用
尽管 Argo 在云原生工作流引擎方面表现卓越,但对于完整的 DevOps 解决方案仍有欠缺,缺乏一系列企业管理功能,如环境管理、测试管理和权限控制,因此企业可能需要二次开发以建设相应的管理能力,以满足多角色协作的需求。
Tekton
Tekton 是一个谷歌开源的基于 Kubernetes 的云原生 CI/CD 框架,通过定义 CRD 的方式,让用户可以灵活的自定义流水线以满足自身 CI/CD 需求 [7]。
01-Tekton 的主要特点:
- 高度抽象底层,方便企业定制工作流程
- 与云原生环境无缝对接
- 跨云厂商、技术栈和部署环境,帮助实现标准化的 CI/CD
02-Tekton 的局限性:
- 适用 K8s 场景,对于传统主机场景并不适用
- 自定义资源,有一定的学习成本
Tekton 注重底层灵活性,尽管灵活性强,但也显著增加了使用的难度。因此,要在 Tekton 上实现完整的 CI/CD 过程,就必须进行二次开发,门槛高,需要消耗一定建设成本。
各平台和工具之间的比较
DevOps 体系选型建议
企业在选择 DevOps 平台时,可以从多个角度进行考量,具体选择取决于企业的需求、文化和项目特点。以下是一些建议:
01-团队规模和业务复杂度:
- 小型团队:适用于业务相对简单,研发为主的团队,可考虑选择 GitLab 方案,以代码管理作为入口,开启 GitLab CI/CD 功能,适用于强调全方位版本控制的企业。
- 中型企业:对于复杂业务、多角色协作的情况,可选择一站式平台,如云效、Coding、Zadig,提供开箱即用的协作工具链。
- 大型团队: 针对复杂场景、历史负担重的团队,建议选择功能全面、灵活可扩展的平台,如 Zadig,适用于复杂的异构环境交付流程和大规模的微服务架构。
02-多云架构及全球化战略需求:
- 多云架构需求:若企业有多云和全球化战略,首选 Zadig。它天然支持企业私有化部署,厂商中立,友好支持多云架构,并满足国际化政策需求(i18n、出海合规等)。
- 特定云服务需求: 对于已深度关联某一云厂商的企业,可考虑选择该厂商提供的平台,如云效(阿里云关联)或 Coding(腾讯云关联)。
03-使用场景和业务需求:
- 全生命周期管理需求:若企业需全面管理全流程,可选择 Coding、云效提供的一站式协作平台。Zadig 平台侧重于研发和发布侧的一站式协同,需结合第三方实现业务到研发的衔接。
- 云原生和微服务需求: 针对云原生和微服务架构,Zadig 提供灵活可扩展的工作流支持,适合大规模的构建、部署并发和产品级交付。
- 传统单体业务:对于传统的单体业务,Jenkins 是一个灵活且支持强大插件的选择,满足基本的构建部署需求。
- K8s 生态需求:Argo 是专注于 Kubernetes GitOps 持续交付工具,适用于新兴企业没有历史负担的情况。
04-DevOps 平台建设成本考量:
- 围绕 CI/CD 工具自建平台成本估算:围绕 Jenkins、Tekton、Argo 工具搭建 DevOps 流程串接管理平台,需要组建跨职能、有丰富 DevOps 经验的团队,人力成本预估至少 300 万元/每年。
- 直接购买商业 DevOps 平台成本估算:直接使用云厂商公有云或采用 Zadig 私有化 DevOps 平台。成本根据团队规模不同在 5 万元-20 万元/每年,可与供应商商谈获取更有竞争力的报价。
- 开源商业产品与自研结合成本估算:针对 200 人以上团队,推荐选择 Zadig 作为自研平台的底层“平台工程”框架,结合自身业务进行定制开发。总体成本预估在 50 万元/每年左右,相较于从零开始搭建团队,采用 Zadig 可在成本上更具优势,同时满足企业特定需求。
05-数据的安全与合规考量:
- 下公有云、上行业云:随着技术发展和政企数字化的深入,数据已成为组织中最核心的资产。数据的安全与合规已经成为国内越来越多组织的核心关注点。在这个背景下,将核心的生产过程及数据从公有云转移到行业私有云,已成为刻不容缓的时代需求。Zadig 作为提供标准私有模式的 DevOps 平台可以直接对接自建云、私有云,通过云原生技术架构迭代业务的同时又能满足数据本地化安全管理的诉求。
06-原厂实施考虑因素:
- 专业支持和最佳实践需求:如果企业注重由产品开发者提供的专业支持和最佳实践,以降低试错成本和减少建设周期,可优先考虑 Zadig 作为原厂实施的选择。云效和 Coding 生态伙伴实施,提供的技术支持和最佳实践可能受制于生态伙伴的服务范围和能力。
后续将推出云效、Coding 等平台与 Zadig 之间详细对比文章,提供更全面的选型分析。敬请期待!
参考链接:
[1] Zadig 官方资料:https://docs.koderover.com
[2] 云效官方资料:https://help.aliyun.com/document_detail/153739.html
[3] Coding 官方资料:https://coding.net/help/docs/start/new.html
[4] Jenkins 官方资料:https://www.jenkins.io/doc
[5] GitLab 官方资料:https://docs.gitlab.com/ee
[6] Argo 官方资料:https://argoproj.github.io
[7] Tekton 官方资料:https://tekton.dev/docs
立即体验 Zadig V2.0 新架构,开启高效交付之旅!🚀
Zadig,让工程师更加专注创造
阅读原文 / Zadig 在 Github / Zadig 在 Gitee
推荐阅读 : Zadig v2.1.0 版本发布:工作流与环境全面协同升级! / Zadig vs. Jenkins 详细比对:时代的选择与开发者之选 / 探索 Zadig 自测模式,一套环境多人协同,释开发者创造力! / 阿里云 MSE + Zadig,面向开发者的全链路灰度发布解决方案 / ZADIG 专家版倾情上线:一键高效发布,119元/人月起,社区老友享年终福利!