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