东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

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

评论

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

推荐算法工程师需要的知识储备(十三)

数据与智能

算法 推荐系统 成长路线

聊聊 Redis 内存淘汰策略

蘑菇睡不着

Java redis

架构训练营模块6作业

Geek_649372

架构训练营

Redis入门二:数据类型

打工人!

redis 6月日更

网络攻防学习笔记 Day50

穿过生命散发芬芳

网络攻防 6月日更

模块六-创业公司电商微服务

华仔架构训练营

我国区块链产业发展面临的问题

CECBC

(鸡汤文)这一次我终于搞懂了 JavaScript 定时器的 this 指向!

编程三昧

JavaScript 编程 大前端 定时器

优秀中层管理者所具备的特征

石云升

读书笔记 6月日更

聊聊 Redis 过期键删除策略

蘑菇睡不着

Java redis

Redis 五种数据结构以及三种高级数据结构解析

蘑菇睡不着

Java redis

模块6作业6

杨彬

#架构实战营

大型分布式 Web 系统的架构演进

xcbeyond

分布式 架构演进 6月日更

☕【JVM技术探索】各种类型对象占用内存情况分析(上)

洛神灬殇

JVM java对象分析 6月日更 内存分配

超详细Redis数据结构底层实现原理介绍

蘑菇睡不着

Java redis

[译] R8 优化:值假设

Antway

6月日更

因女性而繁荣,适老化科技的钱景与挑战

脑极体

电商微服务架构设计

俞嘉彬

架构实战营

HBase 介绍

Alex🐒

HBase

【21-13】PowerShell 运算符

耳东@Erdong

PowerShell 6月日更

架构实战营模块6作业

冬天的树

Dajngo 网站开发 ---Task2(下)

IT蜗壳-Tango

6月日更

拆分电商系统为微服务——架构师训练营作业六

开拓纪

架构是训练营 作业六

你多久没有换手机了?

看山

闲聊 6月日更

Flink State 和 Fault Tolerance(三)

Alex🐒

flink 翻译 flink1.13

JavaScript学习(六)

空城机

JavaScript 大前端 6月日更

拆分电商系统为微服务

9527

架构实战营

Kubernetes手记(17)- 调度策略

雪雷

6月日更

同被指责「电力浪费」,如今的区块链会是 1999 年的互联网吗?

CECBC

架构训练营模块六作业

Geek_e0c25c

架构训练营

Flink Side Outputs

Alex🐒

flink flink1.13

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