Firebase Hosting 團隊為 Google Cloud 客戶提供靜態網頁寄存服務。他們提供一個靜態網頁主機,位於全球內容傳遞網路之後,並提供使用者容易使用的工具。該團隊還開發了從上傳網站檔案到註冊網域到追蹤使用情況等各種功能。

在加入 Google 之前,Firebase Hosting 的技術堆疊是用 Node.js 編寫的。當團隊需要與其他多個 Google 服務進行互操作時,他們開始使用 Go。他們決定使用 Go 來幫助他們輕鬆有效地擴充,因為他們知道「並行處理將持續成為一個重大需求」。團隊中的軟體工程師 Michael Bleigh 表示:「我們確信 Go 的效能會更好」,而且「喜歡 Go 比我們考慮的其他語言更簡潔」。

從一個用 Go 編寫的小型服務開始,該團隊在幾次遷移中將其整個後端遷移。該團隊逐步找出他們想要實作的大型功能,並在此過程中將其改寫為 Go,並移至 Google Cloud 和 Google 的內部叢集管理系統。現在,Firebase Hosting 團隊已將 100% 的後端 Node.js 程式碼替換為 Go。

該團隊使用 Go 編寫的經驗始於一位工程師。Bleigh 說:「透過點對點學習,以及 Go 通常容易入門,現在團隊中的每個人都有 Go 開發經驗。」他們發現,雖然大多數新加入團隊的人都沒有 Go 經驗,但「他們大多數人在幾週內就能發揮生產力」。

Bleigh 代表團隊表示:「使用 Go,很容易看出程式碼是如何組織的,以及程式碼的作用。」「Go 通常非常易讀且易於理解。由於語言中的慣用語,該語言的錯誤處理、接收器和介面都易於理解。」

隨著團隊擴展,並行處理持續成為團隊的重點。軟體工程師 Robert Rossney 分享:「Go 讓你可以輕易地將所有困難的並行處理事項集中在一個地方,其他地方則抽象化。」Rossney 也談到使用以並行處理為考量所建構的語言的好處,並表示:「Go 中也有許多執行並行處理的方法。我們必須學習何時採用哪種路線最合適、如何判斷問題是否為並行處理問題、如何除錯,但這些都是因為你實際上可以在 Go 程式碼中撰寫這些模式而產生的。」

「一般來說,團隊中沒有人對 Go 感到沮喪,它只是默默地運作,讓你專心工作。」

— Robert Rossney軟體工程師

數十萬的客戶使用 Firebase Hosting 來託管他們的網站,這表示 Go 程式碼用於每天處理數十億個要求。「自從轉移到 Go 之後,我們的客戶群和流量已經成長好幾倍,但從未需要進行微調最佳化」Bleigh 分享。透過 Go,團隊在軟體和團隊中都看到效能的提升,並獲得極佳的生產力提升。「一般來說」Rossney 提及,「…團隊中沒有人對 Go 感到沮喪,它只是默默地運作,讓你專心工作。」

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

Firebase Firebase

關於 Firebase

Firebase 是 Google 的行動平台,可協助你快速開發高品質的應用程式並擴展你的事業。

Firebase Hosting 團隊分享了他們使用 Go 的歷程,包括從 Node.js 進行後端遷移、讓新進的 Go 開發人員輕鬆上手,以及 Go 如何協助他們擴展。