SlideShare una empresa de Scribd logo
1 de 49
@Lexues inc. All rights reserved.
JAWS-UG沖縄勉強会 Cloud on the beach 2016
勉強会の部(経験者向けトラック)
ネットゲーム開発者が
サーバレスしてみた
1
Ver.1.10
2016.04.29
株式会社レキサス 鈴木康元
@Lexues inc. All rights reserved.2
とりあえず、お前だれよ?
@Lexues inc. All rights reserved.3
鈴木 康元 39歳
出身 茨城 → 東京 → 北海道 → 沖縄
趣味 GWave、嫁、半導体情報収集
経歴 ゲーム開発(15年)、教育系アプリ開発、
SIer(1年)、レキサス2年目
担当 ハロペアプリ開発リーダー(SPL)
コトバンバン開発リーダー(SPL)
ADOC-H開発リーダー(SPL) など
得意技 地味プログラム(高速化とか)
主に設計とコアな部分や難易度が高い
部分の実装担当
レキサス プロダクト企画開発部
R&D担当システムエンジニア
@Lexues inc. All rights reserved.4
twitter @yasuharutwi
facebook yasuharu.suzuki.50
よかったらフォローお願いします。
お友達になりましょう。
@Lexues inc. All rights reserved.5
これまでやってきたこと
”ゲーム開発”
@Lexues inc. All rights reserved.6
GAMEPACKシリーズ
• 主に富士通FMVシリーズへのバンドルソフトとして、Windows95以来10年以上続けて組み込み製
品として採用された。
(C) DATT JAPAN INC
※ダットジャパン株式会社より許諾を得て掲載しております。
@Lexues inc. All rights reserved.7
やる雀、ゴルフやり隊シリーズ
• 2001年に世界初の携帯端末向け4人対戦麻雀アプリ「やる雀」を松下電器産業と共同開発。
• 翌年には毎週新しいゴルフコースが追加される「ゴルフやり隊」もS-inした。
※ダットジャパン株式会社より許諾を得て掲載しております。
@Lexues inc. All rights reserved.8
ゲームパックMOBシリーズ
• PC向け「GAMEPACK」シリーズのモバイル端末向けバージョンを開発。
• Bluetooth対戦、HTTP通信によるネット対戦(1stバージョン)などに対応し、対戦機能を充実。
• 2年後にはUDP通信による高速ネット対戦(2ndバージョン)に対応した。
1stバージョン アプリ本数:7本
対戦アプリ:4本
2ndバージョン アプリ本数:15本
対戦アプリ:11本
※ダットジャパン株式会社より許諾を得て掲載しております。
@Lexues inc. All rights reserved.9
私が開発してきた
ネット対戦ゲーム
について解説していきたいと思います
@Lexues inc. All rights reserved.10
ネット対戦ゲーム
“とにかく低レイテンシが求められる”
@Lexues inc. All rights reserved.11
1stバージョン
@Lexues inc. All rights reserved.12
普通なら
「大量アクセスに耐えられるように
設計しましょう!」
という議論がありそうなものですが….
@Lexues inc. All rights reserved.13
「どうせ誰も遊ばんだろう」
@Lexues inc. All rights reserved.14
携帯電話の利用シーンを考えると、
電車の乗り降りなど10秒以下の短時間で
さくっと遊べるアプリの方が流行る。
対戦相手の手番を待ってプレイする人は
少ないだろうと予測していた。
@Lexues inc. All rights reserved.15
開発期間:アプリ7本(うち対戦4本)
プログラマ:4名×2人月
ネット対戦のサーバ側の実装期間:せいぜい0.5人月
他にアプリそのものの実装時間や、Bluetooth対戦の
実装も必要だった。
(課金処理やランキング、ユーザー管理も標準装備)
「開発リソース?そんなものはない!」
@Lexues inc. All rights reserved.16
mobile client
users
Internet
web server
web server
web server
database
database
1stバージョン構成図
サーバサイド:Javaのみ
通信:HTTPのみ
レスポンス:200ms〜300ms
1秒あたりの総処理量:せいぜい200ms〜300ms
@Lexues inc. All rights reserved.17
Internet
ソフトウェア構成
シングルプレイ
ネット対戦対応
ユーザー情報
ランキング
マッチング
ネット対戦
サーバアプリ
@Lexues inc. All rights reserved.18
当初は予想通り、誰も遊ばなかった。。。
※同時対戦数=多くて1〜2
@Lexues inc. All rights reserved.19
転機
@Lexues inc. All rights reserved.20
まさかの「将棋」アプリヒット
初のVGA端末登場
@Lexues inc. All rights reserved.21
「超美麗ディスプレイ」などとメーカーが持ち上げる
「VGAアプリコーナー」ができる
ただし、VRAM容量は変わらず、実質1/4
当然「将棋」も余裕でメモリ不足。。。
画像をテトリスして詰め込みました。
↓
@Lexues inc. All rights reserved.22
同時対戦数は20〜30に
1秒あたりの総処理量:4000ms〜6000ms
ピーク時には毎日アラート
※ちなみに携帯アプリのNET対戦アクティブ率は1%以下。
つまり月額300円のサービスで2000名ほどの新規ユーザーを獲得した計算になります。
@Lexues inc. All rights reserved.23
お願いだから遊ばないでください
(心の叫び)
@Lexues inc. All rights reserved.24
「意外とネット対戦て遊ぶ人いるんだな」
加えてネット対戦利用者は
サービス継続率がめちゃくちゃ高い
↓
では力を入れて開発しましょう
@Lexues inc. All rights reserved.25
というわけで
開発コード:NET-ZERO
1ms以下(0ms)のレイテンシを
目標にして開発しました
@Lexues inc. All rights reserved.26
mobile client
users
Internet
web server
web server
web server
database
database
1stバージョン構成図@おさらい
サーバサイド:Javaのみ
通信:HTTPのみ
レスポンス:200ms〜300ms
1秒あたりの総処理量:6秒(30名対戦時)
@Lexues inc. All rights reserved.27
mobile client
users
Internet
vs server
web server
web server
database
database
2ndバージョン構成図
サーバサイド:Java + C言語(対戦サーバはフルC言語)
通信:HTTP+UDP
レスポンス:0ms(測定不能)
1秒あたりの総処理量:50ns(50名対戦時)
インメモリDB(10秒に1回DBへ書き込み)、オンCPUキャッシュリングバッファ
@Lexues inc. All rights reserved.28
Internet
ソフトウェア構成@おさらい
シングルプレイ
ネット対戦対応
ユーザー情報
ランキング
マッチング
ネット対戦
サーバアプリ
@Lexues inc. All rights reserved.29
Internet
ソフトウェア構成 2ndバージョン
シングルプレイ
ネット対戦対応
ユーザー情報
サーバアプリ
その他
ランキング
マッチング
ネット対戦
@Lexues inc. All rights reserved.30
6000ms
↓
50ns
@Lexues inc. All rights reserved.31
6000ms(30名対戦時)
↓
50ns(50名対戦時)
ざっくり比較ですが
とりあえず1000万倍くらいは高速化されますた
<1秒間あたりの総処理時間について> 読みたい人は読んでくさい。
対戦サーバ内で実際に処理を行った時の処理時間を総和して計算。1stバージョンではHTTPであったためアプリから常に通信が来ていた(厳密には2秒に1回程度)が、2ndバ
ージョンではUDPになったため、相手のアクションを待つタイプのアプリ(麻雀、将棋、大富豪など)では10秒〜数10秒に1度しか通信が来なくなった。さらに2ndバー
ジョンではゲームデータはすべてオンメモリ化、10秒に1度バックグラウンドでHDDに保存、通信処理は別スレッドでポーリング&送信するなど様々な最適化を行い、1リクエ
ストに対する処理時間も数100ns(ナノ秒) 〜 数100us(マイクロ秒)レベルにまで高速化された。これらの改善により、サーバサイドの総処理時間は劇的に改善された。
@Lexues inc. All rights reserved.32
さて。IoT
@Lexues inc. All rights reserved.33
@Lexues inc. All rights reserved.34
アプリ側つくりました。
で、
メンテナンス情報の表示どうしようかなと
@Lexues inc. All rights reserved.35
@Lexues inc. All rights reserved.36
@Lexues inc. All rights reserved.37
CloudFront
写真
CloudWatch
Cognito IAM Role
AWSサービスへの
認証情報取得
S3
期限付きURL
Dynamo
Mobile
Platform
トークン登録
メッセージ送信要求
SNS
Lambda
CDN
Xamarin
Mobile
Client
User
Route 53
Amazon API
Gateway
超シンプル
@Lexues inc. All rights reserved.38
1stバージョン
リスクは負いたくないですね。
(セコいのは相変わらずです)
@Lexues inc. All rights reserved.39
・アプリ側は通信できなくても動作するように実装。
・Dynamoは主キーとrangeキーでデータ引っ張ってきて返すだけ。
・ユーザー固有のデータでもないので問題出たら削除可能。
超スモールスタート。
@Lexues inc. All rights reserved.40
・費用を見積もりやすくなった。Lambdaって課金されんの?w
・Dynamoって大して安くないね。書き込みスループットが5倍て。
・Dynamoはユーザーデータであまり編集されないものを入れるべき。
・自動パーティション便利。
・ALTER_TABLEいらないのも便利。メンテいらず。
・メンテ告知を関係者と協議するコストを考えると安くなる?
・Lambdaのレスポンスは150ms〜300ms程度
・マシンに優しく、人に(設計に)厳しいDynamoさん。多少とっつきにくい
・RDSよりは低レイヤー、低レベルなソリューション
・スループットで簡単にパフォーマンスをUP/DOWN。耐障害性が高い。
・テーブルごとにスループット設定しなければならないのは、ちと面倒
成果
@Lexues inc. All rights reserved.41
先のネット対戦との比較
@Lexues inc. All rights reserved.42
1stバージョン:6000ms (30名)
先のネット対戦との比較
vs server
web server
Lambda
2ndバージョン:50ns (50名)
Lambda:150ms〜300ms
ソフトウェアは違いますし、本来単純比較は出来ませんので、
あくまでお遊び程度でお考えくださいm(_ _ )m
※128MB時。メモリ増やすと速くなることも。
@Lexues inc. All rights reserved.43
1000人来たら?
@Lexues inc. All rights reserved.44
1stバージョン:300秒 (1000名)
1000人来たら?
vs server
web server
Lambda × 1000
2ndバージョン:1us (1000名)
Lambda:150ms〜300ms (1000名)
※Lambdaは1000インスタンスまでオートスケール
※なので1000名来ても処理時間は変わらず
@Lexues inc. All rights reserved.45
Lambda、恐るるに足らず!
(言いたかっただけ)
真面目な話、FPSのような即応性を求められるゲームは無かったので、サーバ内の処理時間が
150ms(Lambda)でも、1us(2ndバージョン)でも、ユーザー体験としてはさほどかわらないです。
@Lexues inc. All rights reserved.46
1stバージョン
耐障害性
vs server
web server
Lambda × 1000
2ndバージョン
Lambda
1000名来られると、そもそも動かない。
アラート鳴り続ける。
サーバの不調によりときどき落ちる。
(お客様にお詫びのコイン配布)
※実際にLinuxの不具合やハードの不調と思われる現
象で落ちたことが何度かあった。
300秒@1000名
1us@1000名
150ms@1000名
基本落ちない。
(ソフト的な不具合がないこと前提ですが。)
※落ちても1/1000の問題のため、サービス全体へ
の影響は少ない。ユーザーからすると通信エラーと
なるだけで、リトライすれば済む。
@Lexues inc. All rights reserved.47
将来的にはもう少し使いたいので
いい経験になった。
@Lexues inc. All rights reserved.48
CloudFront
写真
CloudWatch
Cognito IAM Role
AWSサービスへの
認証情報取得
S3
期限付きURL
Dynamo
Mobile
Platform
トークン登録
メッセージ送信要求
SNS
Lambda
CDN
ELB EC2
SES
SQS
Kinesis
Xamarin
RDS
Redshift
Mobile
Client
User
Route 53
ElastiCache
Amazon API
Gateway
将来的にはこれくらい。
@Lexues inc. All rights reserved.49
ご静聴ありがとうございました。

