由于我们的 NoSQL 和数据库代理在多线程模式下使用了大量的系统细节,代码变得复杂,需要管理不同的条件。鉴于 Go 提供了通道和协程来处理复杂性,我们能够构建代码以满足我们的要求。
基于 Go 构建的新代码基础设施
PayPal 的创立旨在实现金融服务的民主化,并赋能个人和企业加入全球经济并蓬勃发展。PayPal 的支付平台是这项工作的核心,该平台结合了专有技术和第三方技术,以高效安全地促成全球数百万商家和消费者之间的交易。随着支付平台变得越来越庞大和复杂,PayPal 寻求使其系统现代化并缩短新应用程序的上市时间。
Go 语言在生成简洁、高效且易于随软件部署扩展的代码方面的价值,使其非常适合支持 PayPal 的目标。
支付处理平台的核心是 PayPal 使用 C++ 开发的专有 NoSQL 数据库。然而,代码的复杂性大大降低了其开发人员发展平台的能力。Go 简洁的代码布局、goroutines(轻量级执行线程)和通道(充当连接并发 goroutines 的管道)使 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 现代化 PayPal 系统
凭借 PayPal 所需的分布式计算能力,Go 是更新其系统的正确语言。PayPal 需要并发和并行、为高性能编译且高度可移植的编程,并为开发人员带来模块化、可组合的开源架构的优势——Go 提供了所有这些以及更多,以帮助 PayPal 现代化其系统。
安全性和可支持性是 PayPal 的关键问题,公司的运营管道越来越受 Go 的主导,因为该语言的简洁性和模块化有助于他们实现这些目标。PayPal 对 Go 的部署为开发人员创造了一个创造力的平台,使他们能够为 PayPal 的全球市场大规模生产简单、高效和可靠的软件。
随着 PayPal 继续使用 Go 现代化其软件定义网络 (SDN) 基础设施,他们不仅看到了性能优势,还看到了更易于维护的代码。例如,Go 现在为路由器、负载均衡器以及越来越多的生产系统提供支持。
“
在我们严格管理的环境中运行 Go 代码,我们发现 CPU 降低了大约 10%,代码更简洁且可维护。
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 如何帮助他们更快地发布可靠的软件。全球有超过一百万的开发人员使用 Go——涵盖银行和商务、游戏和媒体、技术以及其他行业,在像 美国运通、Mercado Libre、Capital One、Dropbox、IBM、Monzo、纽约时报、Salesforce、Square、Target、Twitch、Uber 以及当然还有 Google 这样多样化的企业中。
要了解 Go 如何像在 PayPal 一样帮助您的企业构建可靠、可扩展的软件,请立即访问 go.dev。
关于 PayPal
Go 语言在生成简洁、高效且易于随软件部署扩展的代码方面的价值,使其非常适合支持 PayPal 的目标。