写点什么

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

评论

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

嘉为蓝鲸IT服务管理解决方案入选2022广东省政务服务创新解决方案

嘉为蓝鲸

自动化运维 嘉为蓝鲸 IT服务管理中心

nCompass为医疗行业信息安全穿上“铠甲”

智维数据

大数据 数据可视化 智能运维 应用交付 流量分析系统

比Postman更懂中国程序员,Apipost真香!

不想敲代码

接口测试 API 研发管理工具

设计模式之装饰者模式

程序员大彬

Java 设计模式

性能优化 - 访问局部性

王玉川

c++ 性能 cpu 访问局部性

流程的价值一,固化业务的最佳实践!

CTO技术共享

30+亮眼指标,看看2022年嘉为蓝鲸的逆势创新之路!

嘉为蓝鲸

自动化运维 嘉为蓝鲸 2022大事件

人人都在聊的云原生数据库Serverless到底是什么?

华为云开发者联盟

数据库 Serverless 云原生 华为云 GaussDB

Databend 内幕大揭秘第二弹 - Data Source

Databend

树与二叉树深度剖析(二)

C++后台开发

数据结构 算法 二叉树 红黑树 Linux服务器开发

深度学习快速上手——基于 MegEngine 的 LeNet 快速训练与部署

MegEngineBot

深度学习 开源 MegEngine

Lattice - 模式级复用的能力定义

原力在线

架构 lattice 高可扩展

“零信任”下的防火墙策略管理

智维数据

大数据 防火墙 数据可视化 智能运维 运维安全

DAPP/去中心化系统开发流程解析方案(成熟理念)分析结果

I8O28578624

软件测试/测试开发 | 接口自动化测试中,文件上传该如何测试?

测试人

软件测试 自动化测试 接口测试 测试开发 文件上传

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

亚马逊云科技 (Amazon Web Services)

Python 量子计算 Amazon EC2 Hero 专栏 Amazon Braket

谈谈enabled_shared_from_this

SkyFire

c++ 智能指针

Studio One6永久免费版本下载安装包

茶色酒

Studio One6

MySQL:如何给字符串加一个高效索引?

程序员拾山

MySQL

如何让Java编译器帮你写代码

京东科技开发者

后端 编译器 java; 编译器原理 企业号 1 月 PK 榜

安全事件溯源分析场景

智维数据

大数据 数据可视化 智能运维 应用交付 流量分析系统

栉风沐雨 韧性前行 | 2022年九科大事件

九科Ninetech

RPA 超自动化 流程挖掘

在Spring异步线程池中自动传递上下文,这样写轻松又方便

程序员拾山

Spring Boot #java

架构训练营第10期模块5作业

Geek_4db2d5

Golang如何优雅接入多个远程配置中心?

王中阳Go

golang 高效工作 学习方法 后端 viper

华为云发布冷启动加速解决方案:助力Serverless计算速度提升90%+

华为云开发者联盟

Serverless 华为云 冷启动 Cold Start 进程级快照

深入理解跨域和最佳实践分享

Crazy Urus

面试 前端 HTTP 跨域

CleanMyMac4.12.3中文版如何汉化免费?

茶色酒

CleanMyMac4.12.3

中国国际电子商务中心与易观分析联合发布:2022年3季度全国网络零售发展指数同比增长1.5%

易观分析

零售 电商

从人工分析到智能分析,流量分析如何快速上手?

智维数据

智能运维 应用交付 可视化数据 流量分析系统

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