BaaSでゲームサーバを作る話
1
この講演について
目次
この講演について
BaaSとは
BaaSの予算
BaaSの導入
GameSparksについて
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 2
この講演について
自己紹介
遠地 等一(とおち ともかず)
SQUARE ENIX
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 3
この講演について
目的
ゲームサーバをBaaSで作ることの紹介
得られるもの
BaaSについての理解
対象
サーバ/インフラエンジニア
プロジェクトマネジャー
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 4
この講演について
用語
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 5
IaaS BaaS
イアース。アイアース。
Infrastructure-as-a-Service
インフラを、インターネット
上のサービスとして遠隔から
利用できるようにしたもの。
バース。
Backend-as-a-Service
モバイルアプリサービスの運用
に必要な汎用的なサーバ機能を
提供するクラウドサービス。
BaaSとは
BaaSとは
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 6
BaaSとは
いつも同じものを作っていませんか?
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 7
BaaSとは
モバイルゲームに必要なサーバ機能はいつも似ている
新規ユーザ登録
セーブデータ管理
アセットデータダウンロード
アプリ内課金
フレンド・ギルド
ランキング
マルチプレイ
プッシュ通知
オートスケール
KPI集計・ログ解析
管理ツール
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 8
BaaSとは
いつも似たサーバ障害が
起きていませんか?
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 9
BaaSとは
モバイルゲームに起こるサーバ障害もいつも似ている
一時的な大量流入によるログインゲーム
CPU・メモリ不足
DBスペック不足
ディスク容量不足
マルチプレイ不全
課金トラブル
KPI取得ミス
監視漏れ
脆弱性・セキュリティ脅威
データ流出
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 10
BaaSとは
なぜ同じ機能の再発明や
似た障害の再現が起こるのか?
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 11
BaaSとは
IaaSは自分でやることや、不確定要素が多いため。
IaaS BaaS
インフラ設計 仕様によって変化 設計済み
サーバアプリ開発 担当者のスキルによる フレームワークあり
インフラ構築 担当者のスキルによる 必要なし
負荷テスト 担当者のスキルによる 限定的
セキュリティ対策 担当者のスキルによる 対策済み
インフラ保守 設計と負荷によって変化 必要なし
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 12
BaaSとは
BaaSはよく使う機能をフレームワークで提供
提供機能
ソフトウェア SaaS
Office 365
など
プログラム BaaS
スケールアウト PaaS
Google
App
Engine
Heroku
など
OS/ミドルウェア
スケールアップ IaaS
Amazon
Web
Services
など
ハードウェア ホスティング
ネットワーク ハウジング
よく使う機能を
フレームワーク化
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 13
BaaSとは
BaaSとは
既存の機能を利用して工数を圧縮
安定した品質のゲームサーバを構築
することが可能なサービス。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 14
BaaSとは
F2Pゲームでは、やることがいっぱいある
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 15
端末/プラットフォーム/ゲームエンジン/サーバ
ゲームデザイン/プレイサイクル/ソーシャル
手触り/テンポ/演出/世界観
集客/継続率/更新
マネタイズ/コミュニティ/IP収益・IP
運営
体験
メカニクス
基盤技術
工数の圧縮
品質の安定
BaaSとは
実際にあった例
とあるモバイルゲームが
世界各国で同時期にフィーチャーされた。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 16
BaaSとは
新規流入の様子
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 17
Made with Natural Earth. Free vector and raster map data @ naturalearthdata.com.
BaaSとは
新規流入の様子
ものすごい数の新規ユーザが来た。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 18
BaaSとは
まったく何もする必要がなかった。
BaaSは保守要らず。
開発者はゲームサーバの設計・チューニング・保守に
悩まされることなく、ゲーム開発に集中できる。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 19
BaaSの予算
BaaSの予算
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 20
BaaSの予算
料金体系の例
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 21
IaaS BaaS
スペック×時間ベース
オペレーション数ベース
サポート有償
MAUベース
オペレーション数ベース
サポート/アドオン有償
BaaSの予算
MAUベースの料金体系の場合、
ゲームBaaSの相場は1MAUあたり1~2円。
これは、安いか、高いか?
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 22
BaaSの予算
とっても安い!
アクティブなプレイヤー1人あたり、
平均して2円/月以上の利益が出れば、
最低限やっていける。
(ARPU ≥ 2.86円)
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 23
BaaSの予算
MAUベースの料金体系という考え方
企業でF2Pゲームを運営する場合、
通常は月単位の収支を指標にするので、
MAUベース料金だと予算を見積もりやすい。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 24
BaaSの予算
こんなゲームがあったとして
ARPU = 100円/月
固定費(運営費)= 1000万円/月
サーバ費用 = 2円/MAU
MAUが何人なら、単月黒字化できるか?
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 25
BaaSの予算
損益分岐点を計算
売上 = MAU ∙ ARPU
変動費 = 回収代行手数料 + サーバ費用
限界利益率 =
売上−変動費
売上
=
売上−(回収代行手数料+サーバ費用)
売上
=
MAU∙ARPU−(0.3∙MAU∙ARPU+2∙MAU)
MAU∙ARPU
= 0.7 −
2
ARPU
ARPU = 100円なので、
限界利益率 = 0.7 −
2
100
= 0.68
損益分岐点 =
固定費
限界利益率
=
1000万円
0.68
≒ 1470万円 ≒ 14.7万MAU
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 26
売上と変動費がMAUベースなので
シンプルな数式になる
BaaSの予算
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 27
限界利益率 = 0.7 −
2
ARPU
損益分岐点
1470万円
14.7万MAU
売上
貢献
利益
固定費
貢献利益
MAUが限界利益率に影響しない
つまり、単純に集客できれば
単月黒字化できる
BaaSの予算
損益分岐グラフから読み取れること
MAUが限界利益率に影響しない
単純に集客できれば単月黒字化できるため、
集客に集中できる。
限界利益率の高さ
ARPUが高ければ、
限界利益率 ≒ 0.7=1−手数料率
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 28
BaaSの導入
BaaSの導入
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 29
BaaSの導入
とあるモバイルゲームでBaaSを使ってみた
GameSparksとは
カジュアルゲーム分野においてリードする
バックエンドサービス。
アイルランドに本社。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 30
BaaSの導入
GameSparks提供資料からの抜粋
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 31
BaaSの導入
GameSparksのポータル(開発者画面)
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 32
BaaSの導入
GameSparksにおけるワークフロー
1. ポータルでGameSparksアカウントを作成
2. ゲームを作成
3. ゲームのAPIキー・シークレットキーをSDKに組み込み
4. プレビュー環境で開発
 スキーマレスなセーブデータDBが作成済み。
 既存のAPIを使うか、自分でイベントを定義し、クラウドコードを書く。
