移动开发工程化实践

会议室:第五会议厅A
出品人:左志鹏

随着移动互联网近几年飞速的发展,单个APP的业务越来越丰富,功能越来越强大。导致... 展开 >

专题出品人:左志鹏

滴滴出行 终端技术部负责人

2011年加入腾讯负责过Android手机地图,地图SDK,底图渲染引擎,离线公交路线检索引擎,手机街景引擎的研发。2015年加入滴滴,现任滴滴终端技术部负责人兼工程技术委员会移动研发通道负责人,主导了滴滴APP的平台化演进和多个大版本的重构及移动研发领域的探索。

专题出品人:左志鹏

滴滴出行 终端技术部负责人

2011年加入腾讯负责过Android手机地图,地图SDK,底图渲染引擎,离线公交路线检索引擎,手机街景引擎的研发。2015年加入滴滴,现任滴滴终端技术部负责人兼工程技术委员会移动研发通道负责人,主导了滴滴APP的平台化演进和多个大版本的重构及移动研发领域的探索。

地点:第五会议厅A

专题:移动开发工程化实践

随着移动互联网近几年飞速的发展,单个APP的业务越来越丰富,功能越来越强大。导致协同开发的工程师数量倍增,代码也越来越臃肿,人员间的协同成本,业务的迭代成本,代码的维护成本均呈指数型增加。为解决上述难题,工程化改造和工具化建设应之而来。

工程化的本质是将复杂问题简单化,从而在业务不断增长,人员不断增加,代码不断膨胀的过程中,始终保持着研发效能的高效,将复杂业务模块化,通用模块不断沉淀,模块间物理解耦,研发人员按照模块划分工作边界,从而实现化繁为简的过程。

工具化是模块化的基础也是补充,依赖管理工具负责模块间的依赖关系和版本控制;构建流工具让模块间可按需集成,持续集成,预编译,自动化测试,代码漏洞审查,保证开发集成过程中的高效和发布前的质量;实时监控工具,动态化系统让APP可及时发现问题并快速修复。

类比我们用的台式机,CPU,显卡,主板,硬盘,显示器,电源,机箱等都是一个模块,将一个复杂的台式机设计成多个模块,模块可组装,模块间的接口可兼容,不同的模块可搭配的过程就是工程化的过程。每个模块形成了自己的科技黑箱,每个厂商只关注自己生产的模块内部实现以及自己模块对外提供的接口兼容性。在这个过程中将一个极其复杂的PC主机的制造过程大大简化,让台式机进入千家万户变为可能。而装机过程中的螺丝刀,胶水,排查故障时的电表等仪表都是工具化过程中积累出来的。

移动研发相较于传统工程领域只算是刚刚起步,各团队在业务中不断深化的工程实践经验都是非常宝贵的,同时已产出了很多优秀的工具,这个过程需要我们共同的努力。

by 梁士兴

美团点评
研究员
从分层复用到自动化测试,看美团客户端架构演变

美团点评伴随着业务的飞速发展,客户端研发团队的规模从初期的20余人的发展为数百人,且分散在不同的业务团队。如此大规模的研发团队,如何保证高效的内外部协同效率?

美团与大众点评原本是两家独立运营的大型互联网公司,分别有着不同的积累和储备。两家的合并为业务带来巨大的好处:更多的流量、更多的用户。但同时也为技术团队带来了巨大的挑战:如何能够同时高效的在美团和大众点评两个App上实施业务开发?

突破了这些难题之后,我们希望继续提高我们的研发效率。经过系统性的分析,我们判断测试效率当前阶段的效率瓶颈,对应的解决思路是实施自动化测试。那么问题又来了,类似美团点评的业务在不停的快速发展和迭代,是否适合实施大规模的自动化测试?

演讲提纲

  • 美团应用在架构演进路线上走过的几个阶段
  • 从单一团购业务形态到垂直化的转变过程
  • 美团、点评等多个应用复用带来的挑战与解决方案
  • 自动化测试体系的建设思路

听众收益

  • 理解美团点评客户端团队的技术架构及其设计思路,帮助团队技术负责人设计有利于提升研发效率的业务架构;
  • 如何在大规模业务开发团队中高效实施自动化测试,进一步提升研发效率和质量。

by 顾辉

阿里巴巴
高级技术专家
UC浏览器容器化架构演进之路

摘要:

整个演讲内容分为4个主要方向:

