RaiderIO、Momento で数百万人の World of Warcraft プレイヤー向けランキングを無理なく運用

RaiderIO は数十億のスコア、数百万のランキング、最新情報を通じて WoW のコミュニティ体験を支えています。Momento がその運用をどのように簡単にしているかを紹介します。

Pratik Agarwal Pratik Agarwal Jah Raphael Jah Raphael
淡い緑の背景に並ぶ Momento と Raider.IO のロゴ
Raider.IO のロゴ。

20 年以上にわたり、数百万人の World of Warcraft プレイヤーがダンジョンに挑み、レイドを攻略し、より強力な戦利品を追い求めてきました。しかし、レイドが終わっても競争は続きます。ランキングは一つひとつの実績と成長の足跡を記録し、プレイヤーが自分の実力を比較できるようにします。2017 年に設立された RaiderIO は、World of Warcraft プレイヤーの間で広く知られる存在になりました。

RaiderIO の中心にあるのがランキングです。ゲーム内のさまざまなチャレンジについて、数百万のキャラクターと数億回のダンジョン攻略を追跡しています。プレイヤーは同じクラスや専門分野をはじめ、多様な切り口で他のプレイヤーと自分を比較できます。

これほど多くのプレイヤーが利用するランキングで、速度、信頼性、正確性を維持するのは簡単ではありません。数百万のクエリを余裕をもって処理できるインフラが必要です。

プレイヤーが信頼できる、高速で安定したランキング

RaiderIO チームは、サービスの応答性と可用性が数百万人のゲーム体験を左右することを理解しています。Dungeon Finder でグループを編成しながらプロフィールを確認するときも、新しいレイドボスを倒して順位を確認するときも、プレイヤーは迅速かつ正確な更新を期待します。年間を通じて途切れのない体験を提供することが最優先です。

RaiderIO のランキングは当初 Redis 上で動作し、強力なソート済みセットのデータ構造を使って高速かつ効率的なクエリを実現していました。この構成は高い性能を発揮していましたが、ランキングの規模が拡大すると、取り込むデータの膨大さからクラスター管理の運用が複雑になっていきました。

WoW の膨大なデータを無理なくスケール

WoW の新シーズンが始まるたびに、プレイヤーが最新コンテンツに挑み、新しいデータが急増します。約 10 年分の過去のランキングも合わせると、RaiderIO が維持する必要のあるランキングデータは数 TB に達します。

これは大きな容量管理の課題になります。Redis をスケールさせるには、需要に追従してサービスを安定させるため、継続的な監視、プロビジョニング、保守が必要です。

手動で運用するインフラが拡大するにつれ、継続的な保守や過大な費用を伴わずに速度と信頼性を維持できる、より良い解決策が必要であることが明らかになりました。

そこで登場したのが Momento です。

Momento チームと協力することで、RaiderIO はコスト、性能、保守性のバランスが取れた解決策を見つけました。速度や信頼性を犠牲にすることなく、手動のクラスター管理に伴う負担を解消できたのです。

ランキングの速度を維持しながらデータ取り込みを最適化

RaiderIO は Blizzard の API や RaiderIO Desktop App から直接ストリーミングされるゲームデータなど、複数のソースから World of Warcraft のデータを取り込みます。ランキング、キャラクタープロフィール、ギルドプロフィールを最新に保つには、このデータをリアルタイムで処理して更新する必要があります。

シーズン中には、スコア計算アルゴリズムの変更に伴う順位の再計算のため、ランキングデータを大規模に再投入することがあります。その際は Redis のソート済みセットへの大量の挿入が必要です。しかし Redis はシングルスレッドであるため、データセットが大きくなるほど処理負荷が高まり、挿入時間の増加、キューの滞留、読み取りと書き込みの競合につながります。ランキングが拡大し、プレイヤーの活動が急増すると、こうした課題はさらに顕著になります。

Momento が RaiderIO のランキングを強化した方法

この規模のランキングを管理するには、高速なクエリだけでは足りません。RaiderIO は、予測できない急増を処理し、動的にスケールし、費用対効果も維持できるインフラを必要としていました。Momento への移行により、チームはインフラの保守から新機能の開発へと注力できるようになり、プレイヤーに常に高速で信頼できる体験を提供しています。移行中は二重書き込みと二重読み取りによる検証を行い、データの整合性を確保しました。Momento の運用エンジニアは全工程に深く関わり、移行の一環として既存インフラの性能上のボトルネックの緩和も支援しました。しかし、本当の効果が表れたのは日々の運用です。定期的な保守に頭を悩ませる状態から、無理なく管理できる状態へと変わりました。

自動スケーリングとシームレスなルーティング

Momento は、インテリジェントなコントロールプレーンとシームレスなゲートウェイ機能を組み合わせています。コントロールプレーンは負荷とスケールを先回りして管理し、インスタンスの適正化、サーバー負荷の再分散、異常ノードの自動復旧を通じて、WoW の新シーズンやランキング更新による需要の変動に対応します。これを補完するゲートウェイ層は、数百万の同時クライアント接続に対するシャード検出とファンアウトを効率的に処理し、保守作業中も高い可用性を提供します。さらに、認証、アクセス制御、複数の転送プロトコルへの対応といった重要機能も統合し、RaiderIO チームの介入を必要とせずに運用の複雑さを軽減します。

高可用性を支える耐障害設計

重要なイベントの際、RaiderIO のトラフィックは 10 倍以上に跳ね上がります。そのため Momento のような下流サービスには、低レイテンシの読み取りを提供しながら急増を吸収する能力が必要です。Momento は RaiderIO のデータを複製し、耐障害性と上流サービスの高い可用性を維持します。ストレージサーバーの背後には、重要なイベント中もレプリカを最新に保ちながら、ピーク時の書き込みスループットと低い読み取りレイテンシを実現する多くの仕組みがあります。インメモリバッファの適切な設定、Momento のプロトコルによる効率的なデータストリーミング、システム設定の調整は、すべて裏側で行われます。トラフィックの変化に合わせて容量を追加し、再分散するコントロールプレーンも重要な役割を担います。

まとめ

ランキングの容量管理、ルーティング、取り込み性能に伴う複雑さを Momento に任せることで、RaiderIO チームは最も重要な仕事、つまり革新的な新機能の開発と、数百万人の World of Warcraft プレイヤーへのより良い体験の提供に集中できます。Momento がインフラを担うことで、RaiderIO はコミュニティへの参加とランキングの革新をさらに進められます。WoW プレイヤーは、成長の一歩一歩を追跡できる信頼性の高いツールを使い、包括的で安定した体験を得られます。

あわせて読みたい