【レポート】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はかなり熟れてきたと思いますが、それでもサービスコンテナの管理には苦労されているようです。今後のアップデートにも期待ですね。