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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yasutomo Uemori
PRO
January 17, 2024
Technology
1
440
いまどきのゲームサーバアーキテクチャ
社内でLTしたときの資料です
Yasutomo Uemori
PRO
January 17, 2024
Tweet
Share
More Decks by Yasutomo Uemori
See All by Yasutomo Uemori
よくわかる新収益認識基準
wakaba260
PRO
0
900
オンラインゲームのRails複数db戦略
wakaba260
PRO
0
80
Active job meets kubernetes
wakaba260
PRO
0
38
Ruby/Rails Benchmarking and Profiling with TDD
wakaba260
PRO
0
61
GCP・GKEで作るスケーラブルなゲーム開発環境
wakaba260
PRO
0
74
サービスクラス、その前に
wakaba260
PRO
0
38
Rails on Dockerとの戦い
wakaba260
PRO
0
37
Rubocopとの付き合い方
wakaba260
PRO
0
41
Rails api way in aiming
wakaba260
PRO
0
42
Other Decks in Technology
See All in Technology
型を書かないRuby開発への挑戦
riseshia
0
180
AIエンジニア Devin と歩む、自律型運用プロセスの構築
a2ito
0
680
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
44k
Security Diaries of an Open Source IAM
ahus1
0
200
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
6
860
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
140
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
360
Secure Boot 2026 - Aggiornamento dei certificati UEFI e piano di adozione in azienda
memiug
0
140
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
ソフトウェアアーキテクトのための意思決定術: Create Decision Readiness—The Real Skill Behind Architectural Decision
snoozer05
PRO
30
9k
大規模サービスにおける レガシーコードからReactへの移行
magicpod
1
130
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
740
Between Models and Reality
mayunak
2
230
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
79
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
280
How to make the Groovebox
asonas
2
2k
Thoughts on Productivity
jonyablonski
75
5.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
94
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
470
Documentation Writing (for coders)
carmenintech
77
5.3k
Transcript
いまどきの ゲームサーバ アーキテクチャ サーバエンジニア 植森 康友
今回のお話 ステートレスとステートフルの話に触れつつ いろんなサーバ構成の例を見て いまどきのゲームサーバの 全体アーキテクチャについて振り返る
お話の発端
お話の発端
とあるMMORPGのサーバ構成
Q. ステートフルゲームサーバのアーキテクチャが 重視しているポイントを2つ挙げてください
1. 負荷分散
2. サーバ費用
ステートフルゲームサーバのアーキテクチャが 重要視しているポイント 1. 負荷分散 2. サーバ費用 ➔ ステートレスなアーキテクチャが頭にあると 気づきにくいが実はスケーラビリティが重要視されている ※チート対策とかレイテンシとかももちろんある
MOの場合(空間コピー)
MMOの場合(空間分割+空間コピー)
さらにワールド分割でDBのボトルネックを回避
詳しくはオンラインゲームを支える技術を
ステートフルサーバアーキテクチャの 負荷分散手法 • 空間分割 • 空間コピー • ワールド分割 ➔ スケーラビリティとの戦いによる技術
➔ 「売れた時に規模を拡大したい」は昔から変わらない課題
古のゲーム開発からの時代の変化 • マシンコストの低下(メモリ、CPU、ディスク) • Web技術の発展 • アーキテクチャの進化(VM、クラウド、コンテナ) • ビジネス要求の変化
Web技術の採用 「剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術」より https://www.slideshare.net/satoshiyamafuji/cedec2014-logres-cedil
ビジネス要求の変化 グラブルのようなWebベースのゲームでもリアルタイム処理が必要な時代に 「グランブルーファンタジーを支えるインフラの技術」より https://speakerdeck.com/cygames/kuranhuruhuantasiwozhi-eruinhurafalseji-shu
ステートフルとステートレスの差が減りつつある
いまどきのステートレス vs ステートフル 簡単なwebアプリケーションなら、事前にデータフォーマットを定義し、リクエストを受けるたびに、DBからユーザの情報を読み取り、処理後DBに書き込みする ことが一般的です。ネットゲームにおいて、強いコンテキストを持ち、ユーザ間の連携も多いです。もし同じモードを採用すると、 DBの処理とロジックの処理の 間、ボトルネックになりやすい、このボトルネックネックは通常キャッシュをレイヤーを追加するだけで解決できないことが多いです 。 Skynetでゲームホストする場合は、同期的にデータをDBに保存することはおすすめしません、代わりにインメモリのDBに保存したほうが良い。 サービス、アプ
リロジックやゲームデータは全部メモリで常駐します。もしDBはあなたのフレームワークの一部でしたら、殆どの場合バックアップとして使うべき。データの状態 が変わったもしくは定期的にDBに保存します 。アプリは直接メモリからデータを呼びます。 • インフラ技術やミドルウェア、クラウドの発展によりDBのボトルネックは回避されやすくなった • インメモリ=アプリロジックの処理をどこでやるか?が決定的な差異 ➔ インメモリの処理をクライアントに依存しているのが今のステートレスサーバの正体 ➔ ビジネス要件がクライアントのインメモリ処理で事足りている(特にチート対策)
None
None
ステートフルサーバはMicro Serviceが必要 厳密にはMicroServiceではなく分散システム
剣と魔法のログレスのサーバ構成例 「剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術」より https://www.slideshare.net/satoshiyamafuji/cedec2014-logres-cedil
Proxyの採用による固定IPの排除 「Protect Multiplayer Game Servers From DDoS Attacks Using Amazon
GameLift」より https://aws.amazon.com/jp/blogs/gametech/protect-multiplayer-game-servers-from-ddos-attacks-using-amazon-gamelift-2/
Proxyの採用による固定IPの排除 とあるMMORPGの構成
Proxyの採用による固定IPの排除 「グランブルーファンタジーを支えるインフラの技術」より https://speakerdeck.com/cygames/kuranhuruhuantasiwozhi-eruinhurafalseji-shu
ステートフルサーバでもコンテナ技術を採用 「Kubernetesでステートフルなゲームサーバを動かした思い出」より https://link.medium.com/phnOduRALfb 「agones超入門」より https://medium.com/google-cloud-jp/agones-beginner-jp-5a6553e7e9a4
ステートレスではクラウドやサーバレスの採用 「ミリシタを支える GAE/Go」より https://www.slideshare.net/GoogleCloudPlatformJP/gaego-80349110 「AWSケーススタディ:Habby」より https://aws.amazon.com/cn/solutions/case-studies/habby/
どのアーキテクチャがいいのか
ゲームの要件によって 適切な構成は変化するので絶対の回答はない
まとめ • 時代の流れでステートレスとステートフルの差は減った • インメモリの処理をどこに寄せるかでアーキテクチャは大きく 変わる (チート対策、開発コスト、etc...) • 既存のアーキテクチャに学ぶ点は多いのでキャッチアップ大事 要件と相談してより良いアーキテクチャを検討していきましょう
ご静聴ありがとうございました