基础设施事业群如何推动 Roblox 未来的发展
-
我们的基础设施事业群负责设计、构建和运营支持全球 Roblox 平台的底层存储、计算、网络、安全以及工程效率系统。
-
这些系统大规模运行——支持 7770 万*日活跃用户、数十亿字节的内容交付以及超过 2.5 亿的并发连接数,全部通过超过 135000 台服务器完成。
-
该事业群所做的一切都是为了最大限度地提高我们系统的可靠性和效率,并帮助我们的工程师尽可能提高工作效率。
在 Roblox,产品工程师可以在全天任意时刻使用运行在我们全球内部云基础设施上的超过 2000 项服务。 我们的平台支持数百万次读写,处理数万亿字节的吞吐量,并处理数千万次 HTTP 请求。 当我们的 7770 万*日活跃用户访问 Roblox 时,他们会通过超过 2.5 亿个并发连接进行访问。
所有这些都是 Roblox 技术系统涵盖的范围,也是我们基础设施事业群的领域。 名为 Infra 的团队负责设计、构建和运营存储、计算、网络、安全和工程效率系统,以及我们的数据中心。 Infra 的目标是提供可扩展、稳定且易于使用的系统。 最重要的是,该事业群特别重视以下三个关键指标:
-
可用性——我们系统的可靠性
-
服务成本——我们系统的效率
-
生产力——他们如何提高 Roblox 工程师在基础设施上的生产力
正如 Infra 事业群的负责人——工程副总裁 Max Ross 所说,“我们所做的一切都是为了优化可用性、服务成本和生产力这三个方面的其中一个或几个组合。”
每天解决新问题
当超过一百万用户在大型更新后涌入热门的 Roblox 体验时,这种现象被称为惊群效应,我们的创造者大可放心。 因为 Infra 的工作就是确保 Roblox 产品工程师能够构建一个为我们的用户提供最佳、最稳定体验的平台。 这也就意味着 Infra 团队每天都要应对复杂的系统并解决新的问题。
为什么? 因为我们没有将数千万日活跃用户连接到一个集中的交易处理位置,这是一个众所周知的问题。 相反,我们在全球范围内实时地将它们连接起来。 总而言之,Infra 的数千项服务都是在两个核心数据中心、全球众多边缘数据中心和一些公共云提供商的 135000 多台服务器上运行的。
可用性——我们系统的可靠性
我们业务成功的一个主要因素是用户在 Roblox 上花费的时间,我们知道可靠的基础设施与用户停留时间的长短之间存在直接的联系。
我们希望每月的用户上线时间达到 99.99%,这意味着我们的系统中断时间不能超过 0.01%。 我们的产品工程师希望我们的内部云基础设施至少能够与任何公共云一样高效运行。 技术总监 Danny Yuan 表示,“我们的基础设施应当尽可能顺畅地运行,这样其他工程师才能打造出让用户满意的产品。”
我们实现这一目标的方式之一,就是将可观测性和网络连接更紧密地与推动 Roblox 体验的应用程序结合在一起。 我们正在将 Envoy 代理侧车部署到每个服务实例旁,并使用 eBPF 来监测代理与外部服务之间连接的底层状态。 这有助于我们了解,特别是减少数据包丢失,技术总监 Rob Cameron 解释道。
万圣节故障
Infra 可靠性工作的许多努力都源于我们在 2021 年经历的那次持续 73 小时的连锁故障事件。 几年前的这一刻最终成为我们构建弹性基础设施的转折点,并让我们意识到了需要做出短期和长期的规划。 “那是一个‘一切被迫中止’的时刻,”Ross 说,“在我们能向 Roblox 上的所有用户保证类似事件永远不会再次发生之前,唯一应该思考的就是这个问题。”
从 Infra 巨型单体架构转变为 34 个单元
服务成本(效率)
如今,科技公司很少构建自己的云基础设施,因为公共云提供商可以提供网络、机群管理等基本工具。
但鉴于我们所具备的规模和分散性,维护私有云对我们来说更具成本效益。 我们始终在不断发现并克服维护此类复杂系统所带来的挑战。
为了确保获得我们期望的降本目标,我们必须在系统设计方面深思熟虑。 我们的全球私有云需要密切关注效率,以便我们可以投入更多资源来支持我们的创作者和用户社区。
我们致力于让产品工程师能够轻松构建能够大规模高效运行的功能。 与此同时,我们正在开发简化的生产工具,使得小团队也能操作大规模的基础设施。 “Infra 以外的人可能并不总能意识到,”技术总监 Michael Wolf 表示,“我们正在彻底改造基础设施的几乎每个部分。”
这意味着我们正在从裸机配置发展到基于 Linux 的容器化架构,并在核心数据中心和边缘数据中心之间实现一个统一的控制平面。 因此,Roblox 的工程师将能够利用大量新的开源软件工具库, 同时更轻松地在同一台机器上并行运行多个工作负载。
“我们不怕面对重大挑战,”技术总监 Andy Wilcox 说,他提到 Infra 最近过渡到了新的遥测、计算和部署堆栈。 “这些都是我们作为一个工程组织能够攻克的基础性问题,我们也有信心直面挑战。”
但这不是一夜之间就能解决的问题。 这将需要耗费数年的时间,因为我们不能简单地重启 Roblox——我们的机器必须保持正常运行。 这就需要手动重写软件并适应新工具。 Wolf 说道,“这就像在高速公路上行驶时更换汽车轮胎一样。”
生产力
我们的工程团队每天都会高效地解决大规模的重大问题,并尽可能地充分利用我们的系统。
为此,我们定期收集有关工程师生产力的定量和定性数据。 这有助于识别可以通过第三方解决方案或我们自己定制的工具改进的瓶颈。
比如我们在三月份发布的控制面板,用于解决工程师在代码审查过程中遇到的痛点问题。 该工具可帮助工程师根据我们定义的众多标准跟踪需要审核的 PR。 它还整合了代码审查任务并允许安排通知。 自从广泛采用该控制面板以来,我们的 P75 PR 合并时间缩短了 30%。
当然,最重要的工程生产力特性是提供稳定且可扩展的基础设施作为构建基础,因此我们始终在底层系统上进行长期投资。
这凸显了 Roblox 的两个核心价值观:着眼长远和务实执行。 作为以客户为中心的基础设施事业群,我们注重以务实的方式帮助客户取得更大的成功和提升生产力。 如果客户需要我们目前尚未提供的托管服务,我们会考虑将供应商解决方案与我们的内部工具集成到我们的私有云中。
虽然短期的“维持运转”解决方案往往很具有诱惑力,但它们必须与前瞻性的工程实践保持相对的平衡。
其回报在于,最大化生产力不仅有利于公司,还能帮助我们完成项目,达成业务目标。
鼓励探索的文化
当我们致力于让十亿人享受文明和安全时,总是会面临重大的技术挑战。 我们已经解决了很多问题,也学到了很多东西。 但在努力降低系统复杂性的同时,我们也着眼于打造扩展性更高的基础设施。
这两个相互对立的目标将在未来几年带来无数的新课题,特别是随着我们处理越来越多的 AI 工作负载。 我们确信,实现我们的目标意味着 Infra 的系统需要随着时间的推移而进行重大改进。
对于 Infra 工程师来说,每个项目都是公司转型的潜在契机,每个人的工作都至关重要。 Wolf 说道:“Infra 是一个人们可以做出对 Roblox 和我们的用户真正重要贡献的组织,在这里,挑战从不设限。”
以客户为中心的思维模式
最终,我们的工作是帮助其他 Roblox 工程师在现在和将来更高效地工作,快速吸取教训并从中得出解决方案。
我们正面临这一挑战。 Ross 表示:“我希望确保我们今天、这个季度和今年都能为 Roblox 提供价值。 我还希望确保我们建立的基础能让我们在未来五到十年里处于一个优势地位。”
* 截止至 2023 年 3 月 31 日的 3 个月