Google Pay

Google Pay

Google Pay 携手 Flutter 走向全球

成功指标

70%

工程工作量减少

35%

代码行数减少

目标

Google Pay 拥有数千万用户,遍布数十个国家/地区,让全球用户能够支付、储蓄、管理支出等等。但为了实现这一目标,他们的 AndroidiOS 应用总计使用了 170 万行代码——随着 Google Pay 继续扩展到新的国家/地区(每个国家/地区都需要自己的独特功能),这种代码量变得不可持续。

更具挑战性的是,这些新地区中有许多拥有大量 iOS 用户,而他们现有的用户几乎全是 Android 用户。这意味着他们不仅需要雇佣更多的 iOS 工程师,还需要继续为每个功能构建两次——一次用于 Android,一次用于 iOS。

因此,他们选择投资一个跨平台框架,使他们能够事半功倍:Flutter。

为什么选择 Flutter?

团队最初将 Flutter 作为“添加到应用”的可能性进行测试,但重写整个应用的机会实在太大了,不容忽视。

虽然这意味着前期需要投入大量的工程资源,但它将使团队能够统一其工程领导力,将工作从无休止地修补漏洞中解放出来,并提高客户端开发的效率和速度,从而加快响应和实施时间。

最重要的是,迁移到 Flutter 将使 Google Pay 能够在全球范围内快速、高效地扩展。虽然在 Android 和 iOS 上构建功能需要双倍的精力,但 Flutter 只需约 1.2 倍的工作量。因此,他们决定放手一搏。

他们的解决方案

用 Flutter 重建 Google Pay 并非没有挑战。首先,他们需要对团队进行新语言、新平台和新的用户界面方法的再培训。然后,他们需要重写不断更新的应用程序。最后,他们还需要对已发布的应用程序再次进行所有必要的安全审查和审计。

但在此之前,他们必须验证概念。因此在 2019 年,他们花了几个月的时间为 Google Pay 迁移到 Flutter 编写案例。由三名来自 Android 和 iOS 的高级软件工程师组成的小团队齐心协力,反复编写,直到他们完成了应用程序的一个垂直切片——主页、聊天和支付(带有关键的原生插件)。

然后,他们为其他工程师进行了几次小型冲刺,让他们有机会提供反馈。Flutter 大受欢迎——团队喜欢他们可以在开发过程中获得即时反馈,以及他们可以利用大量高质量小部件来简化开发。

获得高层管理人员的批准后,他们引入了 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 上快速高效地扩展,从今年 Google Pay 在美国的大规模重新发布开始。这项技术为团队在 2021 年将 Google Pay 3.0 扩展到世界其他地区奠定了基础。