Go 與其他程式語言不同之處在於認知負荷(cognitive load)。你能以更少的程式碼完成更多工作,這讓你更容易推理與理解你所寫出的程式碼。
絕大多數的 Go 程式碼寫起來都十分相似,因此,即便你是在處理一個全新的程式碼庫,也能夠很快上手並開始工作。
Go 改善了微服務並提升了生產力
美國運通成立於 1850 年,是一家全球綜合支付公司,提供簽帳卡與信用卡產品、特約商店收單與處理服務、網路服務以及旅遊相關服務。
美國運通的支付處理系統在漫長的發展歷史中歷經多次架構演進。在任何更新中,支付處理的首要考量必須是速度——特別是在交易量非常龐大的情況下,同時還必須在所有系統中建立彈性,以符合安全與法規標準。透過 Go,美國運通獲得了其支付與獎勵網路所需的處理速度與擴展性。
現代化美國運通系統
美國運通理解程式語言的版圖正在發生劇烈變化。該公司現有的系統是專為高併發與低延遲而建,但由於預見到這些系統在不久的將來將會進行平台重構,支付平台團隊決定花時間找出最適合美國運通不斷演進需求的語言。
美國運通的支付與獎勵平台團隊是最早開始評估 Go 的團隊之一。這些團隊專注於微服務、交易路由與負載平衡等使用案例,並且需要進行架構現代化。許多美國運通的開發人員熟悉該語言的功能,並希望為他們的高併發與低延遲應用程式(例如自訂的交易負載平衡器)試用 Go。抱持著這個目標,團隊開始向高層遊說,希望能在美國運通的支付平台上部署 Go。
「我們希望能找到一種最適合編寫快速且高效的支付處理應用程式的語言,」美國運通副總裁兼首席工程師 Benjamin Cane 說道。「為此,我們發起了一場內部程式語言對決,目標是找出最符合我們設計與效能需求的語言。」
語言比較
在評估過程中,Cane 的團隊選擇用四種不同的程式語言構建一個微服務。接著,他們針對速度/效能、工具、測試以及開發便利性對這四種語言進行了比較。
針對該服務,他們決定製作一個 ISO8583 轉 JSON 的轉換器。ISO8583 是金融交易的國際標準,廣泛用於美國運通的支付網路中。在程式語言方面,他們選擇比較 C++、Go、Java 與 Node.js。除了 Go 之外,這些語言皆已在美國運通內部使用。
從速度角度來看,Go 的效能表現位居第二,達到每秒 14 萬次請求。這顯示 Go 在用於後端微服務時表現優異。
雖然 Go 可能不是測試中最快的語言,但其強大的工具鏈幫助提升了整體結果。Go 內建的測試框架、效能分析能力以及基準測試工具令團隊印象深刻。「在 Go 中編寫有效的測試非常容易,」Cane 說。「基準測試與效能分析功能讓我們能輕鬆調校應用程式。再加上快速的建置時間,Go 讓編寫經過充分測試且優化的程式碼變得簡單。」
最終,團隊選擇 Go 作為構建高效能微服務的首選語言。工具鏈、測試框架、效能以及語言的簡潔性都是關鍵因素。
用於基礎設施的 Go
「我們許多服務都運行在基於 Kubernetes 的內部雲端平台內的 Docker 容器中,」Cane 說。Kubernetes 是一個用 Go 編寫的開源容器編排系統。它提供主機叢集來運行基於容器的工作負載,其中最著名的是 Docker 容器。Docker 是一種同樣用 Go 編寫的軟體產品,它利用作業系統層級的虛擬化來提供稱為容器的可移植軟體運行環境。
美國運通也透過 Prometheus 收集應用程式指標,這是一個用 Go 編寫的開源監控與警報工具組。Prometheus 會收集並聚合即時事件與指標,用於監控與發送警報。
這套 Go 解決方案的三巨頭——Kubernetes、Docker 與 Prometheus——幫助美國運通完成了基礎設施的現代化。
利用 Go 提升效能
如今,美國運通有大量的開發人員正在使用 Go 進行程式設計,其中大多數人致力於設計高可用性與高效能的平台。
「工具鏈一直是我們舊有程式碼庫中極需改善的領域,」Cane 說。「我們發現 Go 擁有出色的工具鏈,加上內建的測試、基準測試與效能分析框架,編寫高效且具彈性的應用程式變得非常容易。」
「
在使用過 Go 之後,我們大多數的開發人員都不想再換回其他語言了。
美國運通才剛剛開始感受到 Go 的好處。例如,Go 從設計之初就考慮到了併發性——使用輕量級的「goroutines」而非較沉重的作業系統執行緒——這使得在同一個位址空間內建立數十萬個 goroutines 變得切實可行。透過使用 goroutines,美國運通在其即時交易處理中看到了效能指標的提升。
Go 的記憶體回收(Garbage Collection)機制在效能與開發便利性方面,也比其他語言有顯著改進。「我們發現 Go 的記憶體回收結果遠優於其他語言,而記憶體回收對於即時交易處理來說至關重要,」Cane 表示。「在其他語言中調校記憶體回收可能非常複雜。使用 Go,你幾乎什麼都不用調。」
欲了解更多資訊,請閱讀 「美國運通選擇 Go」(Choosing Go at American Express),其中更深入探討了美國運通對 Go 的採用。
協助您的企業開始使用 Go
正如美國運通正利用 Go 將其支付與獎勵網路現代化一樣,其他數十家大型企業也在採用 Go。
全球有超過一百萬名開發人員正在使用 Go,領域涵蓋銀行與商務、遊戲與媒體、科技及其他產業,服務於諸如 PayPal、Mercado Libre、Capital One、Dropbox、IBM、Monzo、紐約時報 (New York Times)、Salesforce、Square、Target、Twitch、Uber,以及 Google 等多元化的企業。
若想進一步了解 Go 如何能像在美國運通一樣,協助您的企業構建可靠且具擴展性的軟體,請立即造訪 go.dev。
關於美國運通
Go 為美國運通的支付與獎勵網路提供了所需的處理速度與擴展性。