Más contenido relacionado

La actualidad más candente

AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦するAWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
Kahori Takeda
 

La actualidad más candente (19)

サーバレスアーキテクチャを実戦投入するにあたって知るべきこと
サーバレスアーキテクチャを実戦投入するにあたって知るべきことサーバレスアーキテクチャを実戦投入するにあたって知るべきこと
サーバレスアーキテクチャを実戦投入するにあたって知るべきこと
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
Ops worksに今後期待するところ
Ops worksに今後期待するところOps worksに今後期待するところ
Ops worksに今後期待するところ
 
Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2
 
デフォルトAWS時代にインフラエンジニアはどう向き合うべきか?
デフォルトAWS時代にインフラエンジニアはどう向き合うべきか?デフォルトAWS時代にインフラエンジニアはどう向き合うべきか?
デフォルトAWS時代にインフラエンジニアはどう向き合うべきか?
 
Cloud on the_beach_aws入門_公開
Cloud on the_beach_aws入門_公開Cloud on the_beach_aws入門_公開
Cloud on the_beach_aws入門_公開
 
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
 
Serverless Architecture Overview #cdevc
Serverless Architecture Overview #cdevcServerless Architecture Overview #cdevc
Serverless Architecture Overview #cdevc
 
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
 
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦するAWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
 
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
 
JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)
 
実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ
 
AWS運用自動化への第一歩 
AWS運用自動化への第一歩 AWS運用自動化への第一歩 
AWS運用自動化への第一歩 
 
クラウド入門(AWS編)
クラウド入門(AWS編)クラウド入門(AWS編)
クラウド入門(AWS編)
 
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
 
20191129 AWS CloudFormarion
20191129 AWS CloudFormarion20191129 AWS CloudFormarion
20191129 AWS CloudFormarion
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 

Destacado

日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
Yuusuke Takeuchi
 

Destacado (14)

mocloud.io ハンズオン サインアップから初めてのスタック作成まで ver.2
mocloud.io ハンズオン サインアップから初めてのスタック作成まで ver.2mocloud.io ハンズオン サインアップから初めてのスタック作成まで ver.2
mocloud.io ハンズオン サインアップから初めてのスタック作成まで ver.2
 
kintone x AWSで超ファストシステムを作ろう 〜 AWSでkintone APIをよりよく使う〜
kintone x AWSで超ファストシステムを作ろう 〜 AWSでkintone APIをよりよく使う〜kintone x AWSで超ファストシステムを作ろう 〜 AWSでkintone APIをよりよく使う〜
kintone x AWSで超ファストシステムを作ろう 〜 AWSでkintone APIをよりよく使う〜
 