1- UC浏览器分为国内版和国际版,是移动出海的典范,通过GLOCAL(think global, act local)的打法深入当地,提供符合当地文化的定制化服务,这样导致国内版和国际版在业务功能上有很大的差别。那么App架构如何同时支撑国内,国际多个版本的快速迭代?构建系统做了哪些支持?在演讲过程中,会谈到能够满足一致需求及一致性能稳定性要求的架构解决方案,如容器化解决方案等。

2- UC有自己的内核团队,专注内核模块的开发,同时作为一个内容的综合入口,提供了搜索、小说、漫画、头条等业务功能,而要实现数百号人团队高效运作,这其中的挑战非常多,如:对快速搭建产品框架、快速引入成熟移动中间件、快速试错、A/B test有着强烈的时间性诉求等等。当然也有应对措施,如:提供体系的容器化解决方案,提供业务组件化的规范、工程结构,配置相应的开发调试机制及脚本等。

3- 随着移动互联网的发展,容器化、业务内容化、精细化运营成为大的趋势,UC是通过什么样的技术手段保证高效运营的?

4- 随着React Native以及Weex这样的跨平台技术的出现,PWA这样技术的出现,以及网络状态逐步优化,前端和客户端的边界越来越模糊,作为能做Web内核优化的团队,我们在布局大前端的融合。

提纲:

  • UC浏览器国内、国际版本演进方式;
  • UC浏览器100人团队开发班车模式引入;
  • UC浏览器内容化后客户端的容器化之路;
  • UC浏览器大前端的融合与规划。

听众受益点:

  • 大型团队的研测运作模式,大象如何跳舞;
  • 国际版本与国内版本如何同步演进,出海的思路;
  • 大前端的实践,对于移动互联网发展的思考和探讨。

by 王涛

滴滴出行
平台技术部 App架构组 架构师
滴滴出行跨地域 iOS 构建优化与持续集成

随着滴滴出行业务的不断拓展,客户端开发团队人数激增,代码量急剧膨胀,开发人员物理地域不同(北京、上海、杭州),人员间的协同开发成本,代码维护成本成指数型增加。在如此前提下,如何保证稳定高效的协同开发?

滴滴业务的高速发展对滴滴客户端的组织架构提出了新的挑战,如何才能高效的进行代码复用,持续集成和按需集成?

工程涵盖业务组件繁多,代码量巨大,单次构建耗时长,一个组件出错就要重新再来。如何避免这种情况?

演讲提纲

  • 滴滴出行客户端在架构及构建流程的演进之路;
  • 滴滴的组件化构建实践及自研构建工具的介绍;
  • 基于 CocoaPods 进行的预编译优化,标准化构建流程;
  • 集成构建平台的设计思路。

听众收益

  • 理解滴滴客户端的架构设计及标准化的构建流程,对类似体量的工程提供借鉴性方案;
  • 组件化的持续集成,按需集成方案;
  • 预编译优化的实施及如何避免踩坑;
  • CocoaPods 的不足及改进;
  • 滴滴客户端团队的协同开发经验。

by 王秀刚

京东金融
移动研发部 客户端iOS团队负责人&高级架构师
京东金融移动端多业务集成解决方案

随着集团业务的不断发展,研发团队规模增大(100多人),App活跃持续增长(月活千万级),客户端单一的工程已经不能够满足当前业务需求。因此,多工程集成的客户端项目应用而生。

工程结构上的拆分(工程组件化),使整个项目层次分明,业务解耦,对研发效率明显提升。在此基础上,京东金融【再组件化平台】的建立,测试和研发人员可以任意快速的搭建自己需要的业务模块工程,进行单元开发和测试,提高研发和测试的团队协作的效率,简化团队协作流程,快速迭代,保证App的整体性能。

演讲提纲

  • 业务发展对组件化的推动;
  • 把业务模块从App中独立拆分出来(SDK化);
  • 基础组件的提炼和抽象;
  • 混合业务模块的自动化创建工程和单元测试。

听众收益

  • 提高一个大型APP团队的整体研发和运营效率;
  • 工程组件化对于业务的解耦;
  • 业务的快速介入;
  • 工程自动化实践(打包,模块测试);
  • 获取京东金融在移动组件化方面的一手经验和思路。

极客邦控股(北京)有限公司

北京市朝阳区望京利泽中二路洛娃大厦C座6层1607