Google Pay

Google Pay

Google Pay 使用 Flutter 走向全球

成功指标

70%

减少工程投入

35%

减少代码行数

目标

Google Pay 拥有分布在数十个国家的 1 亿多名用户,让世界各地的用户能够支付、储蓄、管理支出等。但为了做到这一点,他们需要在 AndroidiOS 应用之间维护 170 万行代码——随着 Google Pay 不断向新的国家/地区扩展,且每个国家/地区都需要独特的定制功能,这种规模的代码量显得难以持续。

更具挑战性的是,这些新地区中有许多 iOS 用户,而他们现有的用户几乎全是 Android 用户。这意味着他们不仅需要招聘更多的 iOS 工程师,还需要持续地为 Android 和 iOS 这两个平台分别开发每一个功能。

因此,他们选择投资一个跨平台框架,通过它能够以更少的投入完成更多工作:Flutter。

为什么选择 Flutter?

团队最初将 Flutter 作为 Add-to-app(将 Flutter 添加到现有应用)的可能性进行了测试,但重写整个应用的机会太重要了,不容忽视。

虽然这意味着工程资源的大量前期投入,但这将使团队能够统一工程领导力,将工作重心从无休止的“打补丁”中解放出来,并提高客户端开发的效率和速度,从而实现更快的响应和交付时间。

最重要的是,迁移到 Flutter 将使 Google Pay 能够在全球范围内快速且经济高效地扩展。在 Android 和 iOS 上构建功能需要双倍的工作量,而使用 Flutter 只需约 1.2 倍的工作量。于是他们决定放手一搏。

他们的解决方案

使用 Flutter 重建 Google Pay 并非没有挑战。首先,他们需要让团队学习一门新的语言、平台和用户界面设计方法。其次,他们需要在应用持续更新的过程中进行重写,因为应用本身也在不断变化。最后,他们还需要在应用已发布的情况下,再次通过所有必要的安全审查和审计。

但在这一切开始之前,他们必须验证这个概念。因此,在 2019 年,他们花了几个月的时间为将 Google Pay 迁移到 Flutter 建立论证。一支由 3 名来自 Android 和 iOS 部门的资深软件工程师组成的小团队聚集在一起,通过不断的编写和重写,最终完成了一个应用的核心切片——主页、聊天和支付功能(包含关键的本地插件)。

随后,他们进行了几次小型冲刺(Sprint),让其他工程师有机会提供反馈。Flutter 大获成功——团队非常喜欢在开发时获得即时反馈,以及他们可以利用的大量高质量小部件(Widget)来简化开发工作。

在获得高级管理层的批准后,他们投入了 50 名工程师,并给予他们六个月的时间进行重新培训,并为新加坡的 Beta 版发布重写应用。

发布非常成功。在鼓舞下,他们又投入了 100 名工程师,帮助他们在印度和美国也基于 Flutter 代码库重新发布了 Google Pay。这是一场与时间的赛跑:他们需要重写一个拥有近 300 个功能的现有应用并进行 Beta 测试,然后将其推送给 1 亿多月活跃用户,同时还要维护旧版应用。

“每个人都喜欢 Flutter——当你谈论构建用户界面的速度有多快时,你可以从人们的脸上看到兴奋之情。”

- David Ko, Google Pay 工程总监

成果

尽管面临这些挑战,团队还是在 8 月初推出了 Google Pay 的印度 Beta 版测试。

重构后的 Google Pay 应用更小、管理效率更高,且更易于更新。尽管增加了多项新功能,但新代码库比原始实现减少了 35%——从 170 万行代码缩减至 110 万行。同时,团队估计他们节省了约 60-70% 的工程师时间,因为 Flutter 的管理实在是容易太多了。

该团队目前已有近 180 名软件工程师,他们仍在收集印度 Beta 测试的反馈,但结果令人期待。印度 Beta 版将于今年晚些时候向所有 1 亿多名印度用户推出,带来焕然一新的用户界面以及用户所熟悉和喜爱的一切功能。

借助 Flutter,Google Pay 3.0 将能够跨 iOS 和 Android 快速高效地扩展,并从今年在美国进行的重大重新发布开始。这项技术为团队提供了后续开发的基础,助力他们在 2021 年将 Google Pay 3.0 推广到世界其他地区。