AWS WAF でセキュリティ対策_JAWS-UG沖縄勉強会_Cloud on the BEACH 2016
AWS WAF でセキュリティ対策_JAWS-UG沖縄勉強会_Cloud on the BEACH 2016AWS WAF でセキュリティ対策_JAWS-UG沖縄勉強会_Cloud on the BEACH 2016
AWS WAF でセキュリティ対策_JAWS-UG沖縄勉強会_Cloud on the BEACH 2016
 
ゲームテストへの新しいアプローチ
 ゲームテストへの新しいアプローチ ゲームテストへの新しいアプローチ
ゲームテストへの新しいアプローチ
 
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMSDrupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
 
現代のコンシューマゲーム業界の闇
現代のコンシューマゲーム業界の闇現代のコンシューマゲーム業界の闇
現代のコンシューマゲーム業界の闇
 
ソーシャルゲームが生んだおもてなし:ソもてなし理論 (in Japanese)
ソーシャルゲームが生んだおもてなし:ソもてなし理論 (in Japanese)ソーシャルゲームが生んだおもてなし:ソもてなし理論 (in Japanese)
ソーシャルゲームが生んだおもてなし:ソもてなし理論 (in Japanese)
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
 
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
 
【GREE様社内勉強会】見せます!モノビットエンジンの裏の裏
【GREE様社内勉強会】見せます!モノビットエンジンの裏の裏【GREE様社内勉強会】見せます!モノビットエンジンの裏の裏
【GREE様社内勉強会】見せます!モノビットエンジンの裏の裏
 
