このページの本文へ

「AWS Summit Japan 2026」レポート 第3回

リージョンを使い分ける運用から「DynamoDB」設計のポイントまで

Nintendo Switch 2の新体験「ゲームチャット」の実装 低遅延とコスト効率の両立に挑むバックエンドの工夫とは

2026年06月29日 11時30分更新

文● 福澤陽介/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

低遅延とコスト最適化を両立する「選択的リージョン」

 バックエンドサーバー内で、マルチリージョンと単一リージョンで切り分けて運用しているのはなぜか。

 まず、WebRTC SFUによるクライアントとサーバー間の通信は、遅延が増大するとリアルタイム性を損ない、ユーザー体験の悪化につながる。だからこそSFUサーバーは、低遅延通信を追求すべくマルチリージョン運用を採用した。ただ同時に、開発・運用コストが増加してしまう。

SFUサーバーをマルチリージョン運用する理由

 そこで、グループサーバーやSFUインスタンスマネージャーは、単一リージョンで集中管理することで、インフラコストや運用負荷を可能な限り抑えている。
「多くのビジネスロジックを抱え、変更頻度の多いグループサーバーのリリース作業をシンプルにするという狙いもある」(高橋氏)

低遅延とコスト最適化を両立する選択的リージョン運用

 ただ、この選択的リージョン運用の採用に伴い、4つの対応が必要となった。

 1つ目が、SFUサーバーの「ディスカバリー」だ。クライアントはゲームチャットの開始時に、グループサーバーに対して、接続先のSFUサーバーインスタンスを事前問い合わせする。その際グループサーバーは、接続先が少なく、負荷の小さいインスタンスを選定しなければならない。

 この選定に必要な、全リージョン分のSFUサーバーインスタンスをDynamoDBのテーブル上で管理するために、SFUインスタンスマネージャーを独自実装した。「マネージャーによって、インスタンスの増減やユーザー接続数、負荷状況が随時更新され、グループサーバーがそれを参照する。レイテンシー最適かつ低負荷状態のインスタンスを選び出す仕組み」と高橋氏。

 また、グループサーバーでは「既にあるリストの参照」というシンプルな判定ロジックにとどめ、マネージャーに情報の取得を任せる設計にすることで、高速なレスポンスも担保している。

SFUサーバーのディスカバリー

 2つ目は、クロスリージョンでの「認証・状態同期処理」だ。

 クライアントがWebRTC接続する際には、接続先のインスタンスやチャットのグループ所属のチェックなど、各種認証処理が必要になる。加えて、DynamoDBに対して、WebRTC接続上で発生する入室、退出などのイベント情報を逐一同期している。こうしたグループサーバーへの認証・状態同期を、リージョンをまたいで処理しなければならない。

 この連携処理には、SFUサーバーの「ウェブフック機能」を利用した。同機能は、WebRTC接続上の各種イベントの発生を契機に外部サーバーへのHTTP POST通信を実行するものだ。今回は、新規接続時に認証要求する「認証ウェブフック」、各種状態変化時に送受信する「イベントウェブフック」を実装している。

 さらに、ウェブフックの種別ごとの負荷分散も行っており、同期的でユーザー体験に影響する認証ウェブフックと非同期が許容されるイベントウェブフックで通信経路を分離した。イベントウェブフックに対しては「Amazon API Gateway」「Amazon SQS」を経由し、さらにDB書き込みを行うECSサービス自体も分離させ、認証処理側の負荷を軽減させている。

ウェブフックによるサーバー間連携

 3つ目は、「トレーサビリティ」だ。ここまでのディスカバリーやウェブフックでリージョン横断のサーバー間通信を頻繁に行うため、開発や運用、障害対応時など、あらゆる場面でトレーサビリティが必要になる。

 このトレーサビリティには、「AWS X-Ray」を採用。トレースIDは、グループサーバーはGoで実装されているため「AWS Distro for OpenTelemetry(ADOT)SDK」を利用し、SFUサーバーは、Envoy Proxyで起点となる通信発生時に発番している。

 このIDをサーバー間やAWSサービス間で引き回しながら、「OpenTelemetry Collector」をサイドカーとして動作させ、トレース情報をAWS X-Ray上に収集している。

AWS X-Rayによるトレーサビリティ

 最後はIaCだ。ゲームチャットのサーバーチームは、効率的な運用のためにIaC管理をしており、ツールには「Terraform」を利用している。

 特に、複数インフラリソースを統合管理する「Terraform Module」機能が役立っており、SFUサーバーのマルチリージョンのリソース群をまとめてモジュール化。これにより、急なリージョンの増減に迫られても、コンフィグ定義の書き換えだけで、即座に対応できる。

TerraformによるIaC

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
  • 角川アスキー総合研究所