写点什么

30+ 业务团队,携程无线发布如何做到稳定高效

  • 2020-02-15
  • 本文字数:3121 字

    阅读完需:约 10 分钟

30+业务团队,携程无线发布如何做到稳定高效

携程自 2010 年 10 月发布无线战略,到现在 app 已有 8 年左右的发展历史。早期的无线事业部,统一管理 app 从业务需求到研发到发布的整个过程。


2013 年公司推出“拇指+水泥”战略,大力发展无线。2015 年对原统一的无线管理架构进行了调整,将团队拆分到各业务线,此举可称之为携程无线的破和立。


无线团队拆分到各业务线后,加上后续新增业务线,目前涉及到的业务团队大概有 30 条左右,团队人员也很多,对 app 的集成发布形成了不小的挑战。


目前携程的无线发布实践是怎样的呢,本文将重点分享携程主板 app 发布实践。

一、组织架构

2017 年起,携程组建了各垂直领域的技术委员会。无线委员会主要由无线平台和各业务线无线同学组成。作为虚拟组织对垂直技术领域做统一管理,响应技术领域的技术战略、发展方向,新技术论证落地,鼓励技术创新,制定技术规范制订,开展技术培训等。


平台研发中心的无线平台团队更多承担着无线框架、技术创新及对业务线支持的任务,内部也称之为“无线公共团队”。


技术管理中心 PMO 更多承担携程技术中心跨业务线的项目管理、SQA、流程等支持。


市场主要负责 App 在市场商务方面的工作,类似 app 上架计划、预装包、渠道包等等。

二、发布流程介绍


流程要点说明:


1、发版计划:发版计划分为大版本和小版本,大版本一般提前半年制订发版计划并通知到业务线,大版本会综合考虑业务线迭代周期及节假日等情况,小版本按需(用途:bug fix 等)穿插在大版本间发布。发版计划主要由市场部和技术管理中心 PMO 负责。大版本迭代图如下:



2、需求部分:框架公共类需求比如大首页宫格分布及入口地址调整等,由无线平台产品团队负责管理,业务线提申请。业务线需求主由各业务线自行管理,跨业务线需求各自协商,公共类的技改有专门的项目立项来推动。


3、迭代发布:目前各业务线迭代周期在 2~3 周左右,各业务线包括平台公共无线框架,业务需求发布和框架类更新发布,都会要求在规定时间内完成测试和发布,进入最后的全业务集成测试。


4、业务线测试:指业务线开发或测试同学内部功能测试,测试通过后可以 release,即可进入全团队集成阶段。集成工具 MCD 支持业务线按需编译和打包。


5、全业务集成测试:全员使用集成包测试(集成包是指集成了所有业务线 release 的功能)。要求各业务在此之前完成内部验证测试,并 release bundle,未 release 的最新功能将不会进入集成包。


6、Code freeze 封板:为保证发布效率,避免开发后期的改动风险,会在集成发布最后阶段做 code freeze,我们内部也称之为“封板”,封板后出最终包,给到全业务线做最后的测试确认。


7、定版:就封板后的 app 集成包,如全团队测试通过后(需各团队测试负责人在 MCD 确认),我们定版 launch,并在 MCD 标识进入后续渠道包制作等流程。


8、上架:定版后,公共平台团队会处理相应的渠道包和提交审核等工作,市场同学负责各应用市场的上架弹窗等。


9、质量:各业务线 QA 负责,集成期间监控 issue 收敛情况【Jira 平台】。


10、运维阶段,主要指 bug fix、hotfix 等发布相关,均需按相应的流程申请及发布。比如小版本发布,小版本主要以修复大版本 bug 为主。目前采取“搭车需求”模式,即发动小版本车次,业务线提交需求申请,申请通过的开放代码权限。后续开发、发布流程同大版本。



三、工具方面

从工具方面来看,目前无线方面使用到的工具比较多,主要在编译发布、持续集成、日志监控、性能优化、AB 分流、自动化测试等方面。本文重点介绍下集成发布相关工具。


