写点什么

美团:高速发展下如何做好移动端持续交付

2020 年 12 月 18 日

美团:高速发展下如何做好移动端持续交付

互联网飞速发展的这些年,随着业务不断扩展,移动端的工程复杂度越来越高,特别涉及大型团队或多团队协作的时候,势必遇到很多挑战,诸如稳定性、可用性、可维护性等。拿美团举例,从开始简单 App 到现在搭载无数业务场景(如外卖、酒店、住宿、打车等),在这种多业务高并发的复杂形态下,如何进行工程组织与团队协作呢?又如何保障业务稳定且高效快速呢?


在 2021 年 1 月 8-9 日举办的 QCon 全球软件开发大会(北京站)大前端工程化“专题上,美团技术专家邓常强将分享 《美团移动端持续交付实践》,在会前 InfoQ 带着疑问对邓老师进行了采访。帮助大家理清移动端持续交付的思路,以及了解美团是如何构建和优化移动端持续交付平台的。


在持续交付之前,我们先看看前端工程化和持续交付是什么,为什么要做持续交付?再看美团持续交付的背景和问题,通过他们切实的分析问题和解决问题,抽离其中逻辑,思考自身的业务怎么做持续交付。


前端工程化与持续交付


InfoQ:你是怎么理解“前端⼯程化”?


邓常强: 现在当我们提到“前端”这个领域,⼀般泛指 Web 前端开发、移动端开发、⼩程序开发,以及其他显示设备终端的开发,所以也称为“⼤前端”。⽽“⼯程化”这个概念,在后端领域已经有很成熟的落地实践。


过去⼗年,端上的设备越来越多、功能越来越强⼤,业务场景越来越复杂,技术⽣态愈发繁荣,综合这些客观因素,如何在保障业务快速、稳定发展的前提下,持续提升团队的研发效率和质量,是前端⼯程领域⽬前所⾯临的前所未有的挑战。


通常⼀个前端业务场景可能需要同时或部分覆盖到 PC、Android、iOS、⼩程序、快应⽤,这就需要开发团队为每⼀个平台单独开发⼀套代码,并适配各个平台的特性,于是逐渐就出来了各种跨平台技术,也是过去⼏年⼀直⽐较热⻔的话题;跨平台开发技术可以让业务开发同学更加专注于业务逻辑,而不⽤关⼼繁重的底层兼容适配和运维的⼯作,负责跨平台框架的同学将逐步完善基础设施建设,提供开发调试、脚⼿架、流程管理、发布等⼯具,这其实就是⼯程化的实践。


⼤前端⼀个⽐较鲜明的特点是开发技术多样且发展快速,当组织规模或项⽬规模扩⼤到⼀定程度,往往需要有更多的团队进⾏协同,服务于不同业务场景,可能也会有不同的技术选型,⼤前端⼯程复杂度越来越⾼,这时候需要从更全局的⻆度来进⾏⼯程化,充分整合或利⽤组织资源,保证基础设施的稳定性,还要考虑业务发展的灵活性,为更多的团队和业务赋能。


InfoQ:你是如何定义持续交付?


邓常强: 持续交付是⼀系列⼯程⽅法的组合排列与实践,通过⼯具化、流程化、⾃动化等技术⼿段来减少产品开发成本、降低线上⻛险、缩短上线时间。通过对过去研发活动中的经验总结、⽅法沉淀、流程规范,逐步形成的⼀套适合的、被认可的和可以遵循的研发⽅法。


借助这套⽅法和⼯具,⾼效整合各部⻔的业务信息和服务能⼒,更敏捷的响应业务的变化、组织的调整、技术的转型,提升企业的产品研发效率、降低企业的研发成本和⻛险。


InfoQ:⽬前,美团移动端持续交付平台达到⼀个怎么样的量级?


