Google 的核心資料解決方案團隊如何使用 Go

Core Data

Google 的使命是「整理全球資訊,並讓資訊普遍易於取得且有用」。負責整理這些資訊的團隊之一是 Google 的核心資料解決方案團隊。該團隊負責維護全球網頁索引服務等服務。這些網路索引服務透過保持搜尋結果更新且全面,協助支援 Google 搜尋等產品,而且這些服務都是以 Go 編寫的。

2015 年,為了跟上 Google 的規模,我們的團隊需要將我們的索引堆疊從以 C++ 編寫的單一巨型二進制檔改寫為微服務架構中的多個元件。我們決定以 Go 改寫許多索引服務,而我們現在使用這些服務來強化我們的架構。

「Go 的內建並行處理很自然,因為團隊中的工程師會受到鼓勵使用並行處理和平行演算法。」

— Minjae Hwang軟體工程師

在選擇語言時,我們的團隊發現 Go 的幾個功能使其特別適合。例如,Go 的內建並行處理很自然,因為團隊中的工程師會受到鼓勵使用並行處理和平行演算法。工程師也發現「Go 程式碼更自然」,讓他們可以專注於業務邏輯和分析,而不是管理記憶體和最佳化效能。

使用 Go 編寫程式碼簡單許多,因為它有助於在開發過程中減輕認知負擔。例如,在使用 C++ 時,精密的 IDE 可能會「顯示原始碼沒有編譯錯誤,但實際上是有錯誤的」,而「在 Go 中,[程式碼] 會在 [IDE] 顯示程式碼沒有編譯錯誤時,永遠編譯」,核心資料解決方案團隊的軟體工程師 MinJae Hwang 表示。在開發過程中減少小摩擦點,例如縮短修正編譯錯誤的循環,有助於我們的團隊在最初的改寫過程中更快地出貨,並有助於降低我們的維護成本。

「當我在 C++ 中,且想要使用更多套件時,我必須撰寫標頭等部分。當我在 Go 中撰寫時,內建工具讓我能更輕鬆地使用套件。我的開發速度快上許多,」黃先生也分享。

我們的團隊有幾位成員發現,有了 Go 工具的支援,以及簡潔的語言語法,撰寫 Go 程式碼變得容易許多。我們也發現 Go 在靜態型別檢查方面做得非常好,而且某些 Go 基本原則,例如 godoc 指令,已協助團隊建立更嚴謹的撰寫文件文化。

「…Google 的網路索引在一年內重新建構。更令人印象深刻的是,團隊中的大多數開發人員在改寫 Go 時,也同時學習 Go。」

— Prasanna Meda軟體工程師

開發一款在全球廣泛使用的產品並非小事,而我們的團隊決定使用 Go 也並非易事,但這麼做確實幫助我們加快進度。因此,Google 的網路索引在一年內重新建構。更令人印象深刻的是,團隊中的大多數開發人員在改寫 Go 時,也同時學習 Go。

除了核心資料解決方案團隊之外,Google 各地的工程團隊已在開發流程中採用 Go。閱讀 ChromeFirebase Hosting 團隊如何使用 Go 來建置快速、可靠且有效率的大規模軟體。

Core Data Core Data

關於核心資料

Google 是一家科技公司,其使命是整理全球資訊,並讓這些資訊普遍且有用。

在此個案研究中,Google 的核心資料解決方案團隊分享他們使用 Go 的歷程,包括他們決定改用 Go 重新撰寫網路索引服務,利用 Go 的內建並行處理,以及觀察 Go 如何協助改善開發流程。