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——遍及銀行和商業、遊戲和媒體、技術以及其他行業,在像PayPal、Mercado Libre、Capital One、Dropbox、IBM、Mercado Libre、Monzo、紐約時報、Salesforce、Square、Target、Twitch、Uber 以及當然還有 Google 等多元化的企業中。
要了解 Go 如何幫助您的企業構建可靠、可擴充套件的軟體,就像它在美國運通所做的那樣,請立即訪問go.dev。
關於美國運通
Go 為美國運通的支付和獎勵網路提供了所需的速度和可擴充套件性。