【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

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

评论

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

基于Spark的大规模日志分析

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

你一定要悄悄学会怎么把Vimeo视频保存到手机相册,然后惊艳所有人!

frank

人体分割识别图像技术的挑战和未来发展

来自四九城儿

洞察开源代码平台“创新力”|2023开放原子全球开源峰会开源协作平台分论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 开源协作平台

WeOpsV4.1重磅出击,日志监控功能横空出世!

嘉为蓝鲸

运维 日志 weops 嘉为蓝鲸

原点安全助力金融机构消费者个人信息保护合规

原点安全

数据安全 金融机构 消费者个人信息保护

云小课|RDS for MySQL参数模板一键导入导出,参数配置轻松搞定

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

微软增加100亿美元AI收入,Salesforce如何对垒?

B Impact

开源教育决定未来|2023开放原子全球开源峰会开源教育与人才分论坛成功召开

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 开源教育与人才

首添机密计算创新成果!龙蜥首获 ACM SIGSOFT 杰出论文奖

OpenAnolis小助手

云原生 龙蜥社区 sig 机密计算 ICSE

把数字中国,建立在行业感知的底座上

脑极体

行业感知

百度文心一格x京东618:打造电商行业首个AI线下广告,节省80%制作成本

飞桨PaddlePaddle

百度 飞桨 AIGC 京东618

TrafficRoute:一体化的DNS解析和流量调度套件

火山引擎边缘云

技术 流量 解析 火山引擎边缘云

2023-06-15:说一说Redis的Key和Value的数据结构组织?

福大大架构师每日一题

redis 福大大架构师每日一题

人体分割识别图像技术的原理及应用

来自四九城儿

华为云CodeArtBuild减负!云端编译构建,让你的开发省时省力!

华为云PaaS服务小智

云计算 代码 华为云 编译构建

GOTC峰会Sermant发布1.1.0-beta版本,带来哪些提升?

华为云开源

#云原生 #开源 流量治理 #微服务

互联网行业-镭速文件传输系统方案

镭速

Django笔记四十三之使用uWSGI部署Django系统

Hunter熊

Python django 部署 uwsgi

UI自动化的稳定性和效率

QE_LAB

自动化测试 UI自动化测试 appium

C语言代码封装MQTT协议报文,了解MQTT协议通信过程

DS小龙哥

6 月 优质更文活动

阿里云斩获 4 项年度云原生技术服务优秀案例

阿里巴巴云原生

阿里云 云原生

C语言编程语法—排序算法

攻城狮Wayne

C语言 排序算法 6 月 优质更文活动

六大类型JavaScript题型

不叫猫先生

JavaScript 6 月 优质更文活动

开战在即!与全球伙伴一起打造你的数据应用,TiDB Future App Hackathon 2023 来啦!

PingCAP

数据库 hackathon TiDB

解析Spring内置作用域及其在实践中的应用

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!

说山水

云计算架构设计原则

穿过生命散发芬芳

6 月 优质更文活动

Spring框架中的线程池

demo123567

spring 线程池

vivo 帐号服务稳定性建设之路-平台产品系列06

vivo互联网技术

帐号 服务稳定性 架构优化

自动化回归测试平台 AREX 的 Mock 实现原理

AREX 中文社区

Java Mock测试框架 流量回放

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