モバイルゲームの全世界オンライン対戦を実現する方法を考察する
DESCRIPTION
モバイルゲームの全世界オンライン対戦を実現する方法を考察するTRANSCRIPT
![Page 1: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/1.jpg)
© CROOZ,Inc. 1
モバイルゲームの全世界オンライン対戦を実現する方法を考察する
クルーズ株式会社
田沢 知志
![Page 2: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/2.jpg)
CROOZって何やってる会社?
© CROOZ,Inc. 2
CROOZは、ソーシャルゲームやネット通販を中心に、世界中にインターネットサービスを提供するエンターテインメント企業です
![Page 3: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/3.jpg)
© CROOZ,Inc. 3
アジェンダ
・クラウド導入の一般的な考慮点(LAMP環境)
・ストレージI/Oの考慮点
・オンラインゲーム 設計のステップアップ
・最後に
![Page 4: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/4.jpg)
© CROOZ,Inc. 4
クラウド導入の一般的な考慮点(LAMP環境)
![Page 5: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/5.jpg)
© CROOZ,Inc. 5
■インフラ構成概要AWS cloud
Web oninstances
DB on instance
データセンター
CloudFront
Route 53
S3
ELB(Front)
ELB(Back)
Cache oninstances
サービス配信リソース配信
![Page 6: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/6.jpg)
© CROOZ,Inc. 6
■OS/Middleware概要
•OS:CentOS6.4•Web:apache2.2系/PHP5.4系
• 社内独自フレームワークVENUS使用•Cache:redis2.8系•DB:Percona5.5系
![Page 7: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/7.jpg)
© CROOZ,Inc. 7
■インスタンスタイプ選択の考慮点
•インスタンスタイプは3-6か月単位で向上• 旧/新インスタンスを比較すると、コスト
パフォーマンスは3割以上良い(印象)•インスタンスタイプは定期的に変更
• 数か月前はm2/hi1タイプをメインで使用• 現在メインで使用してるタイプは・・
•Web系:m3.xlarge、m3.2xlarge•Cache/DB系:r3.xlarge、r3.2xlarge
![Page 8: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/8.jpg)
© CROOZ,Inc. 8
■ベンチマークの考慮点
•複数リージョン、複数インスタンス毎に比較•重要指標
• DB:ストレージ IOPS、queries/s• Cache:requests/s• Web:CPU Load Average、USER使用率
![Page 9: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/9.jpg)
© CROOZ,Inc. 9
■スケーラビリティの考慮点
•Web/Cache/DB 基本的にhorizontal scaling•Web
• 構成済image(AMI)からインスタンス起動•Cache/DB
• sharding/partitioning• スタンバイ(バックアップ)インスタンスか
らデータをコピーして同期
![Page 10: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/10.jpg)
© CROOZ,Inc. 10
■スケーラビリティの考慮点-インスタンス
Web/Cache/DB構成済みinstance
標準構成AMI
Web instances
Cache instances
DB instances
![Page 11: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/11.jpg)
© CROOZ,Inc. 11
■スケーラビリティの考慮点-データ同期
標準構成AMI
Cache/DB Master-1
Cache/DB Slave-1a
Cache/DB Slave-1x
Cache/DB Slave-Standby
・・・・
Cache/DB Master-2
Cache/DB Slave-2a
Cache/DB Slave-2x
Cache/DB Slave-Standby
・・・・
![Page 12: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/12.jpg)
© CROOZ,Inc. 12
■キャパシティの考慮点
•Web:性能限界のポイント(弊社事例)• ボトルネックの要因は・・?• プログラムが酷くない限りCPU負荷はない• Cache/DB のレスポンス遅延• ローカルポート不足(デフォルト30000弱)
• ip_local_port_range で 約50000まで拡張• tcp_max_tw_buckets で time_wait 数を調整
•Cache/DBは後半で・・
![Page 13: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/13.jpg)
© CROOZ,Inc. 13
■コストの考慮点
•1インスタンスあたりのMaxDAUを想定• 弊社参考例• Web(m3.2xlarge) 60,000DAU• DB(r3.2xlarge IOPS4K) 120,000DAU• Cache(r3.large) 180,000DAU
•想定MaxDAUから必要インスタンス数を算出• 月額売上の?%をクラウドコスト目標に
![Page 14: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/14.jpg)
© CROOZ,Inc. 14
■リソース(バイナリデータ)配信の考慮点
•リソース配信はCloudFrontを使用• 各リージョン毎にエッジロケーション• オリジンはS3に配置• Reports & Analytics 機能もあり• 数100TB/月の配信で利用• リザーブドプラン契約により3-4割安に
![Page 15: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/15.jpg)
© CROOZ,Inc. 15
ストレージI/Oの考慮点
![Page 16: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/16.jpg)
© CROOZ,Inc. 16
一般的なIOPS
クラウドストレージの特性を考慮すると・・
SAS
15krpm
175 - 300 IOPS
Amazon EBS
1,000 - 4,000 IOPS
SSD 10,000 - 15,000 IOPS
FusionIO
ioDrive2
150,000 - 200,000 IOPS
![Page 17: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/17.jpg)
© CROOZ,Inc. 17
■DBのスケーラビリティ
•IOの弱点を考慮して・・• innodb_buffer_pool_sizeに乗るDBサイズ
•オンメモリであれば、数Kiops程度•queries/sの方が限界に達する
• 臨機応変にpartitioning / sharding• 参照はできるだけCacheへ
![Page 18: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/18.jpg)
© CROOZ,Inc. 18
■DBのベンチマーク(弊社検証参考)
•Percona Server 5.5系•sysbench
• 10,000,000recods/ReadWrite/1thread/60秒
read write transactions
r3.2xlarge (EBS iops2000) 192,612 55,032 13,758
hi.4xlarge (SSD Ins Vol) 144,032 41,152 10,288
SSD (ほぼ同スペック物理) 312,494 89,284 22,321
![Page 19: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/19.jpg)
© CROOZ,Inc. 19
■Cacheのスケーラビリティ
•Cacheの注意点(弊社事例/r3.large)• IOPSが問題になることはほとんどない• redisベンチは 約500,000requests/s
• redis-benchmark -r 1000000 -n 2000000 -q -P 16
• メモリをフル活用するために&保存時のレスポンス遅延をなくすために、ストレージ保存(BGSAVE)させない•保存用スタンバイインスタンスを用意
![Page 20: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/20.jpg)
© CROOZ,Inc. 20
オンラインゲーム設計のステップアップ
![Page 21: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/21.jpg)
© CROOZ,Inc. 21
■全世界オンライン対戦の考慮点
•通信レイテンシーを短縮するには?• 通信プロトコルの選択は?• リージョンの配置は?• リージョン間データの同期は?
![Page 22: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/22.jpg)
© CROOZ,Inc. 22
■オンラインゲームのプロトコルは?
•現時点ではWebsocket• Java (GlassFish)を選択• redis の Pub/Subによりスケールアウト
redis Master
redis Slave
Websocket
Websocket
Publish
Subscribe
![Page 23: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/23.jpg)
© CROOZ,Inc. 23
■オンラインゲームのプロトコルは?
•今後は HTTP/2 も検証予定• 6/17現在 draft13• Server Push 機能を利用• 参考
• http://tools.ietf.org/html/draft-ietf-httpbis-http2-13• https://github.com/http2/http2-spec/wiki/Implementations
![Page 24: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/24.jpg)
© CROOZ,Inc. 24
■Websocketのベンチマーク(弊社検証参考)
•インスタンスタイプ• Websocket/redis ともに m3.large
•ベンチ結果• Websocketサーバー1台あたり、3,000同時接続• レスポンスタイムはMax2.5秒
![Page 25: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/25.jpg)
© CROOZ,Inc. 25
■1st Step USリージョンのみ
全世界からUSリージョンのApplication(Websocket)サーバーへアクセス※Latency 1.5s-3s
USリージョンのみに・Application(Websocket)・Cache/DBを配置
![Page 26: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/26.jpg)
© CROOZ,Inc. 26
■2nd Step 各リージョンにedgeサーバー
Route53により最短のedgeサーバーへアクセスedge⇔Appはリージョン間Direct Connectで接続※Latency 500ms-1.5s
USリージョンに・Application(Websocket)・Cache/DB各世界リージョンに・edgeサーバーを配置
![Page 27: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/27.jpg)
© CROOZ,Inc. 27
■3rd Step 各リージョンにDBノード
Route53により最短のedgeサーバーへアクセスedge⇔Appはリージョン間Direct Connectで接続※Latency 500ms-1s
各世界リージョンに・Application(Websocket)・Cache/DB・edgeサーバーを配置Cache/DBも同期
![Page 28: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/28.jpg)
© CROOZ,Inc. 28
最後に
![Page 29: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/29.jpg)
© CROOZ,Inc. 29
■クラウドの魅力はまだまだたくさん!
•性能、機能は日々進化• 新インスタンス/ストレージ性能/etc…• PaaS機能の充実
•今後はBaaS系機能も取り入れたい•新しいクラウド デザイン パターンの可能性•ヒット予測の難しいモバイルアプリ配信に対して柔軟な拡張が可能
![Page 30: モバイルゲームの全世界オンライン対戦を実現する方法を考察する](https://reader033.vdocuments.site/reader033/viewer/2022052621/558afee8d8b42a46268b4594/html5/thumbnails/30.jpg)
© CROOZ,Inc. 30
■今後AWSに期待したいことは・・・
•無停止でのインスタンスタイプ変更•RDS関連
• PerconaやMariaDBサポート• クラスタ化• ELBサポート
•親アカウントからダイレクトに子アカウント操作ができる•リージョン間 Direct Connect無償化