邓常强: 美团移动端持续交付平台已经成为公司移动端的统⼀基础设施之⼀,上⾯运⾏了三千多个项⽬,⽇均千次以上构建。作为⼀站式交付平台,单周 App 发布 10+ 次,动态化项⽬发布 1000+ 次。除了编译、集成、测试、打包、发布等功能之外,还为业务提供流程定制、代码检查、安全扫描、⻛险控制、信息查询、数据统计等功能。从各业务线⻆度,接⼊即可获得平台提供的持续交付能⼒,业务线可以更加专注于⾃⼰的业务逻辑和质量。


从公司⻆度,统⼀移动端持续交付平台整合了业务信息、打通了业务线之间协作的壁垒,同时从业务、产品和安全层⾯可以进⾏统⼀管理,为业务研发流程沉淀、技术架构升级、基础设施复⽤提供了有⼒保障。


在这样一个量级的情况下去做持续交付,又会遇到那些问题呢?美团又是怎么去解决的?


持续交付背景与典型问题


InfoQ:美团移动端持续交付平台建设的背景是?


邓常强: 美团移动端持续交付平台是美团业务和技术发展到⼀定阶段沉淀出来的产物,在很早的时期我们的研发团队就引⼊了敏捷开发流程,过去⼗年,美团的业务发展⼀直是⽐较快的,这也要求研发团队能够快速响应,美团移动端的 CI/CD 实践⼤概经历的三个阶段:


  • 第⼀个阶段是 2011-2015 年,业务驱动


像美⻝、外卖、酒店、电影等业务均是以业务频道的形式集成在美团 App 中,⼯程结构采⽤的是模块化,这⼀阶段我们主要是通过持续集成来保障多业务团队的协同开发,主要特点是⼯具化,围绕 Jenkins 以及一些开源工具进⾏⼯具链建设;


  • 第⼆个阶段是 2016-2018 年,技术驱动


随着业务的发展和组织结构的变化,⼯程结构演进到组件化,每个业务线更加独⽴,也开始摸索建设适合⾃⼰业务的流程⼯具,经过开发、编译、集成、测试后,发布到⼆进制组件仓库,宿主 App 经过集成、测试、打包、灰度,全量后发布应⽤市场。


这⼀阶段,各个业务线需要更快更灵活的上线能⼒,⼀⽅⾯,我们通过打通各个研发环节建⽴了⾃动化的发布流程、缩短了发布周期;另⼀⽅⾯,发布系统也开始⽀持动态化发布,可以看作是持续交付的落地。这⼀阶段的主要特点是系统化,在美团技术团队博客上可以看到美团 iOS 团队的 Hyperloop

⼤众点评 App 团队的 MCI 系统 相关介绍⽂章


  • 第三个阶段是 2019-2020 年,基建驱动


经过前两年跨平台技术的摸索和实践(QCon2018 北京上⽅锦涛分享了美团在这⽅⾯的实践),有这⽅⾯需求的业务线开始规模应⽤跨平台技术,⼯程结构更加复杂,为了保证各业务线的研发效率和质量,我们开始统⼀基础设施、规范研发流程,移动端持续交付平台建设就是在这个背景下开始的。


InfoQ:美团在移动端 CI/CD ⽅⾯的探索过程中遇到哪些典型的问题,是怎么解决的?


邓常强: 遇到过的典型的问题有不少,⽐如业务规模发展到⼀定阶段后 Jenkins 单 Master 瓶颈,先后尝试过冷热备份容灾,最终是通过⾃研任务编排、分发和管理系统解决的


还有 Jenkins ⾃由性和开放性在⼤规模协同下带来的管理难的问题,Job 爆炸、重复建设、业务维护成本⾼等等,我们在进⾏平台化建设时,充分吸取了这些教训,通过业务抽象和流程编排来解决这些问题;


同样,在研发规模扩⼤到⼀定程度后,对于 CI/CD 同学来说,还需要承担⼤量运维⼯作,移动端没有 SRE 这个⻆⾊,通常都是开发同学兼职,Slave 机器管理、运维、环境⼀致等许多后端项⽬的运维问题,最后我们采⽤ Docker 集群来取代了云主机和物理机作为编译集群,运维成本⼤幅度降低。


