本文永久链接 – https://tonybai.com/2025/07/24/go-at-american-express-today

大家好,我是Tony Bai。

自 2016 年底将 Go 语言引入其技术栈以来,成立于1850年的美国运通(American Express)公司已在多个核心平台验证了其在性能、效率和可伸缩性方面的承诺。Go官方也在主页上将运通公司对Go的使用作为典型案例

近日,其工程团队发布了一篇回顾性文章,系统性地总结了近10年 Go 语言企业级应用的七大关键经验。本文将和大家一起解读这些来自金融科技巨头的宝贵洞察,涵盖从 Go Modules 的演进、并发模型的挑战,到构建“黄金框架”以及培育千人内部社区的最佳实践。

Go 在美国运通的今天:七大关键洞察

从最初的选择到如今成为性能关键平台的核心语言,美国运通的 Go 语言之旅并非一帆风顺。他们分享的七个关键学习点,为所有正在或计划在企业环境中使用 Go 的团队提供了极具价值的参考。

1. 依赖管理:Go Modules 的胜利

在 Go Modules 出现之前,企业内部防火墙和代理网络下的依赖管理是一个巨大的痛点。美国运通坦言,早期的依赖管理机制在企业环境中“极具挑战性”。Go Modules 的引入彻底改变了这一局面,使得版本控制和依赖管理变得“远为直接”,并促进了主流企业级开发工具对 Go 的广泛支持。

2. 并发模型:易于上手,难于精通

Go 标志性的 goroutine 是其核心吸引力之一,但在生产环境中正确使用它并非没有“令人头疼”的问题。团队发现,虽然创建 goroutine 非常简单,但清理和跨 goroutine 的协调是最初面临的主要挑战。

为了应对这些挑战,他们沉淀出了一套强大的并发模式:
* 核心工具:广泛拥抱 sync 和 context 标准库包。
* 泄漏防治:强制使用 defer 语句来确保资源清理,避免 goroutine 泄漏。
* 早期检测:在所有测试中默认开启数据竞争检测器 (-race),将并发问题扼杀在摇篮中。

3. 培训与规范:打造惯用的 Go 文化

尽管 Go 语言以简单著称,但让整个团队写出“惯用(Idiomatic)”的 Go 代码仍需投入。美国运通为此建立了内部培训项目和文档体系,确保工程师从第一天起就能遵循最佳实践。

4. “黄金框架”:标准化的“铺就之路”

随着 Go 的采用规模扩大,标准化的需求日益凸显。为了统一和优化服务构建,美国运通创建了一个内部的“黄金框架”(Golden Framework),也被称为“铺就之路”(Paved Road)。

这个框架为开发者内置了所有非功能性需求的支持,包括:
* 可观测性(Observability)
* 异步健康检查
* 优雅停机(Graceful Shutdown)
* 安全规范

5. 内部工具包:封装与定制

“黄金框架”建立在一个名为“越野工具包”(Off-Roading toolkit)的基础之上。这是一个内部 Go 包的集合,其核心作用是封装和定制开源库,以适应美国运通独特的内部基础设施。

一个绝佳的例子是他们的日志包。它封装了标准库的结构化日志 slog,为其增加了对内部日志格式的支持,并实现了带有缓冲和截断策略的异步日志功能。这既利用了社区的优秀成果,又满足了企业的特殊需求。

6. 原生工具链:性能优化的基石

美国运通强调,Go 的原生工具链是其能够持续交付高性能服务的关键。
* 性能剖析:pprof 和基准测试(go test -bench)极大地简化了性能分析过程。
* 运行时优势:低延迟的 GC 停顿和高效的 goroutine 调度,完美契合了其低延迟、高规模的支付平台需求。
* 资源效率:Go 高效的资源利用率帮助他们显著降低了基础设施的开销。

7. 社区建设:创新的驱动力

最宝贵的成果之一,是在公司内部形成了一个强大的 Go 社区。
* 规模:近 1,000 名工程师在内部的 Go 频道中积极协作。
* 活动:通过每月的 meetup、内部会议来分享知识。
* 共同资产:“黄金框架”和工具包的持续演进,本身就是社区协作的产物。

这种由同行驱动的文化,被认为是提炼最佳实践和推动创新的核心要素。

小结

美国运通的经验再次证明,Go 语言不仅仅是一门“小而美”的语言,它完全有能力在要求严苛的金融科技领域作为核心技术栈,支撑起大规模、高性能的关键业务。

他们的故事为我们揭示了一个成功的技术采纳路径:从解决基础的依赖管理问题,到攻克并发编程的深水区;从建立培训体系,到打造标准化的“黄金框架”;最终通过培育一个充满活力的内部社区,实现技术的自我演进和持续创新。

对于所有 Go 开发者和技术领导者而言,这七大经验教训不仅是关于如何“使用”Go,更是关于如何在一个大型组织中,围绕一门语言构建一个可持续发展的、高效的工程文化

资料链接:https://www.americanexpress.io/go-at-american-express-today/


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2025, bigwhite. 版权所有.

Related posts:

  1. GoCN社区Go读书会第二期:《Go语言精进之路》
  2. Go语言回顾:从Go 1.0到Go 1.13
  3. Go早期的那些布道者
  4. Go 的“无聊”超能力:为什么“选项更少”反而让你更快?
  5. Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第二部分)