2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Jenkins 之父 KK 谈持续交付流水线与华为专家谈 DevCloud Cloudpipeline 实践

  • 2020-03-31
  • 本文字数:3055 字

    阅读完需:约 10 分钟

Jenkins之父KK谈持续交付流水线与华为专家谈DevCloud Cloudpipeline实践

一切优秀理念和方法论的大规模普及,都有赖于先进技术的发展以及对应工具的发明创造来承载,DevOps 持续交付理念亦不例外。

软件开发是截止目前为止,人类最复杂、最不可控的工程技术工作,一次代码提交到上线,会涉及数十、数百、乃至数千个步骤、命令、服务、应用和环境,如果我们没有自动化交付流水线来不断提升自动化率,实施可重复且可靠的交付运作,而按照传统的以流程文档和操作规范指引、通过手工操作来进行交付活动的话,其工作效率之低、错误率之高已经和正在被诸多没有采用 DevOps 开发模式和持续交付工具链的企业所验证。


KK(Kohsuke Kawaguchi)作为 Jenkins 的创始人,同时也是 CloudBees 公司 CTO,是将 DevOps 持续交付理念进行工具工程化实践的第一人,更是推动 DevOps 理念大规模普及的灵魂人物之一。作为软件开发端到端持续交付系统,Jenkins 用户量达 200+万,在持续交付流水线专业工具领域市场占有率超 90%,是事实上的流水线工具标准。



在本次华为 HC 大会上,KK 带来主题为《Super Powers Coming to Your Jenkins》的精彩演讲,内容涉及 DevOps CI/CD 持续交付理念和方法论,以及 Jenkins 流水线 Blue Ocean、Cloud Native Jenkins、Jenkins Evergreen、Jenkins X 等面向不同场景的产品解决方案及关键技术。


例如,有了 Cloud Native Jenkins,通过云化和弹性扩容降低单点故障,用户就不会在周五晚上接到 Jenkins 服务宕机需要修复的连环夺命 call,也无需做资源的预留以降低运维成本和前期投资,未来也将会有更高的性能表现。


Jenkins Evergreen 提供了预置模板,用户仅需几次点击,在几分钟内即可生成一条可持续工作的流水线,大大简化流水线的配置步骤,有效降低配置门槛。Evergreen 所有的配置均由 Jenkins 管理,可在线升级,用户只需专注于自己的业务开发和交付即可,无需关注各种复杂的流水线配置和组件管理。


Jenkins configuration as code 实践一切配置即代码,用户可通过编写 YAML 脚本来对接插件、安全工具、检查工具、文档服务等,任何工具或者服务均可以通过脚本来实现对接。基于此,用户可以对版本控制、代码审计、滚动部署等环节跟踪查看,精确追溯插件集及其版本,使用户对各种更改更有信心。


随着新型云操作系统 kubernetes 的兴起,用户需要跟进学习一大堆新知识、工具和服务,比如如何往容器迁移,如何安装和实施 k8s,如何将容器安装到 k8s,k8s 的生态系统和工具链对比选型等等,总而言之,适配 Kubernetes 绝非易事。Jenkins X 致力于提供持续交付云原生应用的最佳实践,涵盖构建、测试、审查、变更、协作等各种最优产品。


华为云专家讲到,华为研发模式先后经历了手工作坊、IPD、测试自动化工厂、CI、CD、DevOps 等各种研发模式的变迁,随之进行了对应的组织和流程变革,并产生了相应的工具平台来承载这些模式的落地和运行。随着研发模式、组织、流程、工具的不断变革,产品交付效率大幅提升,TTM 时长从过去的 1~1.5 年缩短至 2~6 周。一些偏互联网化的产品,迭代周期缩短至 1 周,每天可以并行发布多个微服务。



在这个过程中,自动化的持续交付流水线平台/服务,是最核心的工程实践。基于流水线,以代码提交到上线的端到端交付周期的缩短作为目标驱动,使得各服务自动化能力和并发效率实现大幅提升改进,比如手工转自动化测试、容器化构建、基础设施即代码、容器化部署、灰度发布服务等,确保产品最终的可重复、可靠的快速迭代发布。


