#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 で類似の発表を行っています。