工程效能CI/CD之流水线引擎的建设实践

发布时间:2022-12-03 12:30

经过近3年的建设打磨,美团流水线引擎完成了服务端的基建统一,每日支撑近十万次的流水线执行量,系统成功率保持在99.99%以上。本文主要介绍在自研引擎建设层面遇到的挑战以及解决方案。

1. 背景

持续交付这个概念最早在2006年敏捷大会上被提出,经过多年的发展,目前已成为很多技术团队提升研发效能的必经之路。通过建设部署流水线,打通从代码开发到功能交付的整个环节,以自动化的方式完成构建、测试、集成、发布等一系列行为,最终实现向用户持续高效地交付价值。

流水线引擎作为支撑部署流水线的底座,它的好坏直接影响着部署流水线建设的水平。业界通常的做法是通过Jenkins、GitlabCI等开源工具(或公有云产品)进行搭建,这是一条能帮助业务快速落地持续交付的道路,美团早期也是采用搭建Jenkins的方式来快速支撑业务。

但随着越来越多业务开始做持续交付的建设,这种“短平快”方式的弊端逐渐显现。比如,工具建设没有统一的标准,各业务都需要去了解整个工具链的细节,建设成本高、水平参差不齐,很少有业务能搭建完整的部署流水线。同时,业务每天的构建量都在快速增长,逐渐超过Jenkins等开源工具所能承受的极限,在交付高峰期任务严重排队、服务不可用现象频出,严重影响着业务交付的顺畅度。

美团在流水线引擎的建设层面大概经历了几个阶段。在2019年以前,主要围绕Jenkins进行优化,2019年开始正式立项打造自研的流水线引擎,大致的历程如下:

  • 第一阶段(2014-2015):搭建Jenkins统一集群,解决业务接入的通用问题(如单点登录、代码仓库集成、消息通知、执行机的动态扩缩等),降低业务的建设成本。
  • 第二阶段(2016-2018):拆分多个Jenkins集群,解决业务增长导致单集群性能瓶颈。最多时有十几个集群,这些集群通常是按业务线维度划分,并由业务自行建设。但随着时间的推移,集群的拆分管理难度越来越大,Jenkins安全隐患频出,对平台方造成了很大的运维负担。
  • 第三阶段(2019-至今):为了彻底解决引擎单机瓶颈和工具重复建设问题,我们开始自研分布式流水线引擎(美团内部项目名称为Pipeline),并逐步收敛各业务依赖的底层基建。

相关推荐

html中箭头函数有什么意义呀,什么是ES6箭头函数?与普通函数主要区别在哪里?到底该不该使用箭头函数?...

前端进阶JS数组高级用法大全教程示例

Docker 笔记 - Docker 容器的退出状态码

【详解】Springboot热部署devtools的使用,设置刷新时间

效率起飞?时下流行Sketch插件谁更“香”

Python 实现循环的最快方式(for、while 等速度对比)

龙蜥下游发行版 Alinux 和 UOS 成为 OpenSCAP 官方首批支持的国内 OS

构建工业软件开源工具链,2022 开放原子全球开源峰会开源工业软件论坛即将开幕

Go语言实现23种设计模式的使用

【Linux】Linux项目自动化构建工具-make/Makefile(学习复习兼顾)

卷积神经网络算法python实现车牌识别_一种基于卷积神经网络的中文车牌识别方法...

SpringMVC+Vue项目中国风音乐推介网站

Opencv教程(Python)

最适合新手的python刷题网站_有的人能轻松学会Python编程,不是基础好,而是有了这些刷题网站!...

微信升级后不再使用x5内核,debugx5.qq.com打不开,如何开启微信调试?

Ultra Fast Structure-aware Deep Lane Detection论文解读

python爬虫笔记——Selenium的初级使用

互联网晚报 | 1月21日 星期五 | 中兴手机官宣吴京为新代言人;58同城旗下“赶集网”更名“赶集直招”;罗永浩年后回归科技界...

Prometheus 监控mysql

k8s驱逐篇(3)-kubelet节点压力驱逐-源码分析篇

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号