写点什么

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

评论

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

技术分享| 如何使用Prometheus实现系统进程监控

anyRTC开发者

Prometheus 服务器 运维开发 数据监控 系统进程监控

字节前端必会react面试题

beifeng1996

React

自己手写一个redux

helloworld1024fd

JavaScript

如何实现一个计算器

Towify

如何实现购物车一键全选?

Towify

超全!9种PCB表面处理工艺大对比

华秋PCB

生产 PCB PCB工艺

阿里前端二面必会react面试题总结

beifeng1996

React

前端二面vue面试题(边面边更)

bb_xiaxia1998

Vue

坚果的2022年终总结

坚果

年终总结 OpenHarmony

从React源码来学hooks是不是更香呢

flyzz177

React

王龙:数据烟囱亟需打破 —— 解读云原生数据库的2022

MatrixOrigin

数据库 云原生 MatrixOrigin MatrixOne

react源码分析:实现react时间分片

flyzz177

React

2022年后疫情时代旅游业发展的新趋势

易观分析

旅游 后疫情时代

面试官:能用JavaScript手写一个bind函数吗

helloworld1024fd

JavaScript

字节前端高频手写面试题(持续更新中)

helloworld1024fd

JavaScript

从React源码角度看useCallback,useMemo,useContext

flyzz177

React

直播|PostgreSQL 技术内幕(五)Greenplum-Interconnect模块

酷克数据HashData

postgresql

vue组件通信方式有哪些?

bb_xiaxia1998

Vue

了解下 Rust 的所有权机制

ooooooh灰灰

rust 后端 编译

带你实现react源码的核心功能

flyzz177

React

阿里达摩院5G云网技术融合实践——与世炬网络共同探索智能制造场景应用

云布道师

阿里云 5G

从源代码构建TensorFlow流程记录

京东科技开发者

tensorflow GitHub 开源 源代码 企业号 1 月 PK 榜

2023年工作上的几个小目标

SAP虾客

系统集成 在家办公 PRA 自动化仓库

无代码开发

间隔

滴滴前端一面高频vue面试题及答案

bb_xiaxia1998

Vue

TorchDynamo初探:Python ByteCode的动态修改

OneFlow

人工智能 深度学习 TorchDynamo

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

vue组件通信6种方式总结(常问知识点)

bb_xiaxia1998

Vue

2023前端必会手写面试题整理

helloworld1024fd

JavaScript

react源码分析:深度理解React.Context

flyzz177

React

react源码分析:babel如何解析jsx

flyzz177

React

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