InfoQ:多业务形态下如何进⾏⼯程组织与团队协作?


邓常强:⼯程组织是为业务服务的,不同的业务形态决定了⼯程组织的⽅式,同时⼯程组织还会因项目规模、团队⼈员配置等多重因素而呈现不同的变体。根据对我们 100 多个 App 项目的观察发现,原⽣技术栈较多的团队会根据业务规模采用模块化或组件化来组织工程,以前端技术栈为主的团队主要使用 Hybrid 开发,同时需要为多个 App 开发或维护业务代码的团队更倾向于采⽤跨平台开发,每一种工程组织能够更好的支撑各自的业务发展。


另外,⼤前端开发技术发展的⾮常快,可能还需要迁移到新的技术框架上。多业务形态下团队协作,效率是⼀个需要提升的因素。⼀个项⽬中,可能会涉及跨团队、跨技术栈⼈员的协作和沟通,团队规模更⼤了之后,你甚⾄很难找到合适的对接⼈。这些问题就需要有⼀个系统或平台能够 打通跨业务、跨团队交流的壁垒,CI/CD 平台可以很好的承担这个⻆⾊


另外,多业务形态对 CI/CD 还有⼀个⽐较⼤的挑战的是需要应对频繁的变化,这些变化可能是来⾃业务的或来⾃技术的,需要我们做好不变的部分,去更好的适应变化的部分。


既然,持续交付是工程化必不可少的环节,能有效的降本提效;那么,建立持续交付平台有哪些必要的环节呢?


持续交付必备环节


InfoQ:建⽴⼀个移动端持续交付平台,你认为哪些环节必不可少?


邓常强: 移动端持续交付基本覆盖了移动端产品研发⽣命周期,其中会涉及到不同的⻆⾊、团队和系统,因此建⽴⼀个移动端持续交付平台是⼀个⾮常复杂的事情,个⼈认为以下⼀些环节是⾮常关键的:


  • 业务调研,了解各个业务线真正需要什么、上下游依赖或限制有哪些,业务调研之后,基本可以确定需要做哪些⼯作。

  • 确定⽅向和重点,做什么、不做什么,先做什么、后做什么;因为技术和业务的复杂性不断增加,持续交付需要解决的问题也变得越来越复杂。我们需要从复杂的需求中抽象出基础的、核⼼的,以及通⽤的能⼒,也要预留⼀定的空间,提供给业务⽅⾃定义。

  • 搭建稳定的基础设施,包括构建集群、⼀致性环境等等。如果有条件,可以借助公司内部其他系统的⼒量。

  • 持续⾃动化,这个过程中可能需要打通上下游依赖、和其他团队建⽴良好的合作关系,将复杂问题拆解为多个⼦问题,不断迭代和优化。

  • 经常和⽤户沟通,收集⽤户反馈、分析客服问题,对平台进⾏不断改进。


InfoQ:未来,美团移动端持续交付还会在哪些地⽅继续提升?


邓常强: 移动端的业务形态会更加丰富,⼤前端的技术发展也越来越繁荣和交叉,业务和技术都在快速发展变化中⼜相互促进,持续提效是我们仍将继续努⼒的⽅向。⼤前端的业务场景⽐较复杂,这对开发和测试的挑战⾮常⼤,未来,持续交付平台会和线上监控运维平台会进⾏深度打通,建⽴监控、报警、排查、修复、复盘、预防⼀体化的基础保障体系。通过平台的能⼒及时发现问题、快速修复问题、提前预防问题,持续改进全流程的运转效率。


另外,通过持续交付平台上沉淀的数据,我们可以更有效的帮助业务进⾏流程改进、质量优化和经验共享,通过研发数据为各个团队持续赋能。


