Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
真のサーバレスアーキテクトとサーバレス時代のゲーム開発・運用
Search
Kazutomo Niwa
November 03, 2017
Technology
10
17k
真のサーバレスアーキテクトとサーバレス時代のゲーム開発・運用
Serverlessconf Tokyo 2017 で発表した資料です。
こちらも御覧ください →
https://gs2.io/
Kazutomo Niwa
November 03, 2017
Tweet
Share
More Decks by Kazutomo Niwa
See All by Kazutomo Niwa
Amazon Event Bridge による次世代の Pub/Sub
kazutomo
0
1.9k
DynamoDB のインデックス再編事例
kazutomo
2
820
Production-ready Amazon Event Bridge
kazutomo
2
1k
もうそこまで迫っている! Cloud2.0 時代の開発
kazutomo
3
1.7k
Game Server Services ではじめる サーバ開発運用しないゲーム開発
kazutomo
1
7.4k
Cloud2.0時代のゲーム開発を支えるGS2
kazutomo
1
2.1k
Unityネットワーク完全に理解した.pdf
kazutomo
3
3.1k
サーバレスアプリケーションの監視・運用
kazutomo
13
6.5k
ゼロからサーバレスの先頭に追いつこう
kazutomo
25
12k
Other Decks in Technology
See All in Technology
マルチアカウント環境における組織ポリシーについて まとめてみる
nrinetcom
PRO
2
100
クラウド食堂とは?
hiyanger
0
130
MIMEと文字コードの闇
hirachan
2
1.5k
日経のデータベース事業とElasticsearch
hinatades
PRO
0
260
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
120
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
1.2k
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
240
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
1.1k
プロダクト開発者目線での Entra ID 活用
sansantech
PRO
0
100
実は強い 非ViTな画像認識モデル
tattaka
3
1.4k
LayerXにおけるAI活用事例とその裏側(2025年2月) バクラクの目指す “業務の自動運転” の例 / layerx-ai-deim2025
yuya4
1
350
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
250
Featured
See All Featured
Navigating Team Friction
lara
183
15k
Building Adaptive Systems
keathley
40
2.4k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
The Pragmatic Product Professional
lauravandoore
32
6.4k
What's in a price? How to price your products and services
michaelherold
244
12k
The World Runs on Bad Software
bkeepers
PRO
67
11k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
For a Future-Friendly Web
brad_frost
176
9.6k
Unsuck your backbone
ammeep
669
57k
Transcript
真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services 株式会社 代表取締役社⻑CEO 丹⽻ ⼀智
⾃⼰紹介 丹⽻ ⼀智(にわ かずとも) セガ・任天堂で約10年間ゲーム開発・サーバ開発の仕事に従事 昨年 Game Server Services 株式会社
を設⽴ 昨年末からサービスの提供を開始。 Game Server Services, Inc. https://gs2.io
Game Server Services(GS2) ネットワーク対応ゲームに使⽤できるBaaSを提供 めざせ、ゲームサーバ界の Unity! ⼤⼿メーカー ⇒ サーバエンジニアのリソース不⾜解消 ⇒
アプリエンジニアだけでプロトタイピング 中⼩メーカー・独⽴系デベロッパー ⇒ サーバエンジニア無しでゲームを作れるように Game Server Services, Inc. https://gs2.io
安定した⾼い性能を低コストを実現 BaaSとしてサービス提供 ⇒ 秒間数万リクエストを常時捌けることを保証したい ⇒ 仮想サーバで実現するには採算が合わない フルサーバレスアーキテクチャで設計 ⇒ 従量課⾦のマネージドサービスを組み合わせて実装 ⇒
アクセス量に対応して柔軟にスケールしつつ、 ビジネススケールにコストが⽐例するように サーバレスだから実現できる事業。 Game Server Services, Inc. https://gs2.io
真のサーバレスアーキテクト Game Server Services, Inc. https://gs2.io
真のサーバレスアーキテクト サーバレス時代の設計者に求められる技能 ⇒ 適切な箇所で適切なサービスを適⽤できるスキル ⇒ 各マネージドサービスの性能・特性・コストを把握 「 CloudDataFlow でサーバレスストリーム分析だー」 「秒間1個もデータ流れてこないですけどね」
「DynamoDB で我が社もサクセス!」 「1%のデータへのアクセスが9割なんですけどね」 やりたかっただけのサーバレスアーキテクトにならないように! Game Server Services, Inc. https://gs2.io
お願い GS2 のサービス開発で得た知⾒を披露します これは、GS2 の安定性や確かな技術⼒を裏付けるため 当然、⾃社での開発に⽣かしていただいても問題ないです でも、是⾮ GS2 の名前も覚えて帰ってください! Game
Server Services, Inc. https://gs2.io
コールドスタート対策 AWS Lambda は初回起動にレイテンシが発⽣ ⇒ GS2 は Python を採⽤ ⇒
1つの Lambda ファンクションに全ロジックを⼊れてる ⇒ API Gateway のエンドポイントごとに、 どのロジックを実⾏するかをパラメータで渡している ⇒ コール⽐率の低いエンドポイントでも コールドスタートを回避できる Game Server Services, Inc. https://gs2.io
ログ収集 FaaS は⼯夫しないと綺麗なログが残らない ⇒ Cloud Watch Logs に出てるけど コンテナ毎にストリームが分かれて使いづらい ⇒
Lambda ファンクションの先頭で 受け取ったイベントの内容を Kinesis Firehose に書き出し ⇒ Python のデコレータを使ってフックしてる ⇒ S3のPUTイベントでログを仕分けて BigQuery に書き出し ⇒ エラーログは Slack に通知 Game Server Services, Inc. https://gs2.io
アクティビティ収集 GS2ではAPIコール回数などをグラフで確認できる ⇒リソースごとに Cloud PubSub のトピックを⽤意 ⇒イベントが発⽣するごとに情報を流す ⇒ Cloud PubSub
の情報を BigQuery に書き出し 直接 BigQuery に書き込まないのはなぜ? ⇒ バッファリングして書いた⽅が安い SQS じゃなくて Cloud PubSub なのはなぜ? ⇒ スループットの問題 Kinesis じゃないのはなぜ? ⇒ 対象リソース毎の仕分け⾏程が必要になるから Game Server Services, Inc. https://gs2.io
ポーリング問題 FaaS によるサーバシステムは⾮同期処理の実装が⾟い ⇒ たとえば、マッチメイキング ⇒ 処理が終わるまで待つとがタイムアウトする ⇒ リクエストを出したあと、処理が終わったかポーリング ださい
⇒ 処理が終わったらサーバから クライアントにプッシュ通知したい ⇒ FaaS では簡単にはいかない Game Server Services, Inc. https://gs2.io
プッシュ通知の実現 コネクションを張りっぱなしにするサーバが必要 ⇒ ⾺⿅正直に設計すると仮想サーバが無限に並ぶ GS2 ではプッシュ通知を AWS IoT で実現! ⇒
名前はアレだけど、IoT以外にも使える ⇒ MQTT/WebSocket で通信 ⇒ 10億のデバイスが接続しても⼤丈夫 GS2 では通知対象がオフラインの時にモバイルプッシュ通知に 転送する仕組みも実装 Game Server Services, Inc. https://gs2.io
トランザクション問題 DynamoDB にはトランザクション機能が無い ⇒ 魔法⽯を管理するサービスを提供中 ⇒ 資⾦決済法に該当するおそれのあるゲーム内通貨 ⇒ 残⾼管理や取引履歴は正確に記録する義務が発⽣ ⇒
Cloud DataStore を採⽤ ⇒ パフォーマンスを引き出すテクニックが DynamoDB とは⼤きく異なるので、注意が必要 Game Server Services, Inc. https://gs2.io
マイクロサービス間の情報保全 GS2はマイクロサービスを組み合わせてゲームを作る思想 ⇒ マイクロサービス間のデータの受け渡しに ⼀旦クライアントが挟まることも ⇒ 暗号鍵を管理するマイクロサービスを提供 ⇒ APIを経由して暗号化・復号化が可能 ⇒
サーバ⽤のアクセスポリシーでのみ暗号化・復号化可能 ⇒ マイクロサービスは暗号化した情報をクライアントに返す ⇒ クライアントはそのまま別のマイクロサービスに渡す Game Server Services, Inc. https://gs2.io
アクセス権限管理 GS2 では AWS の IAM を模したポリシー管理を提供 ⇒ Lambda 関数の先頭でポリシー判定
Lambda をコール ⇒ Python のデコレータで実装 ⇒ ポリシー判定 Lambda はAPIの呼び出しを許可するかを ポリシードキュメントから判定して応答 ポリシー判定 Lambda を独⽴させているのはなぜ? ⇒ ポリシードキュメントのキャッシュヒット率を⾼めるため Game Server Services, Inc. https://gs2.io
マネージメントコンソール GS2にもマネージメントコンソールが存在します ⇒ サーバレスで実現したかった ⇒ ⼀部プライベートAPIを使⽤して仕様を実現している ⇒ HTML+js では実現できない ⇒
やむなく EC2 で運⽤していた ⇒ Google App Engine Standard が Java8 に対応 ⇒ GAした当⽇にリリース ⇒ はれてマネージメントコンソールもサーバレス化 Game Server Services, Inc. https://gs2.io
Google App Engine の優れている点 モノリシックな設計のままサーバレス化できる ⇒ まったくそのままというのはさすがに無理 ⇒ GAE を⼀切意識していなかったが⼤部分が流⽤できた
FaaS は設計思想が全然違う ⇒イチから設計しないと動かせない 学習コストを抑えてサーバレス化を狙うならGAEが最善⼿ Game Server Services, Inc. https://gs2.io
マイグレーション時のポイント ホワイトリストAPI ⇒ 使えないAPIがある ⇒ 請求書のPDF出⼒で引っかかった ⇒ ローカルサーバだと例外が出るけど、 デプロイしたら動くことに気づく ⇒
Java8 ではホワイトリストAPIが無くなった ⇒ PDF出⼒もデプロイしたら動いた ⇒ バグ報告済みなのでそのうち直るはず GAE Java8 はめっちゃ⾃由度が⾼くなった Game Server Services, Inc. https://gs2.io
マイグレーション時のポイント データベース ⇒ 管理者アカウントなどで⼀部 MySQL を使っていた ⇒ Cloud DataStore で再実装した
スレッド ⇒ GS2 内の Cloud Formation に相当するサービスで使⽤ ⇒ TaskQueue を使った実装に再実装した コールドスタート ⇒ マイクロサービス毎に分かれていたのを統合 Game Server Services, Inc. https://gs2.io
正直、サーバレスでどこまで作れる? 低レイテンシ通信したい⽤途には今ある⼿札では厳しい GS2 にはマルチプレイ⽤のパケット中継サーバがあるけど、こ こだけは仮想サーバ でも、こんな厳しい要件はこのケースしか無いと思う REST API で実装しているような機能であれば、確実にサーバレ ス化可能
今回紹介したプッシュ通知の仕組みを使えば、サーバサイドから イベントをキック出来るので、設計の幅も広がる Game Server Services, Inc. https://gs2.io
サーバレス時代のゲーム開発 Game Server Services, Inc. https://gs2.io
ゲームサーバ開発の現状 ゲームサーバの機能の⼤部分はゲームの⾯⽩さに直結しない ⇒ プレゼントボックスとか、ログインボーナスとか ⇒ なのになぜか何回も作ってる ゲーム開発者が成すべきことは何? ⇒ かっこいいサーバシステムを作ること? ⇒
企画の細かい要求を全て満たしたゲームを作ること? ⇒ その「オリジナリティ」溢れた仕様は ゲームにとって本当に必要だとおもって実装してる? FaaS や PaaS でサーバレスもいいけど、 GS2 のような Functional SaaS を使うのもサーバレス Game Server Services, Inc. https://gs2.io
GS2 によって得られるメリット さらば。退屈なサーバシステム開発。 GS2 の提供する機能は⽇々増えている ⇒ サービス開始から1年でマイクロサービスの種類は10超 GS2 の提供するサービスで仕様が満たせる場合 ⇒
アプリエンジニアだけで開発可能 ⇒ GS2 SDK は Unity 向けのものも提供中 Game Server Services, Inc. https://gs2.io
GS2 によって得られるメリット さらば。サーバダウン。 未だにローンチ時のサーバダウンは無くならない ⇒ 設計ミス、バグが原因 全ての原因は再開発していること そろそろ この無限ループから抜け出しましょう Game
Server Services, Inc. https://gs2.io
GS2 によって⽣じるデメリット 詫び⽯がもらえなくなる。 安定した GS2 によって、詫び⽯が無くなる ⇒ 無課⾦プレイヤーからすれば由々しき⾃体 ⇒ ゲームの継続率にも悪い影響
どうやって予想外のご褒美をユーザに与えるかが課題 Game Server Services, Inc. https://gs2.io
BaaSを使うための意識改⾰ 僕たちがやりたい仕様を実現できるの? ⾃分で完全にコントロールしていた状態から 他⼈のプラット フォームに乗っかる場合、不透明感が不安だったり制限が息苦し く感じる これはオンプレミスのサーバからIaaSへ変わったときや、ゲーム エンジンが10年くらい前に通った道 その⾏き着く先は今の皆さんなら理解しているはず Game
Server Services, Inc. https://gs2.io
サーバレス時代の運⽤ Game Server Services, Inc. https://gs2.io
プラットフォーマーと仲良く ベンダーロックイン ⇒ 仮想サーバであれば、他の事業者に移したりできた ⇒ マネージドサービスにおいてロックインは避けられない ⇒ 怖いのは障害発⽣時 ⇒ 何かあったとき、すぐに状況を確認できるよう
プラットフォーマーと仲良くなっておきましょう Game Server Services, Inc. https://gs2.io
可視化 サービス状況の可視化はサーバレス時代にも必要 ⇒ だいたいのマネージドサービスは アクセス数などの指標もAPIで取れるようになっている ⇒ 重要な指標は簡単に⾒られるようにしておく Game Server Services,
Inc. https://gs2.io
是⾮GS2を⼀度お試しください! 登録から3ヶ⽉間有効な3万円分のクーポンをプレゼント中 お気軽にお試しください https://gs2.io/ ゲーム開発者の友達が居たら共有してもらえると助かります Game Server Services, Inc. https://gs2.io