PayPal 采用 Go 进行现代化改造和扩展

PayPal
Quotation mark.

由于我们的 NoSQL 和 DB 代理在多线程模式下使用了相当多的系统详细信息,因此代码变得复杂,难以管理不同的条件,鉴于 Go 提供了处理复杂性的通道和例程,我们能够构建代码以满足我们的要求。

— Bala Natarajan工程高级总监, 开发人员体验  在 PayPal

基于 Go 构建的新代码基础设施

PayPal 的创建是为了实现金融服务的民主化,并使个人和企业能够加入全球经济并在其中蓬勃发展。PayPal 支付平台是这项工作的核心,它使用专有技术和第三方技术的组合,在全球数百万商家和消费者之间高效安全地促进交易。随着支付平台的不断发展和复杂化,PayPal 寻求对其系统进行现代化改造,并缩短新应用程序的上市时间。

Go 在生成随着软件部署规模而轻松扩展的简洁高效代码方面的价值,使该语言非常适合支持 PayPal 的目标。

PayPal 开发的专有 NoSQL 数据库是支付处理平台的核心。然而,代码的复杂性极大地降低了其开发人员改进平台的能力。Go 的简单代码布局、goroutine(轻量级执行线程)和 channel(充当连接并发 goroutine 的管道)使得 Go 成为 NoSQL 开发团队简化和现代化平台的自然选择。

作为一个概念验证,一个开发团队花了六个月学习 Go,并从头开始用 Go 重新实现 NoSQL 系统,在此期间,他们还提供了有关如何在 PayPal 更广泛地实施 Go 的见解。截至今日,30% 的集群已迁移到使用新的 NoSQL 数据库。

使用 Go 简化以进行扩展

随着 PayPal 平台变得越来越复杂,Go 提供了一种方法来简化大规模创建和运行软件的复杂性。该语言为 PayPal 提供了出色的库和快速的工具,以及并发、垃圾回收和类型安全性。

通过让 PayPal 开发人员摆脱 C++ 和 Java 开发的噪音,Go 使其能够花更多时间查看代码并进行战略性思考。

在这个新编写的 NoSQL 系统成功之后,PayPal 中更多的平台和内容团队开始采用 Go。Natarajan 目前的团队负责 PayPal 的构建、测试和发布管道,所有这些都内置于 Go 中。该公司拥有一个大型构建和测试场,完全使用 Go 基础设施进行管理,以支持整个公司的构建即服务(和测试即服务)。

Go gopher factory

使用 Go 现代化 PayPal 系统

借助 PayPal 所需的分布式计算功能,Go 是刷新其系统的正确语言。PayPal 需要并发且并行的编程,针对高性能和高可移植性进行编译,并为开发人员带来模块化、可组合的开源架构的优势,Go 已交付所有这些内容,并帮助 PayPal 现代化其系统。

安全性与可支持性是 PayPal 的关键问题,并且该公司的运营管道越来越多地由 Go 主导,因为该语言的简洁性和模块性帮助他们实现了这些目标。PayPal 部署 Go 为开发人员营造了一个创造力平台,使他们能够为 PayPal 的全球市场大规模生产简单、高效且可靠的软件。

随着 PayPal 继续使用 Go 来实现其软件定义网络 (SDN) 基础设施的现代化,他们除了看到代码更易于维护之外,还看到了性能优势。例如,Go 现在为路由器、负载均衡器和越来越多的生产系统提供支持。

“在我们运行 Go 代码的严格管理环境中,我们看到 CPU 减少了大约 10%,同时代码更简洁、更易于维护。”

— Bala Natarajan工程高级总监

Go 提高了开发人员的工作效率

作为一家全球性运营公司,PayPal 需要其开发团队有效地管理两种规模:生产规模,尤其是与许多其他服务器(如云服务)交互的并发系统;以及开发规模,尤其是由许多程序员协作开发的大型代码库(如开源开发)

PayPal 利用 Go 来解决这些规模问题。该公司开发人员受益于 Go 的能力,即它将解释型、动态类型语言的易编程性与静态类型、编译语言的高效性和安全性相结合。随着 PayPal 实现其系统的现代化,对网络和多核计算的支持至关重要。Go 不仅提供这种支持,而且提供得很快——在单台计算机上编译一个大型可执行文件最多只需几秒钟。

PayPal 目前有 100 多名 Go 开发人员,由于该公司已经成功实施了许多 Go,因此未来选择采用 Go 的开发人员将更容易获得语言批准。

最重要的是,PayPal 开发人员使用 Go 提高了他们的工作效率。Go 的并发机制使得编写充分利用 PayPal 多核和网络化机器的程序变得容易。使用 Go 的开发人员还受益于它可以快速编译为机器代码,并且他们的应用程序获得了垃圾回收的便利性和运行时反射的强大功能。

加快 PayPal 的产品上市时间

PayPal 目前的一流语言是 Java 和 Node,而 Go 主要用作基础设施语言。虽然 Go 可能永远无法取代某些应用程序的 Node.js,但 Natarajan 正在努力使 Go 成为 PayPal 的一流语言。

通过他的努力,PayPal 还正在评估迁移到 Google Kubernetes Engine (GKE) 以加快其新产品的上市时间。GKE 是一个托管的、可用于生产的环境,用于部署容器化应用程序,并且带来了 Google 在开发人员工作效率、自动化运营和开源灵活性方面的最新创新。

对于 PayPal 而言,部署到 GKE 将通过简化 PayPal 部署、更新和管理其应用程序和服务来实现快速开发和迭代。此外,PayPal 将发现运行机器学习、通用 GPU、高性能计算和其他受益于 GKE 支持的专用硬件加速器的负载变得更加容易。

最重要的是,对于 PayPal 而言,Go 开发与 GKE 的结合使公司能够轻松扩展以满足需求,因为 Kubernetes 自动扩展将允许 PayPal 处理对服务的增加的用户需求,在最重要的时刻保持可用性,然后在空闲时段缩减规模以节省资金。

让你的企业开始使用 Go

PayPal 的故事并非独一无二;几十家其他大型企业正在发现 Go 如何帮助他们更快地交付可靠的软件。全球有超过一百万开发人员使用 Go,他们遍布银行和商业、游戏和媒体、技术和其他行业,在像 美国运通美客多、Capital One、Dropbox、IBM、Monzo、纽约时报、Salesforce、Square、Target、Twitch、Uber 以及谷歌这样的多元化企业中。

要详细了解 Go 如何帮助你的企业像 PayPal 一样构建可靠、可扩展的软件,请立即访问 go.dev

PayPal PayPal

关于 PayPal

Go 在生成随着软件部署规模而轻松扩展的简洁高效代码方面的价值,使该语言非常适合支持 PayPal 的目标。