写点什么

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

评论

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

聊聊IT行业的项目管理模式

圣迪

项目管理 敏捷 pmp 开发 瀑布

一对一沟通有必要吗?

Justin

沟通 28天写作

38 K8S之CNI插件与选型

穿过生命散发芬芳

k8s 28天写作 12月日更

架构实战营 第4期 模块一作业

架构实战营 模块一 「架构实战营」

字典树之旅01.开篇

极客志

自然语言处理 数据结构 算法 nlp 字典树

字典树之旅02.Trie 的标准实现

极客志

自然语言处理 数据结构 算法 Trie 字典树

盘点JavaScript哪些常用的字符串对象

你好bk

JavaScript 大前端 字符串 基础知识 12月日更

Spring 扩展之深入分析 Bean 的类型转换体系

chenssy

死磕 Java 死磕 Spring

Spring 扩展之自定义类型转换器

chenssy

死磕 Java 死磕 Spring

面试官synchronized连环问,学会Monitor之后轻松拿下

李子捌

Java、 28天写作 12月日更

Redis为何这么快?

JavaEdge

12月日更

毕业设计

毛先生

毕业总结

毛先生

学习能力

Nydia

在线MySQL,SQL Server建表语句生成JSON测试数据工具

入门小站

工具

架构训练营作业一

supermenG

架构师训练营 4 期

面试官问我:什么是缓存击穿,该怎么解决?

喵叔

28天写作 12月日更

Java jar 如何防止被反编译

xcbeyond

28天写作 12月日更

Prometheus Exporter (二十一)Ceph Exporter

耳东@Erdong

Prometheus Ceph 28天写作 exporter 12月日更

学生管理系统架构设计

tony

「架构实战营」

「架构实战营」模块一《为何架构设计能力难以提升》作业

DaiChen

作业 模块一 「架构实战营」

团队基建系列 - 组织知识传承3 破局

搬砖的周狮傅

聊聊 Kafka:Producer 源码解析

老周聊架构

技术人创业过程中应保持开放的心态

wood

创业 技术 28天写作

MySQL探秘(八):InnoDB的事务

程序员历小冰

MySQL 事务 28天写作 12月日更

你了解集合?那你倒是给我说说啊!【1】

XiaoLin_Java

12月日更

模块1

Geek_59dec2

记录:今年最骄傲的一件事

将军-技术演讲力教练

在K8s里部署Eureka集群

xiaoboey

Kubernetes Spring Cloud Eureka Gateway 服务发现

SQS 和 SNS 对比分析

liuzhen007

28天写作 12月日更

[Pulsar] Consumer如何消费消息

Zike Yang

Apache Pulsar 12月日更

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