Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
真のサーバレスアーキテクトとサーバレス時代のゲーム開発・運用
Search
Kazutomo Niwa
November 03, 2017
Technology
10
16k
真のサーバレスアーキテクトとサーバレス時代のゲーム開発・運用
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
790
Production-ready Amazon Event Bridge
kazutomo
2
980
もうそこまで迫っている! Cloud2.0 時代の開発
kazutomo
3
1.7k
Game Server Services ではじめる サーバ開発運用しないゲーム開発
kazutomo
1
7.3k
Cloud2.0時代のゲーム開発を支えるGS2
kazutomo
1
2k
Unityネットワーク完全に理解した.pdf
kazutomo
3
3.1k
サーバレスアプリケーションの監視・運用
kazutomo
13
6.5k
ゼロからサーバレスの先頭に追いつこう
kazutomo
25
12k
Other Decks in Technology
See All in Technology
ミスが許されない領域にAIを溶け込ませる プロダクトマネジメントの裏側
t01062sy
6
6k
【ASW21-01】STAMPSTPAで導き出した課題に対する対策立案手法の提案
hianraku9498
0
420
TimeTreeが経た3つの転換点 ー プロダクト成長過程でその時、その瞬間、何を考えてたか
ysmtysts
1
2.5k
Raspberry Pi 秋の新製品をチェックしてみよう / 20231202-rpi-jam-tokyo
akkiesoft
0
320
ドメインロジックで考えるテスタビリティ
leveragestech
1
270
Ruby on Browser - RubyWorld Conference 2024
tmtms
1
100
今はまだ小さい東京ガス内製開発チームが、これからもKubernetesと共に歩み続けるために
yussugi
3
560
アジャイルテストの4象限で考える プロダクト開発の品質への向き合い方
nagano
1
180
開志専門職大学特別講義 2024 オープニング
1ftseabass
PRO
0
220
MySQL 8.0 から PostgreSQL 16 への移行と RLS 導入までの道のりと学び
baseballyama
0
660
pmconf2024_UPSIDER
upsider_tech
0
5.3k
2000年てづくりキーボードの旅
tagomoris
1
130
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Designing the Hi-DPI Web
ddemaree
280
34k
The Cult of Friendly URLs
andyhume
78
6.1k
RailsConf 2023
tenderlove
29
920
The Language of Interfaces
destraynor
154
24k
A Tale of Four Properties
chriscoyier
157
23k
Navigating Team Friction
lara
183
15k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
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