2015 年开始,无线平台团队自研了 MCD(Mobile Continuous Delivery)平台,经过不断实践调整优化,到目前提供了持续集成、编译打包、扫码安装、冒烟测试、白屏检测、size 分析、crash 收集分析、灰度、hotfix 等丰富功能,可以说是目前携程无线的一大利器,极大帮助提升了无线集成发布的效率。


平台涵盖了 app 集成、测试、发布、运营四大阶段。17 年起支持插件化,实现业务解耦,缩短编译时间、减少编译依赖堵塞等问题。所有 BU 业务模块 bundle 化,并辅以 bundle 颗粒度 RC 发布模式,全面支持从项目创建、各业务开发、测试、bundle 发布、集成发布、测试确认的 app 全生命周期管理。


测试阶段,提供白屏检测、远程设备租用、代码质量(结合 sonar)、二维码扫码安装等功能。发布阶段,MCD 还支持 Hybrid、ReactNative 等测试、发布、灰度、下发监控、下发回滚等。运营阶段,支持 app size 分析、崩溃采集、发布记录查询、发布包查询、下发配置、版本占比等运营数据统计。


MCD 目前已全面支持其他独立 app、小程序等发布流程。


四、小结

目前携程无线发布,经过流程梳理、实战打磨、工具利器、集团作战,已形成一套“快而稳”的体制,发布效率高效透明。以下是之 2016 年以来的发布 launch 趋势图。



整体发布流程已经在上面说明,个人认为对发布比较重要的几个点:


1、组织保证:一个高凝聚力的委员会,强大的无线公共服务团队及业务线无线骨干,他们好比是汽车的发动机,给无线技术框架的优化输出源源不断的动力,保证我们无线技术的先进性和实用性。此外,我们也会定期组织技术分享、沙龙等,以一种交流和学习的态度保持与业界的沟通。


2、工具利器:一个高效、信息透明的发布平台对集成发布效率的提升具有非常重要的作用。需要支持 CI\CD、多技术栈发布、高速编译出包、流程扼要、信息透明等特点。


3、全流程把控,集团作战:目前各业务开发发布流程透明可见,同时高度统一管控发版计划和最后的集成发布阶段。个人认为可以称之为“集团作战”,PMO 作为总指挥所或总枢纽,发出战斗打响号角(集成开始),发布战情(出包啊,家有问题啊),各业务线作战单位自行战斗并及时向指挥所反馈情况(反馈集成情况、确认测试结果),最后指挥所汇总战情,宣布战斗结束(launch)。


4、集成测试周期:从经验来看,集成测试周期长短可能会一定程度影响发布效率,建议是结合企业实际情况,逐步调整改进。携程这边几年来有过几次调整,目前周期也是长期运行调整目前可能比较符合的一个周期。


5、封板:在最后的集成测试阶段,往往因为业务需求的调整而出现开发临近发布还在 commit 的情况,大家都能理解往往最后阶段的代码调整可能带来是质量隐患甚至是巨坑,这也是往往发布 delay 的原因之一。所以我们在 16 年引入了“封板”,做 code freeze。刚开始业务线不太习惯封板,也出现很多次封板延迟的情况,慢慢地也习惯了,需求端开发端都熟知了这个规则也就顺了。



6、沟通:无论从发版计划的调研制定、到最后的定版发布,各环节都离不开沟通。最后集成阶段,PMO 会每天早上邮件发出当天早上编译的集成包(当然业务线也可去 MCD 上随需拿包),并同时会在内部沟通 IM 平台(cchat)广播,全业务线测试同学发现的问题、需要协调找人、问题修复等都可以在群里沟通或广播。


7、坚守原则:因为 app 发布涉及到 30 个左右业务团队,为了确保“集团作战”的效应,在整个发布过程中,对于重要原则必须“严守”。因为一旦某些关键节点“放松”,可能会导致整个发布流程效率降低。这也是 PMO 作为“第三方监管”的职责所在。


原则大家都遵守后,再加上各业务线的敏捷开发、需求封板、代码封板等机制,整体 app 发版流程清晰透明,大家节奏一致,整体发布效率自然也就趋于稳定和高效。


以上是携程无线发布的一些分享,希望对各位小伙伴有所帮助。


作者介绍