年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会年の瀬!リアルタイム通信ゲームサーバ勉強会
年の瀬!リアルタイム通信ゲームサーバ勉強会
 
AWS Black Belt Online Seminar Amazon EC2
AWS Black Belt Online Seminar Amazon EC2AWS Black Belt Online Seminar Amazon EC2
AWS Black Belt Online Seminar Amazon EC2
 
AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策
 
[Aurora事例祭り]毎日新聞ニュースサイトをクラウド化 ~Amazon Aurora 導入事例紹介~
[Aurora事例祭り]毎日新聞ニュースサイトをクラウド化  ~Amazon Aurora 導入事例紹介~[Aurora事例祭り]毎日新聞ニュースサイトをクラウド化  ~Amazon Aurora 導入事例紹介~
[Aurora事例祭り]毎日新聞ニュースサイトをクラウド化 ~Amazon Aurora 導入事例紹介~
 

Similar a ネットゲーム開発者がサーバレスしてみたver1.10

Rds 2008 R2 Express Editionで遊んでみよう
Rds 2008 R2 Express Editionで遊んでみようRds 2008 R2 Express Editionで遊んでみよう
Rds 2008 R2 Express Editionで遊んでみよう
guest468ec6
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
Kyosuke Inoue
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
Kyosuke Inoue
 
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報
モノビット エンジン
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
 

Similar a ネットゲーム開発者がサーバレスしてみたver1.10 (20)

JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013
 
Rds 2008 R2 Express Editionで遊んでみよう
Rds 2008 R2 Express Editionで遊んでみようRds 2008 R2 Express Editionで遊んでみよう
Rds 2008 R2 Express Editionで遊んでみよう
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
Swiftのスピードについて
SwiftのスピードについてSwiftのスピードについて
Swiftのスピードについて
 
Dotnetlab 20110827
Dotnetlab 20110827Dotnetlab 20110827
Dotnetlab 20110827
 
[デブサミ]Microsoft Data Platform 最新アップデート
[デブサミ]Microsoft Data Platform 最新アップデート [デブサミ]Microsoft Data Platform 最新アップデート
[デブサミ]Microsoft Data Platform 最新アップデート
 
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
 
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5
 
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
 
Server side swift: Vapor
Server side swift: VaporServer side swift: Vapor
Server side swift: Vapor
 
そのコンテナ化、本当に嬉しいですか?
そのコンテナ化、本当に嬉しいですか?そのコンテナ化、本当に嬉しいですか?
そのコンテナ化、本当に嬉しいですか?
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
 

