【レポート】GAM307 – Ubisoft事例: For HonorでのAmazon ECSの使い方 #reinvent #GAM307

はじめに

本記事はAWS re:Invent 2017のセッション「GAM307 - Ubisoft: How For Honor Runs Using Amazon ECS」のレポートです。

登壇者は以下のお二人。

  • Ralf Mueller - Online Technical Architect, Ubisoft
  • Louis-Michel Gélinas - DevOps Team Lead, Ubisoft

レポート

Ubisoft

今年20週年。モテリオールの会社。
新作ゲームタイトル、For Honor
 オープンβでは6ビリオンのユーザーが参加。

Fail fast! Succeed consistently!

ゲーム開発においては失敗することもある。
失敗したらロールバックして成功の道を探す。
最初から成功の道を歩めることは少ない。

For Honorのプロダクション環境

ECSはFront-endとBackendの両方で作成。
戦場はS3からCloudFrontで配信。

初期サービスの開発

アプリケーションはPlayにて開発。
Couchbaseにデータを保管。
AWS Elastic Beanstalkにてデプロイ。

デッドエンド

Playはフィットしなかった。
Elastic Beanstalkの管理が大変。
Couchbaseもフィットしなかった。

道筋の検討

1年半後にはゲームのリリース日。
2つのミッションクリティカルではないサービス。
 派閥闘争。
 プレイヤー情報のリッチ化。
ImmutableなDocker imageで開発したい。
開発環境はミニマムに。
プロダクション環境はスケールアウト可能に。

開発の変更

インフラの基盤はCloudFormationテンプレート化。
ECSタスクやサービス管理はPythonにて開発。
aws-cliにて人間がエミュレート。
発生する問題。
 CloudFormationでは微調整をトラッキングできない。
 Pythonスクリプトではオーケストレーションが大変。

ラストマイル

Datadogでもモニタリング及びアラート発砲。
Logやメトリクスをビジュアライズ。
KPIをトラッキング。

TrailからAuto banまで

ECSでFront-endとBackendのオートスケーリンググループを立ち上げ。
ECSのbootシーケンス。
 aws-cliをインストール。
 OpsWorksにインスタンスを登録。
 ECSエージェントをセットアップ。
ユーザー受け入れテスト環境とプロダクション環境はノットイコール。
 ユーザー受け入れテスト環境はミニマムでシンプル。
Security Updateの対応はSNSとLambdaを組み合わせて実施。
 AWS Compute Blogを参考に。

CloudFormation stackの管理

Gitでテンプレート管理。
GitlabのCI jobをトリガーで実施。
ECSのサービスとタスクをCloudFormation stackにて作成。
 Pythonコードをテンプレートに変換。

ユーザー受け入れ環境との接続

ユーザー受け入れ環境に必要なオンプレミス環境はインターネットに接続されていない。
VPNトンネルにてAWS環境と接続。

学んだこと

全てのマニュアル操作はリスク。
全てのを検証する。CloudFormationはその役に立つ。
サービスコンテナの管理は大変。
Lambdaはダクトテープのように使える、沢山の機能を安く実装可能。
マネージドサービス最高。

さいごに

ECSはかなり熟れてきたと思いますが、それでもサービスコンテナの管理には苦労されているようです。今後のアップデートにも期待ですね。