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.3k
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
Fraxinus00tw assembly manual
fukumay
0
130
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
650
手を動かしてレベルアップしよう!
maruto
0
230
What's new in Go 1.24?
ciarana
1
110
AIエージェント入門
minorun365
PRO
32
19k
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
130
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
5.2k
JAWS FESTA 2024「バスロケ」GPS×サーバーレスの開発と運用の舞台裏/jawsfesta2024-bus-gps-serverless
ma2shita
3
260
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
770
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
12
4.2k
システム・ML活用を広げるdbtのデータモデリング / Expanding System & ML Use with dbt Modeling
i125
1
340
JAWS DAYS 2025 アーキテクチャ道場 事前説明会 / JAWS DAYS 2025 briefing document
naospon
0
2.5k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Writing Fast Ruby
sferik
628
61k
Building Adaptive Systems
keathley
40
2.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
What's in a price? How to price your products and services
michaelherold
244
12k
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