美国运通使用 Go 处理支付和奖励

American Express
Quotation mark.

Go 与其他编程语言的不同之处在于其认知负荷。你可以用更少的代码完成更多工作,这使得你编写的代码更容易推理和理解。

大多数 Go 代码最终看起来都非常相似,所以,即使你正在处理一个全新的代码库,你也能很快上手。

— 格伦·巴利特 ,  美国运通忠诚度平台工程总监

Go 提升微服务并加速生产力

美国运通成立于 1850 年,是一家全球整合的支付公司,提供签账卡和信用卡产品、商家收单和处理服务、网络服务以及旅行相关服务。

美国运通的支付处理系统在其悠久的历史中不断发展,并经过多次架构演进。在任何更新中,支付处理都必须快速,尤其是在交易量非常大的情况下,并且需要在必须符合安全和监管标准的所有系统之间构建弹性。借助 Go,美国运通获得了其支付和奖励网络所需的速度和可扩展性。

美国运通系统现代化

美国运通深知编程语言格局正在发生巨大变化。该公司的现有系统专为高并发和低延迟而构建,但他们知道这些系统将在不久的将来进行平台重构。支付平台团队决定花时间确定哪些语言最适合美国运通不断变化的需求。

美国运通的支付和奖励平台团队是第一批开始评估 Go 的团队之一。这些团队专注于微服务、交易路由和负载均衡用例,他们需要使自己的架构现代化。许多美国运通开发人员熟悉 Go 的功能,并希望试用 Go 来处理他们的高并发和低延迟应用程序(例如自定义事务负载均衡器)。考虑到这一目标,团队开始游说高层领导,将 Go 部署到美国运通支付平台。

“我们希望找到编写用于支付处理的快速高效应用程序的最佳语言,”美国运通副总裁兼首席工程师本杰明·凯恩说。“为此,我们启动了一场内部编程语言对决,目标是看看哪种语言最符合我们的设计和性能需求。”

比较语言

为了进行评估,凯恩的团队选择用四种不同的编程语言构建一个微服务。然后,他们比较了这四种语言的速度/性能、工具、测试和开发便利性。

对于该服务,他们决定选择 ISO8583 到 JSON 的转换器。ISO8583 是金融交易的国际标准,在美国运通的支付网络中普遍使用。对于编程语言,他们选择比较 C++、Go、Java 和 Node.js。除了 Go 之外,所有这些语言都已在美国运通内部使用。

从速度角度来看,Go 取得了第二好的性能,达到每秒 140,000 个请求。Go 表明它在用于后端微服务时表现出色。

虽然 Go 可能不是测试中最快的语言,但其强大的工具帮助其巩固了整体结果。Go 的内置测试框架、分析功能和基准测试工具给团队留下了深刻印象。“用 Go 编写有效的测试很容易,”凯恩说。“基准测试和分析功能使我们能够轻松调整应用程序。再加上其快速的构建时间,Go 使编写经过充分测试和优化的代码变得容易。”

最终,Go 被团队选为构建高性能微服务的首选语言。工具、测试框架、性能和语言简洁性都是关键因素。

Go 用于基础设施

“我们的许多服务都在基于 Kubernetes 的内部云平台中的 Docker 容器中运行,”凯恩说。Kubernetes 是一个用 Go 编写的开源容器编排系统。它提供主机集群来运行基于容器的工作负载,最著名的是 Docker 容器。Docker 是一款同样用 Go 编写的软件产品,它使用操作系统级别的虚拟化来提供称为容器的便携式软件运行时。

美国运通还通过 Prometheus 收集应用程序指标,Prometheus 是一个用 Go 编写的开源监控和警报工具包。Prometheus 收集和聚合实时事件和指标以进行监控和警报。

Go 解决方案的这三驾马车——Kubernetes、Docker 和 Prometheus——帮助美国运通的基础设施实现了现代化。

使用 Go 提高性能

如今,美国运通有数十名开发人员使用 Go 编程,其中大多数人在为高可用性和性能设计的平台上工作。

“工具一直是我们传统代码库的关键需求领域,”凯恩说。“我们发现 Go 拥有出色的工具,以及内置的测试、基准测试和分析框架。编写高效且有弹性的应用程序很容易。”

在 Go 上工作后,我们大多数开发人员都不想再回到其他语言了。

— 本杰明·凯恩 ,  美国运通副总裁兼首席工程师

美国运通才刚刚开始看到 Go 的好处。例如,Go 从一开始就考虑到并发性而设计——使用轻量级的“goroutines”而不是更重的操作系统线程——这使得在同一地址空间中创建数十万个 goroutines 成为可能。使用 goroutines,美国运通在其实时交易处理中看到了改进的性能数据。

Go 的垃圾回收在性能和开发便利性方面也比其他语言有了重大改进。“我们在 Go 中看到了比其他语言更好的垃圾回收结果,而实时交易处理的垃圾回收非常重要。”凯恩说。“调整其他语言的垃圾回收可能非常复杂。使用 Go,你无需调整任何东西。”

要了解更多信息,请阅读“美国运通选择 Go”,其中更深入地介绍了美国运通采用 Go 的情况。

让您的企业开始使用 Go

正如美国运通正在使用 Go 现代化其支付和奖励网络一样,数十家其他大型企业也在采用 Go。

全球有超过一百万名开发人员使用 Go——遍及银行和商业、游戏和媒体、技术以及其他行业,在像PayPalMercado Libre、Capital One、Dropbox、IBM、Mercado Libre、Monzo、纽约时报、Salesforce、Square、Target、Twitch、Uber 以及当然还有 Google 等多元化的企业中。

要了解 Go 如何帮助您的企业构建可靠、可扩展的软件,就像它在美国运通所做的那样,请立即访问go.dev

American Express American Express

关于美国运通

Go 为美国运通的支付和奖励网络提供了所需的速度和可扩展性。