华为内部 8 万研发员工,最初使用的基本都是商用开发工具,而这些工具很难满足产品敏捷交付的需求,毕竟产品的敏捷和快速迭代,有赖于工具平台的敏捷和快速迭代能力的支撑。因而全面转向了开源,并在保证 100%兼容原生开源系统的同时,进行云化、服务化、单点登录、多 region、高并发、高可靠、高安全、面向不同行业和解决方案场景等方面持续强化,构筑产品核心竞争力。


当华为意识到,华为内部面临的软件持续交付工具链搭建、运维的核心痛点,其他企业也会面临时,便将工具链对外提供服务。希望通过可视化、灵活编排的自动化持续交付流水线及 DevOps 工具链,实现不中断业务升级,产品分钟级发布上线,助力企业大幅缩短交付周期,提升交付效率和产品质量。


华为产品团队和代码规模跨度极大,一些典型的大产品,代码量达 1000+万行,团队规模也达 1000+人,不仅组件多,团队也多,相互依赖更多。同时,华为大平台战略带来一个现象,就是产品通常依赖于另外一个独立 BG 下的一个大平台产品,且业务 BG 内部还会有自己的小平台产品,这样导致一个产品会依赖于好几个不同团队交付的不同平台。而由于产品规模太大,业务特性达数千个,模块也往往达到数十上百个。不同部门使用的环境和组网也会存在极大差异。


在这种复杂的环境下,华为构建了分层分级持续交付流水线,分为个人级、项目级、子系统级、产品级(版本级)、解决方案级等数级流水线,通过流水线编排工作流、触发下一级流水线的执行来保障产品团队和组件之间的协同交付。


在这个过程中,配套 L1-L4 分级测试模型,在不同层级流水线执行不同的自动化测试策略,并设置每个阶段任务对应的质量门禁来判断是否允许流水线继续执行。通过多级流水线的层层防护,使得缺陷发现前移,有效保障了产品质量。


对应于最新的微服务化的产品形态,配套提供了微服务持续交付流水线模板。区别于传统产品持续交付流水线,微服务流水线在角色权限上匹配全功能团队全栈工程师的角色权限模型,SDE 可以从代码提交并端到端执行流水线直至微服务发布上线。同时,构建出镜像,并实施容器化部署、灰度发布策略、失败自动回滚策略,微服务可按天、按小时甚至分钟级灰度发布上线。


针对静态资源提供了持续部署流水线,流水线从软件包变更开始执行,到跨多 region 并行部署,实现多区多服务器的静态资源包自动更新。


在相关配套技术和服务中,灰度发布能力、极速构建、基础设施即代码、配置即代码、Docker、K8s、自动部署、自动化测试、CloudPipeline CDDL(Continious Deliver Domain Language)描述文件等尤为关键。灰度发布、蓝绿部署等策略可以确保不中断服务升级。增量构建、并行构建、依赖预读与缓存、容器化 slave 等不断提升构建速度,从小时级进入分钟级。通过容器化技术使得环境标准化,有效消除 DTAP 四大环境间的差异,减少环境配置、部署和问题定位成本。CDDL 描述语言定义流水线的编排和各服务接入标准。人工审核可以在自动化能力未达到完全保障质量的情况下,增加评审人来把控下发布质量。


自动化一切、代码化一切、服务化一切、版本化一切、数据化一切、可视化一切,是流水线和 DevOps 平台的基本方向。未来还会包括智能化一切。同时,DevCloud 流水线支持百万级并发调度能力能力,并提供可视化看板,和任务健康度(执行成功率)、及流水线整体、阶段、任务三级执行时长直观展示。


在 DevCloud on DevCloud 的 dogfooding 吃狗粮实践分享中,提及在传统自动化测试理念上,探索在线测试的新方法和理念、实践,并逐步加大在线测试比重,以便进一步缩短 TTM、提升产品质量。


在演讲末端,华为专家基于现网进行了“一次修改如何快速上线”的实战演示,这种基于现网的现场演示,是需要十分的底气和自信的,也彰显了 DevCloud 华为软件开发云服务的质量可信度。