王雪松,携程技术管理中心 PMO 高级项目经理,主要从事携程技术中心跨 BU 项目集的管理工作。自 2016 年起负责携程主板 app 的项目协调、流程梳理、集成发布,并兼任无线技术委员会助理,负责无线端相关技改项目的推进及对 BU 支持等协调工作。


本文转载自公众号携程技术(ID:ctriptech)。


原文链接


https://mp.weixin.qq.com/s/G-BCXiWJucUzfzvWG2BIQw


2020-02-15 17:38838

评论

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

Copilot 用“粉紫色磨砂UI”和“啊啊啊BGM ”,梦境了这届网友

B Impact

携手共进丨九科信息入选信通院“铸基计划”高质量数字化转型产品及服务全景图,并受邀出席高质量数字转型创新大会

九科Ninetech

云智一体,深入生命科学

Baidu AICLOUD

基因测序 AI制药 AI for Science

华大北斗芯片亮相纽伦堡国际嵌入式展EW2023

江湖老铁

如何学习分布式系统,分布式是什么,这里有很好的解释,很全

三十而立

Java 分布式

互联网工程师1000道Java面试题整理全集,助你一路绿灯

Java你猿哥

Java 面试 SSM框架 八股文 Java八股文

2023年10大主流产品路线图绘制软件盘点

爱吃小舅的鱼

产品经理 产品路线图工具

如何通过优化图片、JS等资源加载项来提高网页的加载速度?

兴科Sinco

前端开发 CDN HTTP 网页加速

YOWOv2:优秀的实时视频动作检测框架

Zilliz

计算机视觉 构建模型 Milvus

《深入理解高并发编程:JDK核心技术》-冰河新书上市

冰河

并发编程 多线程 高并发 协程 异步编程

牧云助手:一款面向技术爱好者的远程主机管理工具

百川云开发者

运维 主机管理 终端远程协助

抽丝剥茧还原真相,记一次神奇的崩溃

阿里技术

debug

硬核!阿里大佬都在内卷的SpringBoot从入门到实战笔记

Java你猿哥

Java Spring Boot ssm 实战 Spring全家桶

“AI 上运动,直播更精彩” 百度智能云联手 Pixellot 创新中国大众体育传播新模式

Baidu AICLOUD

视频云 云导播

自己动手写虚拟机

ScratchLab

虚拟机 kvm

Java实战干货|Spring Boot整合MyBatis框架快速实现数据操作

三十而立

Java spring springboot

这六种目前最常见分布式事务解决方案!请拿走不谢

三十而立

Java 程序员 分布式 IT

面试造飞机?GitHub顶级“java面试手册2023”(统计通过率95%)

三十而立

Java GitHub 面试 java面试

爆火!阿里新版23年面试突击进阶手册,Github标星51k!

Java你猿哥

Java 面试 ssm 面经 八股文

浅析三款大规模分布式文件系统架构设计

Java你猿哥

架构 分布式 架构设计 分布式架构 系统架构设计手册

DevOps|研发效能不是老板工程,是开发者服务

laofo

DevOps cicd 研发效能 持续交付 平台工程

一个小网站的云原生实践

松然聊技术

架构 云原生

代码开源!阿里妈妈展示广告Match底层技术架构最新进展

阿里技术

开源

Jetpack-Compose 学习笔记(二)—— Compose 布局你学会了么?

修之竹

android 前端 android jetpack

SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案

Java你猿哥

Java MySQL spring Spring Boot ssm

常用MQTT客户端库简介

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 3 月 PK 榜

传统企业,如何构建性能测试技术体系

老张

技术 #性能测试

Notification(状态栏通知)详解

梦笔生花

android Android Studio Notification

2023金三银四Java高级工程师面试 1000 题+答案(全)

架构师之道

编程 程序员 java面试

Kubernetes玄幻问题一览

陆云

#Kubernetes#

焱融科技荣登《2022中国企业数智化创新TOP50》榜单

焱融科技

文件存储 分布式文件存储 数智化 高性能存储 全闪存储

30+业务团队,携程无线发布如何做到稳定高效_技术管理_王雪松_InfoQ精选文章