通过对邓老师的采访,我们能清晰的了解到这几点:


  • 工程化与持续交付的定义;

  • 美团为什么要做持续交付,在做持续交付遇到这些( Jenkins 单 Master 瓶颈、Jenkins ⾃由性和开放性在⼤规模协同下的管理难题、Slave 机器管理、运维、环境等)问题时怎么解决;

  • 通过美团的持续交付实践,在搭建符合自己业务逻辑的持续交付平台时要充分的业务调研、确定方向和重点、搭建基础设施、持续自动化、关注用户反馈等。


更多详细内容,请关注 2021 年北京站 QCon 全球软件开发大会大前端工程化”技术专场,不见不散。目前大会门票 9 折抢购中,限时立减 680 元,优惠截至 12 月 25 日,团购更优惠!查看大会最新日程可点击QCon北京2020


嘉宾介绍


邓常强,美团技术专家。2015 年加入美团,专注编译工具优化,为美团各部门提供移动端集成技术方案,解决持续集成中的疑难杂症。并参与建设美团移动端持续交付平台,致力于持续交付效率提升和客户端构建优化。


2020 年 12 月 18 日 11:081046

评论

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

TensorFlow 篇 | TensorFlow 2.x 模型 Serving 服务

Alex

tensorflow keras tensorflow serving model serving

那片粉紫色的海

空山

旅行

涂鸦红外物联网设备开箱使用

良知犹存

物联网 测评

spring-boot-route(十四)整合Kafka

Java旅途

Java kafka Spring Boot

链表反转的两种实现方法,后一种击败了100%的用户!

王磊

Java 数据结构 算法

终于我用JOL打破了你对java对象的所有想象

程序那些事

JOL java对象分析 对象空间占用 java对象

数字货币交易所系统开发源码,区块链软件搭建

WX13823153201

Aspose.pdf破解全程记录

janux

MySQL-技术专题-存储引擎详解

李浩宇/Alex

技术分享丨华为鲲鹏架构Redis知识二三事

华为云开发者社区

redis 鲲鹏

架构师训练营 1 期第 4 周:系统架构 - 总结

piercebn

极客大学架构师训练营

甲方日常 28

句子

工作 随笔杂谈 日常

MySQL-技术专题-事务实现原理

李浩宇/Alex

Minds Factory 2020 HUAWEI HiCar 创新活动

Jessie

物联网 创新 智能 汽车 大赛

再看传记:试图进入和理解他人的生活

Nydia

高难度对话读书笔记——聆听篇2

wo是一棵草

字节跳动总结的这份《Java设计模式(实战+源码)》PDF突然火了,完整版免费开放下载!

Java架构之路

Java 程序员 字节跳动 编程语言 设计模式

MySQL-技术专题-MySQL的索引

李浩宇/Alex

伯克利:serverless是下一代计算范式

华为云开发者社区

云计算 服务

使用 Flutter 快速实现聊天应用

LeanCloud

flutter 后端 聊天

汇编入门第一篇,小白也能看懂

cxuan

后端 计算机 汇编

我的openEuler社区参与之旅

openEuler

Linux 开源 操作系统 openEuler

读10x程序员有感。

AdonisPeng

程序员 10X工作法

四面阿里成功定级P6,想和Java程序员谈一谈

Java架构之路

Java 程序员 面试 编程语言

水滴石穿之Java学习之路

孟旬

Java 学习 后端

九面成功定级阿里资深架构师,拿到180W年薪+15000股,学习一下大神的成长之路!

Java架构追梦

Java 学习 架构 面试 微服务

LeetCode题解:83. 删除排序链表中的重复元素,HashMap,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Java 中的Exception 有什么用?

Braisdom

Java Exception

并发和Read-copy update(RCU)

程序那些事

并发 并发和RCU RCU

两年Java开发经验四面阿里成功拿下P6offer,总结大厂面试的心酸血泪史

Java架构之路

Java 程序员 面试 算法 编程语言

c++笔记——类

菜鸟小sailor 🐕

c++

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

美团:高速发展下如何做好移动端持续交付-InfoQ