写点什么

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:421657

评论

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

基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本

自动化测试 GUI UIaotumation

微服务引擎 MSE 企业版全新升级

阿里巴巴中间件

阿里云 微服务 云原生

ChatGPT潜能很大,问题也是

引迈信息

人工智能 低代码开发 应用开发 ChatGPT JNPF

数据库革新拐点已来——MatrixOne Beta Program Recap

MatrixOrigin

云原生 分布式数据库 MatrixOrigin MatrixOne

小程序容器作为软件中间件技术不可忽视的价值

FinFish

小程序容器 小程序技术 软件中间件

Tuxera NTFS2023版读写NTFS磁盘功能工具

茶色酒

Tuxera NTFS2023

软件测试/测试开发 | 测试平台开发-前端开发之Vue.js 框架的使用

测试人

为企业全方位解决进销存管理难题的ERP套件

力软低代码开发平台

新思科技发布《2023年开源安全和风险分析》报告

InfoQ_434670063458

开源 新思科技 软件安全

what量化合约系统开发&源码丨clear合约量化系统开发技术(Demo案例)

I8O28578624

隐私计算技术路线介绍及对比

隐语SecretFlow

隐私计算

2022 IoTDB Summit:阿里白渐《迈向物联网时代大数据计算平台——MaxCompute 基于IoTDB构建解决方案》

Apache IoTDB

大数据 时序数据库 IoTDB

纵存科技加入龙蜥社区,共建高性能存储软件栈

OpenAnolis小助手

开源 合作伙伴 龙蜥社区 CLA 纵存科技

Apache IoTDB v0.13.4 发布|优化监控功能

Apache IoTDB

IoTDB

Soul 云原生网关最佳实践

阿里巴巴中间件

阿里云 云原生 实践 云原生网关

ChatGPT辅助编程

鲸品堂

ChatGPT 企业号 3 月 PK 榜

OpenKruise 开发者不容错过的带薪实习机会!马上加入 LFX Mentorship 计划

阿里巴巴中间件

阿里云 开源 云原生 OpenKruise

首批!阿里云容器服务 ACK 顺利通过信通院云原生混部项目评估

阿里巴巴中间件

阿里云 容器 云原生

下一站,冠军|走进2022 OceanBase数据库大赛12强

OceanBase 数据库

数据库 oceanbase

软件测试/测试开发 | 测试平台开发-前端开发之Vue router路由设计

测试人

软件测试 测试开发 测试平台

开源项目的演进会遇到哪些“坑”?KubeVela 从发起到晋级 CNCF 孵化的全程回顾

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

瓴羊Quick BI与Power BI之争:数据大屏优势明显

对不起该用户已成仙‖

使用metrics-server监控k8s的资源指标

tiandizhiguai

DevOps 微服务 云原生 k8s

新思科技为三星SDS公司开源使用和风险管理提供自动治理解决方案

InfoQ_434670063458

开源 软件开发 新思科技 软件安全

Apache IoTDB v1.0.1 发布|修复分区计算,优化集群启停流程

Apache IoTDB

IoTDB

基于Python+UIautomation的WindowsGUI自动化测试实战(二)-计算器

Python 自动化测试 GUI UIaotumation

重磅通知!OpenAI又放大招:官宣开放API接口-3.5版本 需求大涨,机遇与挑战并存,谁能拔得头筹?

加入高科技仿生人

人工智能 开源 openai ChatGPT

【云图说】 | 第268期 初识开天企业工作台MSSE

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

软件测试/测试开发 | 一步一步学测试平台开发-Vue restful请求

测试人

软件测试 自动化测试 测试开发 测试平台

ICLR 2023 | 网易伏羲3篇论文入选,含强化学习、自然语言处理等领域

网易伏羲

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