差旅壹号通过引入云效,实现了发布效率提升和成本节约,成功构建了高效的流水线管理,显著增强了产品创新迭代和研发效能。
背景
差旅壹号作为一站式企业消费管理平台的领先品牌,涵盖了一站式企业商旅管理、一站式企业出行管理、一站式企业用餐管理、一站式企业福利管理平台。是为了全面实现“一站式全员自助预订、费用智能化管控、企业集中采购、费用企业统一结算”的一站式企业消费管理平台。
以让企业消费合规高效,让企业和员工都满意为愿景。
以企业消费管理平台的领先品牌,提供有温度的企业消费管理服务为必达使命。
以优质的商旅、出行、用餐、福利资源,耕耘于企业全体员工的消费场景;主要聚焦在商旅消费、出行消费、用餐消费、福利消费等具有全员使用、高频小额支出的员工消费并且企业承担成本的场景。
差旅壹号服务30余家央企全集团,100余家国企全集团,超过1000家上市公司和大型集团型公司。目前已经成功交付近20个央企差旅集采1+N平台系统,团队具有丰富的差旅集采咨询、产品研发、系统定制、项目交付、业务上线和集采推进的成功经验。
随着业务规模和服务企业数量的持续增长,客户的需求逐渐变得多样化、复杂化,差旅壹号非常重视用户体验,在体验提升上寻找更高效的解决方案。
问题及痛点
差旅壹号采用微服务架构,共200多个服务,双机房容灾部署,灰度发布。使用SVN管理代码分支、Jenkins管理编译构建任务、kubernetes管理容器。
随着公司规模不断壮大,发布效率方面出现挑战。具体问题如下:
为了适应互联网快速迭代,需要经常发布,存在工作量大,投产耗时长等问题。
Jenkins集成代码检测安全检测无线上结果,修复检查效率低。
解决效果
480条流水线,平均发布耗时3分钟/次,平均每月构建6000分钟,稳定运行1年。
发布效率方面:发布效率提升70%。
成本方面:节约Jenkins等日常维护成本,及相关服务器6台。
那是怎么做到的呢?
1、结合公司情况及云效功能支持设计合适的流水线
流水线大致可分为4步:拉取分支代码、代码扫描、代码编译、镜像构建并上传仓库、部署。结合企业实际情况可增加:集成SonarQube、集成自动化接口测试。
差旅壹号环境分研发集成环境、预发布环境、灰度发布环境、全量发布环境。研发集成环境,快速集成,快速测试,不设人工干预卡点;预发布环境,必须经过研发集成环境的充分测试,测试无问题方可发布;灰度发布环境,预发布环境验证通过,部署灰度发布环境,切换少量用户运营验证;全量发布环境,灰度发布环境验证通过,部署全量发布环境,切换所有用户到最新版本。
结合实际情况,差旅壹号流水线设计如下:将研发集成环境独立成一条流水线(内网流水线),预发布环境、灰度发布环境、全量发布环境设置为1条流水线(外网流水线)。
内网流水线,效率优先。代码提交后自动触发流水线,经过代码规范扫描、安全扫描后,直接编译构建和部署。代码扫描只扫描出结果,不设红线,在发布外网前解决即可。
外网流水线,质量稳定优先。内网测试通过后,人工触发流水线,首先通过代码规范检测和代码安全检测红线。其次增加人工卡点,对发布做审核,确保内网已经测试通过满足发布条件。审核通过后发布预发布环境,发布后经过测试、产品验证后即可发布灰度环境,灰度环境运行稳定后即可发布全量环境。
在上线之初代码规范和代码安全可优先解决严重和高危级别问题,中危、一般问题可后续一次或按增量解决。
2、建立模板,统一规则,降低维护成本
测试流水线建立测试成功后,建立流水线模板,规范流水线的创建,并节约创建成本。(流水线模板可直接从已有流水线另存为流水线模板也可新建)。
3、建立流水线,控制权限,保障流水线按指定流程执行
通过模板建立服务流水线(或复制已有流水线),给相应人员开通流水线对应权限:所有权限、运行权限、查看权限。
4、设置流水线分组、标签快速查询筛选
公司可能拥有多条产品线或多个研发团队,每个团队负责内容不同。为避免相互影响,可通过流水线的分组和标签进行区分。差旅壹号产品线分机票、酒店、大交通、用餐等,分组按产品线区分,产品线内不同模块以标签区分。
5、流水线改进
流水线运行一段时间后,差旅壹号做了部分改进,如将线上配置文件修改纳入流水线管控,通过流水线发布;集成python自动化接口测试,部署后,自动触发python自动化测试脚本并产生测试报告;集成SonarQube,加强代码安全扫描。
结语
云效是一款非常不错的产品,它与阿里云产品深度融合、功能丰富、配置简单,并一直在不断地优化和完善。企业能够基于流水线提供的能力快速且低成本地搭建一套适合自己的流水线。差旅壹号也借助云效,实现了企业产品快速创新迭代和研发效能升级。感谢云效产品的赋能以及实施过程中云效同事的支持。
以上内容只是差旅壹号在实施后的一些拙见,希望能给各位同行带来一点帮助。
作者(合作者)介绍
元叹,12年加入差旅壹号,拥有多年技术管理及架构经验,差旅壹号技术委员会成员,曾负责过多个核心产品架构,致力于研发质量与效能提升。