ネットゲーム開発者がサーバレスしてみたver1.10

  • 1. @Lexues inc. All rights reserved. JAWS-UG沖縄勉強会 Cloud on the beach 2016 勉強会の部(経験者向けトラック) ネットゲーム開発者が サーバレスしてみた 1 Ver.1.10 2016.04.29 株式会社レキサス 鈴木康元
  • 2. @Lexues inc. All rights reserved.2 とりあえず、お前だれよ?
  • 3. @Lexues inc. All rights reserved.3 鈴木 康元 39歳 出身 茨城 → 東京 → 北海道 → 沖縄 趣味 GWave、嫁、半導体情報収集 経歴 ゲーム開発(15年)、教育系アプリ開発、 SIer(1年)、レキサス2年目 担当 ハロペアプリ開発リーダー(SPL) コトバンバン開発リーダー(SPL) ADOC-H開発リーダー(SPL) など 得意技 地味プログラム(高速化とか) 主に設計とコアな部分や難易度が高い 部分の実装担当 レキサス プロダクト企画開発部 R&D担当システムエンジニア
  • 4. @Lexues inc. All rights reserved.4 twitter @yasuharutwi facebook yasuharu.suzuki.50 よかったらフォローお願いします。 お友達になりましょう。
  • 5. @Lexues inc. All rights reserved.5 これまでやってきたこと ”ゲーム開発”
  • 6. @Lexues inc. All rights reserved.6 GAMEPACKシリーズ • 主に富士通FMVシリーズへのバンドルソフトとして、Windows95以来10年以上続けて組み込み製 品として採用された。 (C) DATT JAPAN INC ※ダットジャパン株式会社より許諾を得て掲載しております。
  • 7. @Lexues inc. All rights reserved.7 やる雀、ゴルフやり隊シリーズ • 2001年に世界初の携帯端末向け4人対戦麻雀アプリ「やる雀」を松下電器産業と共同開発。 • 翌年には毎週新しいゴルフコースが追加される「ゴルフやり隊」もS-inした。 ※ダットジャパン株式会社より許諾を得て掲載しております。
  • 8. @Lexues inc. All rights reserved.8 ゲームパックMOBシリーズ • PC向け「GAMEPACK」シリーズのモバイル端末向けバージョンを開発。 • Bluetooth対戦、HTTP通信によるネット対戦(1stバージョン)などに対応し、対戦機能を充実。 • 2年後にはUDP通信による高速ネット対戦(2ndバージョン)に対応した。 1stバージョン アプリ本数:7本 対戦アプリ:4本 2ndバージョン アプリ本数:15本 対戦アプリ:11本 ※ダットジャパン株式会社より許諾を得て掲載しております。
  • 9. @Lexues inc. All rights reserved.9 私が開発してきた ネット対戦ゲーム について解説していきたいと思います
  • 10. @Lexues inc. All rights reserved.10 ネット対戦ゲーム “とにかく低レイテンシが求められる”
  • 11. @Lexues inc. All rights reserved.11 1stバージョン
  • 12. @Lexues inc. All rights reserved.12 普通なら 「大量アクセスに耐えられるように 設計しましょう!」 という議論がありそうなものですが….
  • 13. @Lexues inc. All rights reserved.13 「どうせ誰も遊ばんだろう」
  • 14. @Lexues inc. All rights reserved.14 携帯電話の利用シーンを考えると、 電車の乗り降りなど10秒以下の短時間で さくっと遊べるアプリの方が流行る。 対戦相手の手番を待ってプレイする人は 少ないだろうと予測していた。
  • 15. @Lexues inc. All rights reserved.15 開発期間:アプリ7本(うち対戦4本) プログラマ:4名×2人月 ネット対戦のサーバ側の実装期間:せいぜい0.5人月 他にアプリそのものの実装時間や、Bluetooth対戦の 実装も必要だった。 (課金処理やランキング、ユーザー管理も標準装備) 「開発リソース?そんなものはない!」
  • 16. @Lexues inc. All rights reserved.16 mobile client users Internet web server web server web server database database 1stバージョン構成図 サーバサイド:Javaのみ 通信:HTTPのみ レスポンス:200ms〜300ms 1秒あたりの総処理量:せいぜい200ms〜300ms
  • 17. @Lexues inc. All rights reserved.17 Internet ソフトウェア構成 シングルプレイ ネット対戦対応 ユーザー情報 ランキング マッチング ネット対戦 サーバアプリ
  • 18. @Lexues inc. All rights reserved.18 当初は予想通り、誰も遊ばなかった。。。 ※同時対戦数=多くて1〜2
  • 19. @Lexues inc. All rights reserved.19 転機
  • 20. @Lexues inc. All rights reserved.20 まさかの「将棋」アプリヒット 初のVGA端末登場
  • 21. @Lexues inc. All rights reserved.21 「超美麗ディスプレイ」などとメーカーが持ち上げる 「VGAアプリコーナー」ができる ただし、VRAM容量は変わらず、実質1/4 当然「将棋」も余裕でメモリ不足。。。 画像をテトリスして詰め込みました。 ↓
  • 22. @Lexues inc. All rights reserved.22 同時対戦数は20〜30に 1秒あたりの総処理量:4000ms〜6000ms ピーク時には毎日アラート ※ちなみに携帯アプリのNET対戦アクティブ率は1%以下。 つまり月額300円のサービスで2000名ほどの新規ユーザーを獲得した計算になります。
  • 23. @Lexues inc. All rights reserved.23 お願いだから遊ばないでください (心の叫び)
  • 24. @Lexues inc. All rights reserved.24 「意外とネット対戦て遊ぶ人いるんだな」 加えてネット対戦利用者は サービス継続率がめちゃくちゃ高い ↓ では力を入れて開発しましょう
  • 25. @Lexues inc. All rights reserved.25 というわけで 開発コード:NET-ZERO 1ms以下(0ms)のレイテンシを 目標にして開発しました
  • 26. @Lexues inc. All rights reserved.26 mobile client users Internet web server web server web server database database 1stバージョン構成図@おさらい サーバサイド:Javaのみ 通信:HTTPのみ レスポンス:200ms〜300ms 1秒あたりの総処理量:6秒(30名対戦時)
  • 27. @Lexues inc. All rights reserved.27 mobile client users Internet vs server web server web server database database 2ndバージョン構成図 サーバサイド:Java + C言語(対戦サーバはフルC言語) 通信:HTTP+UDP レスポンス:0ms(測定不能) 1秒あたりの総処理量:50ns(50名対戦時) インメモリDB(10秒に1回DBへ書き込み)、オンCPUキャッシュリングバッファ
  • 28. @Lexues inc. All rights reserved.28 Internet ソフトウェア構成@おさらい シングルプレイ ネット対戦対応 ユーザー情報 ランキング マッチング ネット対戦 サーバアプリ
  • 29. @Lexues inc. All rights reserved.29 Internet ソフトウェア構成 2ndバージョン シングルプレイ ネット対戦対応 ユーザー情報 サーバアプリ その他 ランキング マッチング ネット対戦
  • 30. @Lexues inc. All rights reserved.30 6000ms ↓ 50ns
  • 31. @Lexues inc. All rights reserved.31 6000ms(30名対戦時) ↓ 50ns(50名対戦時) ざっくり比較ですが とりあえず1000万倍くらいは高速化されますた <1秒間あたりの総処理時間について> 読みたい人は読んでくさい。 対戦サーバ内で実際に処理を行った時の処理時間を総和して計算。1stバージョンではHTTPであったためアプリから常に通信が来ていた(厳密には2秒に1回程度)が、2ndバ ージョンではUDPになったため、相手のアクションを待つタイプのアプリ(麻雀、将棋、大富豪など)では10秒〜数10秒に1度しか通信が来なくなった。さらに2ndバー ジョンではゲームデータはすべてオンメモリ化、10秒に1度バックグラウンドでHDDに保存、通信処理は別スレッドでポーリング&送信するなど様々な最適化を行い、1リクエ ストに対する処理時間も数100ns(ナノ秒) 〜 数100us(マイクロ秒)レベルにまで高速化された。これらの改善により、サーバサイドの総処理時間は劇的に改善された。
  • 32. @Lexues inc. All rights reserved.32 さて。IoT
  • 33. @Lexues inc. All rights reserved.33
  • 34. @Lexues inc. All rights reserved.34 アプリ側つくりました。 で、 メンテナンス情報の表示どうしようかなと
  • 35. @Lexues inc. All rights reserved.35
  • 36. @Lexues inc. All rights reserved.36
  • 37. @Lexues inc. All rights reserved.37 CloudFront 写真 CloudWatch Cognito IAM Role AWSサービスへの 認証情報取得 S3 期限付きURL Dynamo Mobile Platform トークン登録 メッセージ送信要求 SNS Lambda CDN Xamarin Mobile Client User Route 53 Amazon API Gateway 超シンプル
  • 38. @Lexues inc. All rights reserved.38 1stバージョン リスクは負いたくないですね。 (セコいのは相変わらずです)
  • 39. @Lexues inc. All rights reserved.39 ・アプリ側は通信できなくても動作するように実装。 ・Dynamoは主キーとrangeキーでデータ引っ張ってきて返すだけ。 ・ユーザー固有のデータでもないので問題出たら削除可能。 超スモールスタート。
  • 40. @Lexues inc. All rights reserved.40 ・費用を見積もりやすくなった。Lambdaって課金されんの?w ・Dynamoって大して安くないね。書き込みスループットが5倍て。 ・Dynamoはユーザーデータであまり編集されないものを入れるべき。 ・自動パーティション便利。 ・ALTER_TABLEいらないのも便利。メンテいらず。 ・メンテ告知を関係者と協議するコストを考えると安くなる? ・Lambdaのレスポンスは150ms〜300ms程度 ・マシンに優しく、人に(設計に)厳しいDynamoさん。多少とっつきにくい ・RDSよりは低レイヤー、低レベルなソリューション ・スループットで簡単にパフォーマンスをUP/DOWN。耐障害性が高い。 ・テーブルごとにスループット設定しなければならないのは、ちと面倒 成果
  • 41. @Lexues inc. All rights reserved.41 先のネット対戦との比較
  • 42. @Lexues inc. All rights reserved.42 1stバージョン:6000ms (30名) 先のネット対戦との比較 vs server web server Lambda 2ndバージョン:50ns (50名) Lambda:150ms〜300ms ソフトウェアは違いますし、本来単純比較は出来ませんので、 あくまでお遊び程度でお考えくださいm(_ _ )m ※128MB時。メモリ増やすと速くなることも。
  • 43. @Lexues inc. All rights reserved.43 1000人来たら?
  • 44. @Lexues inc. All rights reserved.44 1stバージョン:300秒 (1000名) 1000人来たら? vs server web server Lambda × 1000 2ndバージョン:1us (1000名) Lambda:150ms〜300ms (1000名) ※Lambdaは1000インスタンスまでオートスケール ※なので1000名来ても処理時間は変わらず
  • 45. @Lexues inc. All rights reserved.45 Lambda、恐るるに足らず! (言いたかっただけ) 真面目な話、FPSのような即応性を求められるゲームは無かったので、サーバ内の処理時間が 150ms(Lambda)でも、1us(2ndバージョン)でも、ユーザー体験としてはさほどかわらないです。
  • 46. @Lexues inc. All rights reserved.46 1stバージョン 耐障害性 vs server web server Lambda × 1000 2ndバージョン Lambda 1000名来られると、そもそも動かない。 アラート鳴り続ける。 サーバの不調によりときどき落ちる。 (お客様にお詫びのコイン配布) ※実際にLinuxの不具合やハードの不調と思われる現 象で落ちたことが何度かあった。 300秒@1000名 1us@1000名 150ms@1000名 基本落ちない。 (ソフト的な不具合がないこと前提ですが。) ※落ちても1/1000の問題のため、サービス全体へ の影響は少ない。ユーザーからすると通信エラーと なるだけで、リトライすれば済む。
  • 47. @Lexues inc. All rights reserved.47 将来的にはもう少し使いたいので いい経験になった。
  • 48. @Lexues inc. All rights reserved.48 CloudFront 写真 CloudWatch Cognito IAM Role AWSサービスへの 認証情報取得 S3 期限付きURL Dynamo Mobile Platform トークン登録 メッセージ送信要求 SNS Lambda CDN ELB EC2 SES SQS Kinesis Xamarin RDS Redshift Mobile Client User Route 53 ElastiCache Amazon API Gateway 将来的にはこれくらい。
  • 49. @Lexues inc. All rights reserved.49 ご静聴ありがとうございました。