インフラグループがRobloxの未来を作る

  • Robloxにはインフラ整備を担当するグループがいて、ストレージ、コンピューティング、ネットワーク、セキュリティといったシステムの基礎を設計・管理したり、プラットフォーム全体を支える生産性システムを開発しています。

  • このようなインフラが支えているのは一日あたり7770万人*のアクティブユーザー、エクサバイト級のコンテンツ量、2億5000万以上の同時接続数であり、サーバー数は13万5000台を超えます。

  • システムの信頼性と効率、さらにはエンジニアの生産性を最大化するのがインフラグループの仕事です。

Robloxのインフラは内部クラウドに存在し、常に2000以上のサービスが実行されています。製品エンジニアはいつでもそれを活用できるのです。 プラットフォームは何百万回もの読み書き、テラバイト級の処理、何千万回ものHTTPリクエストに対応しなければなりません。 一日あたり7770万人*のアクティブユーザーが2億5000万以上の同時接続数を形成するのです。

これがRobloxのシステム規模であり、インフラグループの出番となります。 ストレージ、コンピューティング、ネットワーク、セキュリティ、生産性システム、データセンターを設計し管理する彼らは、通称インフラ組と呼ばれています。 インフラ組の目標は、拡張性・信頼性に優れた使いやすいシステムを提供すること。 さらに、以下の3つの指標が重視されています。

  • 安定性—システムの確実な供給

  • 効率性—システムの高い効率

  • 生産性—インフラの上で作業するエンジニアたちの生産性を高めること

インフラグループを率い、エンジニアリング統括責任者でもあるマックス・ロスは「我々の仕事はすべて、安定性、効率性、生産性を高めるためにある」と語っています。

毎日新しい問題を解決

人気のバーチャル空間に大型アップデート後、ユーザーが殺到した場合に不安になるのは一斉アクセスの負荷ですが、ご安心ください。 Robloxの製品エンジニアが高品質で安定したユーザー体験を提供する基盤をインフラチームが作っているからです。 インフラチームは複雑なシステムに取り組み、新たな問題に日々対処しているということです。

どうしてですか? 単一の場所で大量のトランザクションを処理させると負荷の原因になります。 代わりに場所を分散させ、ユーザー同士をリアルタイムで接続させるアプローチをとりました。 基盤となるサービスは13万5000台以上のサーバーで稼働しています。一部クラウドサービスの手も借りていますが、2箇所のメイン・データセンターに加え、世界中に無数のデータセンターが設置されています。

安定性—システムの確実な供給

ユーザーの滞在時間の長さはRobloxの成功の主な要因です。インフラが安定しているほどユーザーは長時間滞在できるようになります。

月の99.99%はユーザーが活動できる時間であるべきです。つまり、アクセス不能な時間は0.01%以下でなければなりません。 製品エンジニアも内部クラウドが機能し続けることを期待します。最低でも他のクラウドサービスと同程度の水準が求められます。 テクニカルディレクターのダニー・ユアンはこのように語ります。「インフラは可能な限りスムーズに稼働するべきです。他のエンジニアが製品を開発し、ユーザーを楽しませるために」

そのための一つの方法が、Robloxのバーチャル空間を支えるアプリケーションと近い形のチェック体制とネットワーク通信性能を実現することでした。 あらゆるサービスインスタンスにEnvoy proxyを付属させ、プロキシと外部サービス間の通信状況を監視するためにeBPFを実験的に導入したのです。 テクニカルディレクターのロブ・キャメロンによれば、パケットドロップ問題の対処に役立ったとのことです。

ハロウィン問題

2021年、Robloxのサービスがダウンし、復旧には73時間を要しました。インフラ整備にはこの時の反省が活かされています。 数年前のこの事件を機に、安定したインフラを築くことが不可欠だと悟りました。短期的・長期的なプランが必要だと気付いたのです。 「立ち止まらされる瞬間だった」とロスは語っています。「ひたすらそのことに目を向けていた。ユーザーの皆さんに、このような問題は二度と起こらないと約束できるようになるまでは」

一枚岩のインフラから34個へ分割

効率性

今日ではテック企業が独自のクラウド環境を構築することは少なくなりました。ネットワークやリソース管理など、必要な道具はクラウドサービスが提供してくれます。

大規模で分散志向なRobloxの場合、プライベートなクラウドを運用する方が効率的でした。 複雑なシステムを運用することになりましたが、常に問題を見定めて対処してきました。

