#Fortniteの同時接続イベントを支える技術 #reinvent

はじめに

re:invent Monday Night Live での Epic Game(Fortniteの作成元) のエンジニア Chris Dyl の発表です。

Fortinite について

  • 無料オンラインゲーム
  • 2億人以上のプレイヤー
  • ピーク時で 830 万人の同時プレイヤー

インフラについて

  • 非常に多彩なAWSサービスを利用
  • 過去12ヶ月で100倍に拡大
  • スケーラビリティーが重要
  • 26の AZ
  • ハイピーク時はローピーク時の10倍のワークロード
  • 弾力性が重要

極端なスパイクの発生するロケットイベント

  • 数分だけの同時接続イベント(rocket)を開催
  • 2500万人のプレイヤーが同時にプレイ
  • 過去に、同規模のゲームはないはず
  • 最近もこの手のイベントを開催した。
  • どうやってこのイベントを乗り切ったのか紹介

ロケットイベントの統計データ

  • データ取り込み
    • 1.25 億イベント/分
    • 790億イベント/日
    • 61GB/分
    • Kinesis Streamのシャード数 : 5000
  • データウェアハウス
    • データ容量 35 PB 以上
    • データ増加 : 5PB/月
  • クラスター
    • 8000 以上の ETL ジョブ
    • 本番だけで 22 の EMR クラスター
    • 4000 以上のアナリティックス用EC2インスタンス

これほどのデータをどうやってあつかったのか

Lambda アーキテクチャーのように、リアルタイム系とバッチ系で別れている

  • 複数のデータソースが Kinesis Data Streams に送信
  • リアルタイム系
    • Spark で Kinesis からデータを受け取り、DynamoDB に一時的に保存
    • Grafana・スコアボード APIで利用
    • アドホックなリアルタイム SQL も実行
  • バッチ系
    • データレイクとして S3 を利用
    • EMR で ETL を実行
    • 加工データニシタして、Tableau のようなBIツール、SQL から利用

データをどのように活用しているのか

  • クライアント・サーバーのモニタリング。クライアントのパフォーマンスはUXの点で非常に重要
  • ゲームのトーナメントデータの管理
  • ビジネス上のKPI
  • ゲーム分析。より深くゲームのデザインを分析することで、ゲームをより良くできる

さらなる改善

  • グローバルなレジリエント。多くのサービスは 1AZで動いている。よりステーブルにしたい
  • k8s(Amazon EKS) を活用してマイクロサービス群を効率よく管理
  • サービスを攻撃するユーザーに対する防御
  • ソーシャル分析や不正行為ツールにGraphQLを利用

最後に

Fortnite の同時接続イベントを支える AWS 技術が駆け足で紹介されました。

2018年の AWS Summit New York で類似の発表を行っています。