华为正致力于 Jenkins 网站的中文本地化工作,且一直以来双方共同探索在社区等各方面更深层次的合作,希望 Jenkins 和 DevCloud 华为软件开发云服务能够共同为大家提供更好的持续交付流水线服务。


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/_UCE6YjkS_ETIYZCI54uOw


2020-03-31 14:421441

评论

发布
暂无评论
发现更多内容

【保姆级】github博客快速搭建

Shen-Xmas

GitHub 前端 后端 博客 博客搭建

怎么判断自己适不适合做大数据培训

小谷哥

10分钟为你全面解答HDFS的SecondaryNamenode的作用

好程序员IT教育

大数据 hdfs

数据监控预警系统,实现不同端信息推送

葡萄城技术团队

前端 数据可视化

云原生系列 二【轻松入门容器基础操作】

叶秋学长

云原生 沙箱实验 11月月更

阿里云云原生加速器成员企业袋鼠云创始人陈吉平:深耕国产自研数字化技术与服务,持续为客户创造价值

阿里巴巴云原生

阿里云 云原生

在大数据培训学习中怎么成为优秀的程序员

小谷哥

哪些人适合参加前端培训?

小谷哥

Hire Remote Developers

Mahipal_Nehra

Java angular blockchain React app development

如何写出一份“有结果”的年度工作总结【超极实用!】

PMO实践

项目管理 PMO 项目经理 工作总结

进场感知,主动服务|诚迈联手华为打造HarmonyOS原子化服务解决方案

最新动态

Serverless Devs 社区联合信通院邀请您参加 2022 中国 Serverless 用户调查

阿里巴巴云原生

阿里云 Serverless 云原生

Zebec流支付生态,开启多链布局的“两手准备”

鳄鱼视界

DevData Talks | 知乎艾辉:从工具建设到运营,千人团队研发提效最佳实践

思码逸研发效能

研发管理 研发效能

关于平台工程的开发者工具链,你还想加点啥?

阿里巴巴云原生

阿里云 微服务 云原生 EDAS

企业数字化转型中面临的开源供应链的挑战及应对措施

安势信息

开源 企业数字化转型 开源软件供应链 软件供应链安全 安势信息

BANI时代下PMO如何求得生存?

PMO实践

项目管理 PMO 2022

年终最重磅!云原生实时数仓 SelectDB 首次产品发布等你来约!

SelectDB

数据库 云计算 大数据 实时计算

Amazon Braket 与量子计算

亚马逊云科技 (Amazon Web Services)

量子计算 Hero 专栏 Amazon Braket

分布式存储之 etcd 的集群管理

焱融科技

云计算 分布式系统 etcd 高性能 分布式存储

5步法助力自动化转型

FunTester

Chrome 103支持使用本地字体,纯前端导出PDF优化

葡萄城技术团队

chrome 前端 HTTP PDF

如何通过Java 合并和取消合并 Excel 单元格

在下毛毛雨

Java Excel 合并单元格

如何将项目经理负责制落到实处?完成这3个前置条件!

PMO实践

项目管理 PMO 项目经理

前端自学能学会吗,培训怎么学

小谷哥

MatrixOne从入门到实战04——MatrixOne的连接和建表

MatrixOrigin

数据库 分布式 MatrixOrigin MatrixOne

如何通过 NFTScan 浏览器查询 NFT项目的 Metadata 数据【教程】

NFT Research

区块链 NFT

元器件科普 | 无源元件之——电容基础知识(超详细)

元器件秋姐

元器件采购 华秋商城 电容 电容器 电解电容器

学历低可以参加大数据培训吗

小谷哥

Stack Memory vs Heap Memory in Java

Mahipal_Nehra

Java heap memory Stack memory Java development

MatrixOne从入门到实践05——数据类型介绍

MatrixOrigin

数据库 分布式 MatrixOrigin MatrixOne

Jenkins之父KK谈持续交付流水线与华为专家谈DevCloud Cloudpipeline实践_行业深度_华为云产品与解决方案_InfoQ精选文章