Google Pay
使用 Flutter 让 Google Pay 走向全球
成功指标
70%
减少工程工作量
35%
减少代码行数
目标
Google Pay 拥有数千万用户,遍布数十个国家/地区,允许全球用户支付、储蓄、管理支出等。但为了实现这一点,他们需要在 Android 和 iOS 应用之间维护 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 名工程师,并给了他们六个月的时间对应用程序进行再培训和重写,以便在新加坡进行测试版发布。
发布取得了成功。受到鼓舞,他们又招募了 100 名工程师,帮助他们在 Flutter 代码库上重新发布了印度和美国的 Google Pay。这是一场与时间的赛跑:他们需要重写一个拥有近 300 个功能的现有应用程序,并对其进行测试版测试,然后发布给超过 1 亿的月活跃用户,同时维护旧版应用程序。
“每个人都喜欢 Flutter——你可以看到人们在谈论构建用户界面的速度时脸上兴奋的表情。”
- David Ko,Google Pay 工程总监
结果
尽管面临这些挑战,该团队于 8 月初在印度推出了 Google Pay 的测试版。
重建后的 Google Pay 应用程序更小,管理效率更高,更新也更容易。尽管添加了几个新功能,但新的代码库比原始实现小了 35%——110 万行代码,而不是 170 万行。与此同时,该团队估计他们节省了大约 60-70% 的工程师时间,因为 Flutter 的管理非常容易。
该团队(现在有近 180 名软件工程师)仍在收集印度测试版的反馈,但结果看起来很有希望。印度测试版将在今年晚些时候向超过 1 亿印度用户推出,届时将带来全新的用户界面以及他们用户所熟悉和喜爱的所有功能。
借助 Flutter,Google Pay 3.0 将能够在 iOS 和 Android 上快速高效地扩展,首先是今年在美国重新推出 Google Pay。这项技术为该团队在 2021 年将 Google Pay 3.0 推广到世界其他地区奠定了基础。