PayPal 採用 Go 語言實現現代化和規模化

PayPal
Quotation mark.

由於我們的 NoSQL 和資料庫代理在多執行緒模式下使用了大量的系統細節,程式碼變得複雜,需要管理不同的條件。鑑於 Go 提供了通道和協程來處理複雜性,我們能夠構建程式碼以滿足我們的要求。

— Bala Natarajan, PayPal 工程高階總監, 開發者體驗

基於 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 gopher factory

使用 Go 現代化 PayPal 系統

憑藉 PayPal 所需的分散式計算能力,Go 是更新其系統的正確語言。PayPal 需要併發和並行、為高效能編譯且高度可移植的程式設計,併為開發人員帶來模組化、可組合的開源架構的優勢——Go 提供了所有這些以及更多,以幫助 PayPal 現代化其系統。

安全性和可支援性是 PayPal 的關鍵問題,公司的運營管道越來越受 Go 的主導,因為該語言的簡潔性和模組化有助於他們實現這些目標。PayPal 對 Go 的部署為開發人員創造了一個創造力的平臺,使他們能夠為 PayPal 的全球市場大規模生產簡單、高效和可靠的軟體。

隨著 PayPal 繼續使用 Go 現代化其軟體定義網路 (SDN) 基礎設施,他們不僅看到了效能優勢,還看到了更易於維護的程式碼。例如,Go 現在為路由器、負載均衡器以及越來越多的生產系統提供支援。

在我們嚴格管理的環境中執行 Go 程式碼,我們發現 CPU 降低了大約 10%,程式碼更簡潔且可維護。

— Bala Natarajan, 工程高階總監

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 PayPal

關於 PayPal

Go 語言在生成簡潔、高效且易於隨軟體部署擴充套件的程式碼方面的價值,使其非常適合支援 PayPal 的目標。