在没有微信、支付宝的地方,打造一款1.25亿下载量的超级App
如果回到十年前,让你有机会将”支付宝“、“饿了么”、”滴滴“的这些应用,实现在同一个 App 里,结合支付、打车、送餐等等功能,聚集众多企业的用户数量,那么这个开发过程会有什么样的机遇和挑战?
在没有支付宝、微信的东南亚,Grab 就有机会成为这样的一个超级 App!
东南亚被誉为”明天的中国“。2012 年推出的 Grab,集打车、支付、送餐、地图、物流、生鲜于一体,在这片互联网的原始土壤上,成长异常的快,目前 App 下载量达 1.25 亿,这个用户体量可对比滴滴的数据 1.1 亿。再加上功能立体,业务规模上升特快,每 6-12 个月就需重新设计一次架构,迅速进行迭代。
这个超级 App,在开发工作上也是一个世界性的战场,员工来自 40 个国家,在全球设有 7 个研发中心,也就是说跟你一起写代码的,有可能来自西雅图,也有可能来自雅加达... 拥有 300 多位技术人员的北京研发中心,是 Grab 企业全球版图的重要一环,InfoQ 采访了北京研发中心负责人郑少麟,他即将在 7 月 12 日深圳 ArchSummit 全球架构师峰会上分享《跨文化的技术管理》话题。
1、把中国模式直接复制过去?
中国的互联网企业经历过激烈的厮杀,移动支付历经十年沉淀,滴滴打车、饿了么外卖也有数年稳定的发展,都已处于世界领先水平,经验、人才皆有储备。在东南亚,工程师并不是人们愿意选择的职业方向,人才缺乏,不像 Uber 或滴滴有硅谷或北京这样的科技人才基地作为支撑。
Grab 将目光放到了中国,Grab 的创始人兼 CEO Anthony Tan 先生谈道:“当 Grab 成立之初,由于东南亚科技人才市场规模有限,人才需求是我们较为棘手的问题,所以公司决定在北京设立 R&D centre。北京的软件工程师和开发师与东南亚地区的市场团队紧密合作,将 Grab 的产品与服务在东南地区铺展开来。这些人才是 Grab 发展过程中所不可或缺的。”
依靠了中国的人才和经验,那是不是可以直接复制中国的既有模式?
北京研发中心负责人郑少麟说:”没有一种能放之四海而皆准的方法“。在中国有成熟的移动支付体系,可以自然而然开展更多垂直行业和服务。而在东南亚几乎一半的人口没有银行账号,现金交易是主流。Grab 是第一个允许用户无需绑定银行卡即可进行移动支付使用现金消费的公司。为了适应不同地区的运输情况,在雅达加你还可以通过 Grab 叫到摩托车,在柬埔寨叫到嘟嘟车,在菲律宾叫到三轮车...
Grab 覆盖东南亚 8 个国家,235 座城市,不同的语言不同的文化,各国监管机构也各不相同,必须采用本地化的方法,为各个市场定制化产品,那么就是说并非同一款 App 能满足所有国家,必须为每一座城市提供独特的用户体验,甚至可以说每座城市都有一款 Grab App!
2、一次前所未有的快行军
在互联网生态里,有着像微信、支付宝这样的“赢者通吃”现象,而 Grab 在东南亚也并非完全没有对手。这是一场需要加速的战斗。
2012 年 Grab 推出打车服务。
2016 年 GrabPay 上线。
2017 年 GrabPay 衍生到打车之外的支付领域,随后成立 Grab Financial,短短两年完成支付宝到蚂蚁金服十年的旅程。
2018 年增加订餐服务 Grab Food。同年发布面向开发者的应用平台 GrabPlatform,也是达成东南亚唯一超级应用目标的基础。通过 GrabPlatform,合作伙伴可以将 Grab 集成到他们的服务中,也可以将他们的服务集成到 Grab 中。
到目前,用户下载量超过 1.52 亿次,今年一月完成了 30 亿次打车订单。同时 Grab 也在快速扩张团队,在 2018 年底,已经有了 2000 多名工程师和技术人员,计划 2019 年底达到 3000 人。
带来的挑战
快速发展带来的技术挑战主要有三点:一是复杂立体的业务结构,二是急剧扩张的业务规模,三是快速扩张同时高度分布式的研发队伍。
这其中第一点首先体现在移动端架构上。Grab 主 App 包含很多很多业务板块,这些业务之间互相独立,又相互依赖。各个业务板块各自迭代,于此同时 Grab 还保持着每周一次发布的快速节奏。需要为整个移动端建立一套涵盖开发、CI/CD、测试的高度自动化的基础设施。
第二点是 Grab 业务一直在高速发展,一个方面是业务的量一直在增长,另一方面是业务的模式一直变得更复杂。同时 Grab 的主业务”打车“,具有极高的稳定性要求。因为一旦系统出现故障,会有成千上万人无法获得交通工具,不得不滞留在某地,变成社会事件。快速变化和稳定本质上是矛盾的,因为变化会引入不确定性。Grab 一直在大力投资技术力量在建立相关的基础设施和建立相应的机制上,以便最大程度上用自动化手段来保障稳定性,同时允许最快速的迭代和最大的灵活性,最终在此二者中达到平衡。
第三点涉及到团队管理。在 Grab 有时候一个团队新人会超过 2/3。此时团队管理成为巨大的挑战,没有成熟的团队成员能够帮助带新人,价值观和工作模式都更难推广下去。这对技术领导者提出了非常高的要求。
对架构的要求
业务的增长也对系统架构提出了更高的要求,郑少麟表示:“一般来说一个静态的系统架构只会适配未来 6-12 个月的增长,每 6-12 个月就需要重新进行架构设计。从我 2015 年加入 Grab 到现在,无论是业务规模还是业务模式都在急剧发展,从最开始主业务打车订单量持续飞速增长,到现在一个超级 App 同时支持打车、送餐、支付、物流等诸多业务。另一个要点是 Grab 的主营业务‘打车’,是一个对稳定性要求非常高的业务。业务增长的要求和稳定的要求为 Grab 带来了巨大的挑战:Grab 必须在变化和稳定中找到平衡”。
技术选型
为了应对快速迭代,Grab 必须在最短的时间里集合全世界顶尖的技术,解决业务需求与业务逻辑变得越来越复杂而带来的问题。Grab 做出了明智的技术选择,比如使用 Go 语言以及跨平台开发框架 Flutter。
Grab 早在 2014 年就已经选定 Go 作为主要的技术栈,以取代当时以 Node.js 为主的技术架构。当时做出这个选择的主要原因郑少麟认为有两点:
- Go 的并发模型特别适合打车类业务。打车业务的特点是并发度高,单一任务(一次打车)持续时间长,Goroutine 非常适合编写这类程序,它的机制允许工程师以最自然的思维模式写业务代码。
- Go 是面向工程的语言。它的很多特性都特别适合大团队使用,比如强制统一的 gofmt 格式标准,避免了一切美学方面的争论。再比如内嵌的测试框架,-race 并发冲突检测,只支持源代码引用等等特性,从一开始就考虑到了在大团队大规模软件开发活动中的应用。”
“Flutter 是我们在研发送餐业务时选择的技术栈之一。当时我们比我们的竞争对手落后了很多,我们必须以最快的速度迎头赶上。Flutter 具备很明显的优势,通过应用 Flutter 我们得以投入最少的资源,以非常快的速度不断迭代产品。我个人的信条是,任何技术选型都不是孤立的技术问题,最终我们都要服务于商业目标。”
3、Coding 无国界
Grab 已经发展的相当庞大,拥有数千名研发,在分布在班加罗尔、东南亚、北京和西雅图的 7 个研发中心里进行协作开发。本土化运营 + 远程研发肯定复杂化了技术工作。Grab 将产品团队绝大部分放在了东南亚,和市场和用户在一起,这就意味着产品团队和技术团队之间将不得不大量依赖远程沟通。这对于复杂且充满了细节的产品研发工作带来了很大的挑战。
在跨国交付和测试上,Grab 形成了一套成熟的从产品设计到产品发布的流程。设计这套流程主要解决几个问题,包括超大规模团队协同开发同一 App,快速迭代,适配不同文化的用户。
- PRFAQ,产品立项前从 PR 角度论证产品价值
- User Research,用户研究
- Product Spec,产品设计
- Design Spec,交互设计
- Prototype Verification,原型验证,重大的功能都要经过由真实用户参与的原型验证,以确保用户会真正接受新的产品特性
- Eng Spec,技术方案设计
- Feature Flag,产品特性开关,所有的产品特性都会用单独的开关保护
- Agile Process,敏捷开发
- CI / CD with Automation Test,集成了自动化测试的 CI 和 CD 系统
- Regression,发布前的回归测试
- Weekly Release Train,每周发布一次的版本火车
- Grab Early Access,面向内部特定用户的尝鲜版
- A/B testing,A/B 测试
- Staged Rollout,灰度发布
那不同的研发中心负责的代码之间是否有比较复杂的权限管理或进行黑箱隔离?郑少麟回复说:“我们采用了单一大代码仓库的方案。任何 Grab 工程师都可以阅读整个代码库,也可以为代码库的任何部分进行修改。当然为了保证代码的质量和运行稳定,我们制作了大量的工具来自动化检查代码,我们强制对代码进行多人 Review,强制代码必须通过诸多的自动化测试、检查工具。Grab 在文档上也是类似的,除了少数涉及到具体核心业务数字的文档或涉及机密业务的文档之外,其他大多数文档都可以很方便地被员工获取到。”
这意味着工程师能够从不同地区的人才那里获得特定的专业知识和本地视角。比如:
- 班加罗尔的人才对新的移动优先技术有着深刻的了解,并在开发新的支付解决方案方面有着丰富的经验,这些解决方案将深化金融包容性,增加东南亚地区的移动支付渠道。
- 在雅加达,团队开发算法来解决雅加达新的道路法规。以及 Grab 顺风车 (Nebeng),这是一项为大雅加达近 140 万通勤者服务的“共享摩托车”服务。
- 在越南,本地人才年轻、雄心勃勃、敏锐且受数据驱动。由于每天都在使用 Grab 产品,越南工程师对于如何从技术和非技术角度解决问题有很好的见解。
- 在北京,利用食品配送领域的成熟市场和该领域的人才,开发外卖领域的产品。
- 在西雅图,有着机器学习、分析领域的顶级全球人才。也有在世界上一些最大的科技公司工作经验的人才。
拥有几千名员工,几百名技术管理,出现 Bug 能得到快速的修复吗?Grab 的 Data Insights 工程主管 Steve Yegge 曾撰文表示:“一旦出现问题,依然能够得到快速修复,感觉就像只有大约 20 个人坐在一起,作为一个有凝聚力的团体做出决定。我们称之为 OneGrab。”
作为北京研发中心的领导者,多国合作意味着需要什么样的能力?
郑少麟表示:“我们努力在北京为我们从事的每一个项目组建一支人数足够的团队,它允许北京的工程师每天相对独立地工作,同时仍然与其他分布式团队合作。Grab 在中国并没有业务。因此,与东南亚客户保持联系对我们北京 R&D 中心的同事来说极其重要,对于一个 R&D 的领导者,拥有一个开放的心态,能够真正去理解我们的用户是关键。”
4、超级 App 成长的难得机遇
曾在谷歌工作 13 年的 Steve Yegge 说从互联网发展早期至今,他从来没看到过这么大一块尚未被耕种的互联网土壤。
互联网的发展并不太均匀,不同国家的 IT 行业处于不同的发展阶段,如果现在较为发达的业务,进入不太发达的地区,就如同驾驶时光机回到过去。东南亚超过 6 亿人口,是中国人口的一半,美国人口的两倍。有近一半的人口处于 30 岁以下,年轻人很依赖手机,来获取信息和进行购物。受限于网络接入、支付方式等设施,当前互联网发展大约滞后中国 5-10 年,这种滞后也可以解读为一种未来潜力。在中国发生过的故事,都有机会在这里重现。
从网约车到外卖,一夜之间在这里遍地开花,Grab 是推动这一切的最佳平台之一。今年 3 月它完成了一轮超 45 亿美元融资,估值达 110 亿,被 CB Insights 视为当前全球市场上排名 15 的独角兽初创企业之一。这个一站式的超级应用,在这片土壤上,有着巨大的机遇。
采访嘉宾:郑少麟,Grab 北京研发中心总经理。多年互联网技术管理经验,参与创立多家科技创业公司,有丰富的 O2O 业务研发管理经验。在 2015 年主导 Grab 成立了北京研发中心,其目前也是 Grab 最大的海外研发中心。Grab 是东南亚最大的互联网 O2O 平台,业务涵盖了打车、支付、送餐、地图、物流、生鲜等诸多领域。带领北京研发中心团队先后从 0 到 1 建设了很多业务平台,包括顺风车,GrabNow,地图,送餐,物联网等业务。
点击“了解更多” 查看更多好文