コストを浮かせるには慎重にシステムを設計する必要があります。 独自のクラウドを世界中に保有することになっても、コストの問題には注意を払いました。資金をクリエーターやユーザーの皆さんに投資する方に回したいからです。

製品エンジニアが大規模な環境でも効率的に動作する機能を開発しやすいようにしつつ、 大規模なインフラを少人数のチームで管理できるよう、洗練された制作ツールも生み出しています。 「外部の人は気付いてないかもしれないけど、ほとんどのインフラは僕たちの手で徹底的に改修されているんだ」とテクニカルディレクターのマイケル・ウルフは語っています。

仮想化されていない物理サーバーから、データセンターを一元的に管理可能なLinuxベースのコンテナ化されたアーキテクチャに移行したことはその一例です。 この結果、Robloxのエンジニアは最新のオープンソースソフトウェアを大量に活用できるようになりました。 同じマシンで複数の作業を並行して処理することも容易になります。

テクニカルディレクターのアンディ・ウィルコックスによれば、「大きな問題にも恐れずに挑んでいるんだ」とのことです。インフラチームは遠隔測定、コンピューティング、デプロイスタックの改装も行っています。 「こういうのは基礎となるものだから、エンジニアの集まりとして積極的に取り組まないといけない」

決して一夜にして可能なことではありません。 何年もかかることもあります。Robloxを再起動することはできないからです。マシンは常に稼働し続けているので、 ソフトウェアを書き直し、新しいツールに適用する地道な作業が必要になります。 「高速道路を走りながら、タイヤを交換するみたいなものだよ」とウルフは語っています。

生産性

エンジニアチームは日々、システムの力を可能な限り活用しながら、大規模な問題に効率よく取り組んでいます。

ここで必要になるのが、エンジニアの生産性に関する量的・質的なデータを定期的に集めることです。 ボトルネックを特定し、独自のツールやサードパーティー的な解決で改善を図るためです。

例えば、3月にリリースされたダッシュボード機能はエンジニアのコードレビューの負担を軽減するためのものでした。 プルリクエスト(コードの変更提案)があった場合、様々な指標に基づくレビューが必要になります。ダッシュボードによってエンジニアはリクエストを把握しやすくなります。 コードレビューの作業は一元化され、スケジュール通知も可能です。 ダッシュボードが各所で採用された結果、75%のリクエストでマージにかかる時間が30%削減されました。

もちろん、何よりも生産性をもたらすのは大規模で安定したインフラですから、基盤となるシステムには長期的にリソースを注いでいます。

ここにはRobloxのモットーである「長期的な視点を持つ」「物事を成し遂げる」が反映されています。 インフラグループは顧客を第一に考えています。顧客の成功と生産性のために実践的なスタンスをとっています。 マネージドサービスとして提供されていないものが必要になった場合、外部のソリューションを独自クラウド内の内部ツールに統合することも考えられます。

現状維持的なソリューションは短期的には魅力的ですが、将来のことを考えたエンジニアリングとのバランスをとらなければいけません。

生産性を最大化できれば会社のためになり、プロジェクトを達成して事業目標をクリアできるのですから。

冒険を歓迎する文化

世界中の人々に安全とマナーあるつながりをもたらす過程には、多くの技術的な課題が待ち受けています。 これまでにいくつもの困難を乗り越え学びを得てきました。 しかし私たちの目は、さらに拡張性のあるインフラに向けられています。システムの複雑さを軽減する必要もあります。

困難な目標ですが、これからまた新たな学びをもたらしてくれるでしょう。最近ではAIに関する処理も増えています。 目標を達成するためには、基盤システムが進化を続けないといけないということです。

インフラグループのエンジニアにとって、あらゆるプロジェクトは会社の転換点となり得ます。各人の仕事が重要となるのです。 「インフラグループの仕事はRobloxにとって、ユーザーたちにとって重要なんだ。僕たちに限界はない」とウルフは語っています。

顧客主義のマインドセット

究極の目的はRobloxのエンジニアをより生産的にすることです。素早く学び、そこから解決を生み出すことが求められています。

この挑戦は今も続いています。 「いつでもRobloxに価値を提供したいんだ」とロスは語ります。 「そして、5年後も10年後も使える基盤を作っていきたい」

* 2023年3月31日までの3ヶ月間