5. ライブ環境にパブリッシュ
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 33
BaaSの導入
GameSparksにおけるよくある機能マッピング
機能 API名
デバイスとセーブデータ紐付け *AuthenticationRequest
カスタムAPI LogEventRequest
課金 *BuyGoodsRequest
消費 BuyVirtualGoodsRequest
DLC GetDownloadableRequest
ランキング LeaderboardsEntriesRequest
アナリティクス AnalyticsRequest
実績解除報酬 AchievementEarnedMessage
プッシュ通知 PushRegistrationRequest
ソーシャルメッセージ SendFriendMessageRequest
ギルド/クラン/チーム CreateTeamRequest
サードパーティ連携 *ConnectRequest
マルチプレイマッチング MatchmakingRequest
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 34
BaaSの導入
GameSparksの仕様・構成
項目 内容
クラウドサービス Amazon Web Services
Microsoft Azure
Google Cloud Platform
(サービス非依存の作り)
データセンター 欧州・米国・アジア・オセアニア・アフリカ・中国
サポート GameSparks(英語)/コミュニティフォーラム
オートスケール メトリクス監視しオートスケール
サーバクローン メタデータコピー機能あり。
DBコピーはサポートチケット経由で依頼できる。
スナップショット ロジックはzipで、メタデータはJSONでエクスポート可能。
DBダンプはREST APIか、サポートチケット経由で取得。
OS Ubuntu LTS release (14.04 64-bit)
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 35
BaaSの導入
GameSparksの仕様・構成の詳細
項目 内容
ロードバランシング 地理的に分散された軽量なノードに問い合わせ、
接続APIサーバを決定
スケールアウト APIサーバは水平自動スケールし、新しいノードは5分以内
に運用可能な状態となる。
MongoDBは垂直・水平(シャーディング)スケールも可能。
Redisは垂直・水平スケール可能。
要望があれば、専用のクラスターを用意可能。
負荷テスト クラスタは12万同時接続、6000qpsまで負荷テスト済み。
これはMAU換算で言うと3000万。
これがクラスタの性能の上限というわけではなく、
あくまで負荷テストをこのポイントまで行ったという結果。
アクセス制御 PortalでアカウントごとにRead/Write権限を設定。
ゲーム設定/アナリティクス/課金/管理ツール画面、など。
障害復旧 MongoDBを12時間毎、Redisを1時間毎にバックアップ
バックアップは7日間保持
定期的にバックアップ&リカバリーのプロセスをテスト。
ゲームをクラスタ間で5分以内にマイグレーション可能。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 36
BaaSの導入
GameSparksの内部仕様1
項目 内容
利用コンポーネント Linux
WebSocket
Java & Jetty
MongoDB
Redis
Elasticsearch
デプロイメント AWSとAzureのAPIを使い倒している。
Puppetで全てのサーバを設定している。
ゼロダウンタイム更新 APIサーバは自動テストをフルで走らせたものをリリースし、
クライアントは徐々に新APIサーバに移行。旧APIサーバは
ロールバックに備えある程度残された後、削除される。
モニタリング 毎分3万項目の独立したメトリクスを監視。
APIとPortalのトランザクションを、
5分毎に各拠点において監視。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 37
BaaSの導入
GameSparksの内部仕様2
項目 内容
マルチテナント マルチテナント環境のサービスではあるが、
要望に応じてシングルテナント環境を提供可能。
他のテナントの影響は最小限で、オーバーコミットなし。
セキュリティ 通信はTLS。
暗号化とハッシュ値による改ざん検知。
法的解析に使えるように、全てのアクセスはログされる。
あやしいアクセスパターンを、検知できるように設定できる。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 38
BaaSの導入
GameSparksのデメリット
サービスへの依存性が発生。
GameSparksのサービスが終了したら、
必然的にゲームのサービスもできなくなる。
ドキュメントが英語。
(日本の代理店候補はある)
Portalのレスポンスがもっさりしている時がある。
(時間帯による。APIのレスポンスは問題なし)
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 39
BaaSの導入
BaaSの導入検討にあたり気を付けるべきこと
単純に費用で比較せず、さまざまな角度から検討。
スキーマレス/トランザクションレスDBの扱いに不慣れな人は、
慣れてから。
JavaScriptを有効活用できるかどうか検討。
リセマラ/Bot対策が必要。
低課金率地域への展開時に気を付ける。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 40
BaaSの導入
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 41
BaaS
便利な機能があり
開発・保守コスト
が安いが、
サービスへの依存
性が発生する
IaaS
自由度が高く
何でも作れるが、
開発・保守コスト
がかかる
BaaSの導入
BaaSリスト
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 42
GameSparks http://www.gamesparks.com/
ShepHertz http://www.shephertz.com/jp/
HeroicLabs https://heroiclabs.com/
brainCloud http://getbraincloud.com/
PlayFab https://playfab.com/
Gamedonia http://www.gamedonia.com/backend
Flox http://gamua.com/flox/
Clan of the Cloud http://www.clanofthecloud.com/
ご質問?
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 43
ご清聴ありがとうございました。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 44
奥付
Amazon Web ServicesはAmazon.com社の商標または登録商標です。
Google App EngineはGoogle社の商標または登録商標です。
Microsoft AzureはMicrosoft社の商標または登録商標です。
HerokuはSalesforce.com社の商標または登録商標です。
Office 365はMicrosoft社の商標または登録商標です。
その他掲載されている会社名、商品名は、各社の商標または登録商標です。
© 2016 SQUARE ENIX CO., LTD. All Rights Reserved. 45

BaaSでゲームサーバを作る話