Firebase Hosting 團隊如何使用 Go 進行擴充套件

Firebase

Firebase Hosting 團隊為 Google Cloud 客戶提供靜態 Web 託管服務。他們提供一個位於全球內容分發網路後面的靜態 Web 主機,併為使用者提供易於使用的工具。該團隊還開發從上傳站點檔案到註冊域名再到跟蹤使用情況的功能。

在加入 Google 之前,Firebase Hosting 的技術棧是用 Node.js 編寫的。當他們需要與多個其他 Google 服務進行互操作時,團隊開始使用 Go。他們決定使用 Go 來幫助他們輕鬆高效地進行擴充套件,並知道“併發將繼續是一個重要需求”。“他們確信 Go 的效能會更好,”並且“喜歡 Go 比他們正在考慮的其他語言更簡潔,”團隊的軟體工程師 Michael Bleigh 說。

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

團隊的 Go 編寫經驗始於一名工程師。“透過 P2P 學習和 Go 通常易於上手,團隊中的每個人現在都擁有 Go 開發經驗,”Bleigh 說。他們發現,雖然大多數新加入團隊的人都沒有 Go 經驗,“但他們中的大多數人在幾周內就能高效工作。”

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

隨著擴充套件,併發仍然是團隊的重點。軟體工程師 Robert Rossney 分享道,“Go 可以很容易地將所有複雜的併發問題集中在一個地方,而在其他地方則被抽象化了。”Rossney 還談到了使用為併發而設計的語言的好處,他說,“Go 中也有很多進行併發的方法。我們不得不學習何時使用每種方法最好,如何確定問題是否是併發問題,如何除錯——但這源於事實上你確實可以用 Go 程式碼編寫這些模式。”

總的來說,團隊中沒有哪個時候我們會對 Go 感到沮喪,它只是默默地工作,讓你能夠完成任務。

— Robert Rossney軟體工程師

成千上萬的客戶透過 Firebase Hosting 託管他們的網站,這意味著 Go 程式碼每天被用於處理數十億次請求。“自遷移到 Go 以來,我們的客戶群和流量已經翻倍了多次,而且從未需要進行微調最佳化,”Bleigh 分享道。藉助 Go,團隊在軟體和團隊方面都取得了效能改進,生產力也得到了顯著提升。“總的來說,”Rossney 提到,“……團隊中沒有哪個時候我們會對 Go 感到沮喪,它只是默默地工作,讓你能夠完成任務。”

除了 Firebase Hosting 團隊,Google 各地的工程團隊也已在其開發過程中採用了 Go。閱讀 Core Data SolutionsChrome 團隊如何使用 Go 來構建快速、可靠且高效的大規模軟體。

Firebase Firebase

關於 Firebase

Firebase 是 Google 的移動平臺,可幫助您快速開發高質量的應用程式並發展您的業務。

Firebase Hosting 團隊分享了他們使用 Go 的歷程,包括他們從 Node.js 遷移後端的經歷、新 Go 開發人員的易上手性以及 Go 如何幫助他們擴充套件。