基礎結構團隊如何帶動所有 Roblox 事務的未來發展
-
我們的基礎結構團隊會設計、建立並營運基礎儲存、運算、網路、安全和工程生產力系統,為全球 Roblox 平台提供動能。
-
這些系統會大規模運作,在超過 135,000 個伺服器上,支援 7,700 萬*個每日活躍使用者、數 EB 的傳送內容,和 2 億 5,000 萬以上的並行連線。
-
這個團隊的所有工作都是為了盡量提升系統的穩定度和效率,並協助我們的工程師發揮最大生產力。
每一天、每一秒,Roblox 的產品工程師可能會使用超過 2,000 個在我們全球內部雲端基礎結構上運作的服務。 我們的平台可支援數百萬次讀取和寫入、處理數 TB 的生產量,並應付數千萬個 HTTP 請求。 當我們的 7,700 萬*個每日活躍使用者前來 Roblox 時,他們會藉由 2 億 5,000 萬個並行連線來達成上述動作。
這些都涵蓋在 Roblox 的技術系統規模中,也是基礎結構團隊的業務範圍。 他們又稱為 Infra,專門設計、建立並營運本公司的儲存、運算、網路、安全、工程生產力系統,以及我們的資料中心。 Infra 的目標是提供可擴展、值得信賴,且簡單易用的系統。 在所有業務之中,該團隊將三個關鍵指標視為第一要務:
-
可用性:系統的穩定度
-
服務成本:系統的效率
-
生產力:在基礎結構上建置的 Roblox 工程師能藉此獲得多少生產效率
身為 Infra 團隊的負責人,工程副總裁 Max Ross 表示:「我們所做的每件事都是為了重點改善或部分加強這三個指標:可用性、服務成本和生產力。」
每日解決全新問題
若有上百萬名使用者在重大更新後加入了熱門的 Roblox 體驗,也就是所謂的「驚群」現象,我們的創作者可以放心應對。 這是因為,Infra 的工作就是確保 Roblox 產品工程師建置出優質的平台,為我們的使用者提供最出色和最穩定的體驗。 要達成這個目標,代表 Infra 團隊每天都需要處理複雜的系統並解決全新的問題。
為什麼要這麼做? 因為我們不是將數千萬個 DAU 連結到集中式的交易處理位置,這會產生廣為人知的問題。 相反地,我們會在全球即時將它們彼此連結。 總體來說,Infra 的數千個服務在 135,000 個伺服器上執行,廣泛位於兩個核心資料中心、全球無數個邊緣資料中心,以及部分公開雲端擁有者之中。
可用性:系統的穩定度
影響我們業務成功的一個重大因素,就是使用者在 Roblox 上花費的時間,而我們知道,穩定的基礎結構與使用者停留的時間有著直接的關係。
我們希望每個月都能達成 99.99% 的使用者上線時間,這代表我們的系統在互動過程內的中斷時間不能超過 0.01%。 我們的產品工程師也希望我們的內部雲端基礎結構能順暢運作,至少與其他公開雲端擁有相同的效能。 技術總監 Danny Yuan 表示:「我們的基礎結構應盡可能順暢運作,以便讓其他工程師打造出能滿足使用者的產品。」
我們達成這件事的方法之一,就是讓推動 Roblox 體驗的應用程式獲得更多可觀察性與網路連線能力。 我們在每個服務執行個體旁都部署了附屬 Envoy 代理伺服器,並嘗試使用 eBPF 來觀察代理伺服器和外部服務之間的連結基礎狀態。 「這有助於我們理解丟包,甚至減少丟包。」技術總監 Rob Cameron 解釋。
萬聖節中斷
Infra 的穩定性有很大一部分源於我們在 2021 年學到的經驗,當時我們經歷了長達 73 小時的嚴重中斷。 數年前的那個時刻成為了決定性的關鍵,讓我們打造出穩定的基礎結構,並確立了短期和長期規劃需求。 「那是一個需要『立即停下手邊工作』的時刻。」Ross 表示:「我們只能專心解決這件事,直到我們可以向 Roblox 上的所有人保證這種事絕對不會再發生。」
從單體式結構到 34 個微處理器
服務成本(效率)
現在的技術公司較少建立自己的雲端基礎結構,因為公共雲端供應者會提供各種基本工具,像是網路和機群管理等等。
但基於我們的規模和非集中化性質,繼續使用私人雲端會更具成本效益。 自行維護這種複雜的系統會面臨許多挑戰,而我們也不斷地找出並克服這些困難。
為了確保我們能達到目標成本效益,我們必須仔細考慮系統設計。 我們需要密切注意全域私人雲端的效率,才能對創作者和使用者社群投入更多支持。
我們致力協助產品工程師輕鬆建立可有效大規模運作的功能。 與此同時,我們也正在開發簡化的產品工具,方便小型團隊營運大規模基礎結構。 「非 Infra 團隊的人可能不會意識到,我們正在大幅翻新基礎結構的幾乎每個部分。」技術總監 Michael Wolf 表示。
這代表系統從裸機配置演變成了 Linux 式的容器化架構,且無論是核心還是邊緣資料中心都具有相同的控制平面。 如此一來,Roblox 工程師就能夠運用龐大的新儲存庫,取得各種開源軟體工具。 在相同的機器上並行執行多個工作負載也會變得更簡單。
技術總監 Andy Wilcox 談到 Infra 最近轉移至新的遙測、運算和部署堆疊,他表示:「對於艱難的挑戰,我們無所畏懼。 身為樂於解決問題的工程組織,這些是我們能夠處理的基本事務。」
這不是一朝一夕可以達成的, 而是需要花費許多年,因為我們不能直接把 Roblox 重新開機,我們的機器必須保持運作。 我們需要藉由手動程序來重新撰寫軟體並適應新工具。 Wolf 表示:「這就像一邊行駛在高速公路上,一邊更換汽車輪胎。」
生產力
每一天,我們的工程團隊都會以良好效率來大規模處理巨大的問題,並盡量發揮系統的效能。
為了達成這件事,我們會定期收集工程師生產力的定量和定性資料。 這有助於找出瓶頸,並藉由第三方解決方案或我們自己定制的工具來加以改善。
舉例來說,我們在 3 月發布了一個儀表板來處理程式碼審核程序中的工程師痛點。 這個工具有助於工程師追蹤 PR,以便根據我們定義的各種指標進行審核。 它也會將程式碼審核工作統一化,並提供排程通知。 自從此儀表板被廣泛採用之後,我們的 P75 PR 至合併時間減少了 30%。
當然,最強大的工程生產功能就是穩定且可擴展的基礎結構,因此我們也持續為我們的低層級系統進行長期投資。
這反映出了兩個 Roblox 核心價值:保持遠見和具體實踐。 身為一個以客戶為中心的基礎結構團隊,我們講求以務實的方式,讓我們的客戶更成功且更具生產力。 如果他們需要某項服務,但我們並未以受管服務的形式提供,我們可以考慮將我們私人雲端中的內部工具與廠商解決方案互相整合。
不過,即使短期內「保持基本營運」的解決方案經常是個很吸引人的選擇,這些方案也必須與前瞻性工程互相平衡。
這些付出獲得了回報。最大化生產力能為公司帶來益處,也讓我們順利完成專案並達成業務目標。
鼓勵探索的文化
由於我們的目標是藉由禮節和安全性連結數十億人,因此總是會有重大技術挑戰需要處理。 我們已解決了許多問題,也學到了許多經驗, 但我們期望打造出更有擴展性的基礎結構,同時降低系統複雜度。
這些對立的目標會在往後數年內帶來無數新課題,特別是當我們處理與日俱增的 AI 工作負載的時候。 我們非常清楚,若要達成目標,代表 Infra 的系統需要隨著時間大幅演進。
對 Infra 工程師而言,每個專案都有轉變公司的潛力,且每個人的工作都很重要。 「人們能在 Infra 這個組織完成偉大的工作,為 Roblox 和我們的使用者帶來重要貢獻。」Wolf 表示:「在這裡,沒有什麼事物會受到限制。」
以客戶為中心的思維
歸根結柢,我們的工作就是在當下和未來協助其他 Roblox 工程師提高效率,還需要快速學習教訓,並提供衍生解決方案。
我們迎頭面對這些挑戰。 「我想要確保我們能為 Roblox 提供價值,無論是在這一天、這一季還是這一年。」Ross 表示。 「我也想要確保我們所奠定的基礎,讓我們在未來 5 到 10 年間都會有良好的發展。」
* 2023 年 3 月 31 日截止的 3 個月