谷歌支付

Google Pay

借助 Flutter 实现谷歌支付的全球化扩张

成功指标

70%

工程投入减少

35%

代码行数减少

目标

“谷歌支付” (Google Pay) 业务覆盖数十个国家,拥有 1 亿用户,支持全球用户进行支付、储蓄、管理开支等。然而,为了实现这一目标,他们的 AndroidiOS 应用共计使用了 170 万行代码——随着谷歌支付不断扩展到新的国家,每个国家都需要其独特的特性,这种代码量变得难以持续。

更具挑战性的是,这些新区域中有大量 iOS 用户,而他们现有的用户几乎完全是 Android 用户。这意味着他们不仅需要招聘更多的 iOS 工程师,还需要为每个功能进行两次开发——一次针对 Android,一次针对 iOS。

因此,他们转而选择投资一个跨平台框架,以便能以更少的资源做更多的事情:Flutter。

为什么选择 Flutter?

团队最初尝试将 Flutter 作为一种“添加到应用”的可能性进行测试,但重写整个应用的机遇实在不容错过。

虽然这意味着前期需要大量的工程资源投入,但这将使团队能够统一工程管理,摆脱无休止地修补漏洞的工作模式,并提高客户端开发的效率和速度,从而实现更快的响应和实施时间。

最重要的是,迁移到 Flutter 将使谷歌支付能够在全球范围内快速、高效地扩展。在 Android 和 iOS 上开发功能需要双倍的精力,而 Flutter 只需要大约 1.2 倍的工作量。因此,他们决定放手一搏。

他们的解决方案

用 Flutter 重建谷歌支付并非没有挑战。首先,他们需要对团队进行新语言、新平台和新的用户界面方法的再培训。其次,他们需要在应用不断更新的同时对其进行重写。最后,他们还需要在应用已上线的情况下,再次通过所有必要的安全审查和审计。

但在这一切之前,他们必须验证这个概念。因此,在 2019 年,他们花了几个月时间为谷歌支付迁移到 Flutter 收集论据。一个由三名资深 Android 和 iOS 软件工程师组成的小团队,不断编写和重写,直到完成了应用的一个垂直切片——包括主页、聊天和支付(带有关键的原生插件)。

随后,他们为其他工程师安排了几次小型冲刺,让他们有机会提供反馈。Flutter 大获成功——团队非常喜欢在开发过程中能即时获得反馈,以及可以利用大量高质量的组件来简化开发。

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

这次发布取得了成功。受到鼓舞,他们又引入了 100 名工程师,帮助他们在 Flutter 代码库上重新推出印度和美国的谷歌支付。这是一场与时间赛跑的任务:他们需要重写一个拥有近 300 个功能的现有应用并进行 Beta 测试,然后向超过 1 亿的月活跃用户发布,同时还要维护旧版应用。

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

- David Ko,谷歌支付工程总监

成果

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

重建后的谷歌支付应用更小、管理效率更高、更新更便捷。尽管增加了多项新功能,新代码库比原始实现减少了 35%——从 170 万行减少到 110 万行代码。同时,团队估计他们节省了大约 60-70% 的工程师时间,因为 Flutter 的管理要容易得多。

该团队——目前拥有近 180 名软件工程师——仍在收集印度 Beta 测试的反馈,但结果前景光明。今年晚些时候,印度 Beta 版将向超过 1 亿的印度用户全面推出,带来全新的用户界面以及用户熟悉和喜爱的所有功能。

借助 Flutter,谷歌支付 3.0 将能够快速高效地在 iOS 和 Android 平台上扩展,今年将从美国谷歌支付的重大重新发布开始。这项技术为团队在 2021 年将谷歌支付 3.0 扩展到世界其他地区奠定了基础。