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

Core Data

Google 的使命是“整合全球資訊,供大眾使用”。負責整合這些資訊的一支團隊就是 Google 的核心資料解決方案團隊。該團隊負責維護全球網頁索引服務等工作。這些網頁索引服務透過保持搜尋結果的最新和全面來支援 Google 搜尋等產品,而它們就是用 Go 編寫的。

2015 年,為了跟上 Google 的發展規模,我們的團隊需要將用 C++ 編寫的單個單體二進位制檔案重寫為微服務架構中的多個元件。我們決定用 Go 重寫許多索引服務,現在我們已將其用於支撐我們架構的大部分。

Go 內建的併發性非常適合,因為團隊中的工程師被鼓勵使用併發和並行演算法。

— Minjae Hwang軟體工程師

在選擇一門語言時,我們的團隊發現 Go 的多項特性使其特別適用。例如,Go 內建的併發性非常適合,因為團隊中的工程師被鼓勵使用併發和並行演算法。工程師們還發現“Go 程式碼更自然”,使他們能夠花時間專注於業務邏輯和分析,而不是管理記憶體和最佳化效能。

用 Go 編寫程式碼要簡單得多,因為它有助於減輕開發過程中的認知負擔。例如,在使用 C++ 時,複雜的 IDE 可能會“顯示原始碼沒有編譯錯誤,但實際上卻有”,而 MinJae Hwang,核心資料解決方案團隊的軟體工程師說:“在 Go 中,當 IDE 說程式碼沒有編譯錯誤時,程式碼總是能夠編譯透過”。透過消除開發過程中的小摩擦點,例如縮短修復編譯錯誤的週期,幫助我們的團隊在最初重寫時能夠更快地釋出,並有助於將我們的維護成本保持在較低水平。

Hwang 還分享道:“當我在 C++ 中想要使用更多包時,我必須編寫像標頭檔案這樣的東西。當我用 Go 編寫時,**內建工具讓我能夠更輕鬆地使用包。我的開發速度快了很多。**”

憑藉簡單的語言語法和 Go 工具的支援,我們團隊的幾名成員發現用 Go 編寫程式碼更容易了。我們還發現 Go 在靜態型別檢查方面做得非常好,並且像 godoc 命令這樣的某些 Go 基礎知識,幫助團隊圍繞編寫文件建立了更有紀律的文化。

……Google 的網頁索引在一年內就重新設計了。更令人印象深刻的是,團隊中的大多數開發人員在學習 Go 的同時也在用 Go 進行重寫。

— Prasanna Meda軟體工程師

負責一個被全世界如此廣泛使用的產品並非易事,我們團隊使用 Go 的決定也並非易事,但這樣做幫助我們更快地行動。因此,Google 的網頁索引在一年內就重新設計了。更令人印象深刻的是,團隊中的大多數開發人員在學習 Go 的同時也在用 Go 進行重寫。

除了核心資料解決方案團隊,Google 的其他工程團隊也已在開發過程中採用了 Go。閱讀關於 ChromeFirebase Hosting 團隊如何使用 Go 來構建快速、可靠、高效且可擴充套件的軟體。

Core Data Core Data

關於核心資料

Google 是一家技術公司,其使命是整合全球資訊,供大眾使用。

在本案例研究中,Google 的核心資料解決方案團隊分享了他們與 Go 的旅程,包括他們用 Go 重寫網頁索引服務的決定,利用 Go 內建的併發性,以及觀察 Go 如何幫助改進開發過程。