PayPal 使用 Go 走向现代化和扩展

PayPal
Quotation mark.

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

— Bala Natarajan高级工程总监, 开发者体验  at PayPal

基于 Go 构建的新代码基础架构

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

Go 在生成可随软件部署扩展而轻松扩展的干净、高效代码方面的价值使该语言非常适合支持 PayPal 的目标.

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

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

使用 Go 简化规模

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

借助 Go,PayPal 使开发人员能够将更多时间从 C++ 和 Java 开发的噪音中解放出来,从而将更多时间用于查看代码和进行战略性思考.

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

Go gopher factory

使用 Go 对 PayPal 系统进行现代化改造

凭借 PayPal 所需的分布式计算能力,Go 是刷新其系统的正确语言。PayPal 需要并发和并行的编程,为高性能和高度可移植性而编译,并为开发人员带来模块化、可组合的开源架构的好处——Go 提供了所有这些以及更多的东西来帮助 PayPal 实现其系统的现代化.

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

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

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

— Bala Natarajan高级工程总监

Go 提高开发人员的生产力

作为全球运营,PayPal 需要其开发团队能够有效地管理两种规模:生产规模,尤其是与许多其他服务器(例如云服务)交互的并发系统;和开发规模,尤其是很多程序员协同开发的大型代码库(比如开源开发)

PayPal 利用 Go 解决这些规模问题。该公司的开发人员受益于 Go 将解释型、动态类型语言的编程简便性与静态类型、编译型语言的效率和安全性相结合的能力。随着 PayPal 对其系统进行现代化改造,对联网和多核计算的支持至关重要。Go 不仅提供这样的支持,而且提供迅速——在一台计算机上编译一个大型的可执行文件最多需要几秒钟.

目前 PayPal 有超过 100 名 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 如何帮助他们更快地发布可靠的软件。全球有超过 100 万的开发人员在使用 Go——跨越银行和商业、游戏和媒体、技术和其他行业,在 美国运通Mercado Libre、Capital One、Dropbox、IBM、Monzo、纽约时报、Salesforce 等众多企业中、Square、Target、Twitch、Uber,当然还有 Google.

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

PayPal PayPal

About PayPal

Go在生成干净,高效的代码方面的价值,这些代码很容易随着软件部署的规模而扩展,这使得该语言非常适合支持PayPal的目标.