Slide 1

Slide 1 text

モバイルゲームの バックエンド開発 特徴とサーバーエンジニアの役割

Slide 2

Slide 2 text

2 ● 略歴 ○ 大学卒業後 外資系SIer勤務 ○ Web系に転職 ○ 2018 コロプラ入社 ■ 白猫プロジェクトSREチーム ■ ドラゴンクエストウォーク SREチーム ■ サーバー基盤マネジャー兼SRE 氏名  : 部署名 : 松野 岳記 技術基盤本部 第2バックエンドエンジニア部 サーバー基盤グループ 自己紹介

Slide 3

Slide 3 text

目次 1. モバイルゲーム開発の流れ 2. ゲームバックエンドの特徴 3. バックエンド構成概要 4. 個人的に思うモバイルゲーム開発の楽しさ 5. まとめ 3

Slide 4

Slide 4 text

4 モバイルゲーム開発の流れ リリース 企画 設計 開発 制作 テスト 運用 アップデー ト アップデー ト 新機能 イベント

Slide 5

Slide 5 text

5 モバイルゲーム開発・運用に関わる職種 プロデューサー ディレクター シナリオライター プランナー  デザイナー  ・2Dデザイン  ・3Dデザイン サウンド  エンジニア  ・クライアント  ・サーバー  ・インフラ デバッガー CX マーケティング データサイエンス

Slide 6

Slide 6 text

6 ● クライアント ○ いわゆるゲームそのもの ○ ユーザーの手元の体験 バックエンドエンジニアの役割 ● バックエンド ○ ゲームの裏を支える ○ ゲームの継続した体験 ○ ユーザー間のつながり ○ 世界とのつながり

Slide 7

Slide 7 text

7 ゲームバックエンドの特徴 - 負荷のスパイク ● スパイクが極端 ○ 新コンテンツリリース時 vs 平常時 ○ デイリーボーナス更新タイミング

Slide 8

Slide 8 text

8 ゲームバックエンドの特徴 - モバイルネットワークの不安定さ ● 業務系と比べてシチュエーションが多様 ○ 家庭WiFiで机に向かってガチプレイ ○ 電車内で隙間時間 ○ 隠れてこっそりプレイ (見つかったらタスクキル)

Slide 9

Slide 9 text

9 ゲームバックエンドの特徴 - データ量 ● 全体 ○ 運用数年間分のイベント ○ リセマラという現実 ● バリエーション豊富なプレイスタイル ○ 10年間毎日プレイしてくれているユーザー ○ しばらくプレイしていなかったがコラボなどで再開したユーザー ○ 全イベントクリアしてくれるヘビーユーザー ○ 好きなキャラ、装備、クエストなどにフォーカスしてプレイしてくれるユーザー

Slide 10

Slide 10 text

10 バックエンド構成概要 - 全体 クラウドサービス( GCP) Kubernetes Cluster Monitoring Prometheus Async Servers GKE Pods Queue RabbitMQ, etc. Cache Redis Load Balancer KPI Analytics BigQuery Logs Cloud Logging ユーザー API Servers GKE Pods User Data Cloud Spanner Visualization Grafana クラウドサービス( AWS) CDN CloudFront Storage S3 Master Data MySQL, etc. Multiple Rplia PvP Servers GKE Pods

Slide 11

Slide 11 text

11 11 バックエンド構成概要 - プラットフォーム クラウドサービス( GCP) Kubernetes Cluster Monitoring Prometheus Async Servers GKE Pods Queue RabbitMQ, etc. Cache Redis Load Balancer KPI Analytics BigQuery Logs Cloud Logging ユーザー API Servers GKE Pods User Data Cloud Spanner Visualization Grafana クラウドサービス( AWS) CDN CloudFront Storage S3 Master Data MySQL, etc. Multiple Rplia PvP Servers GKE Pods ● GCP / Kubernetes (GKE) ○ リソースの柔軟性 ■ 負荷の変化 ■ 開発規模の増減

Slide 12

Slide 12 text

12 バックエンド構成概要 - ストレージ 12 クラウドサービス( GCP) Kubernetes Cluster Monitoring Prometheus Async Servers GKE Pods Queue RabbitMQ, etc. Cache Redis Load Balancer KPI Analytics BigQuery Logs Cloud Logging ユーザー API Servers GKE Pods User Data Cloud Spanner Visualization Grafana クラウドサービス( AWS) CDN CloudFront Storage S3 Master Data MySQL, etc. Multiple Rplia PvP Servers GKE Pods ● 物量とスピード両立のための使い分け ○ Cloud Spanner ■ スケーラビリティ ■ 耐障害性 ■ ユーザーデータ用 ■ 10msレベル ○ MySQLなどのRDB ■ Readのスケール ■ マスタデータ ■ 1桁msレベル ○ Redis ■ キャッシュ ■ nsレベル

Slide 13

Slide 13 text

13 バックエンド構成概要 - ステートレスAPIサーバー 13 クラウドサービス( GCP) Kubernetes Cluster Monitoring Prometheus Async Servers GKE Pods Queue RabbitMQ, etc. Cache Redis Load Balancer KPI Analytics BigQuery Logs Cloud Logging ユーザー API Servers GKE Pods User Data Cloud Spanner Visualization Grafana クラウドサービス( AWS) CDN CloudFront Storage S3 Master Data MySQL, etc. Multiple Rplia PvP Servers GKE Pods ● 運用性とモバイルネットワークの不安定さへの対 応 ○ ステートレス、冪等性 ○ リトライ前提

Slide 14

Slide 14 text

14 バックエンド構成概要 - ステートフルリアルタイムサーバー 14 クラウドサービス( GCP) Kubernetes Cluster Monitoring Prometheus Async Servers GKE Pods Queue RabbitMQ, etc. Cache Redis Load Balancer KPI Analytics BigQuery Logs Cloud Logging ユーザー API Servers GKE Pods User Data Cloud Spanner Visualization Grafana クラウドサービス( AWS) CDN CloudFront Storage S3 Master Data MySQL, etc. Multiple Rplia PvP Servers GKE Pods ● リアルタイムプレイ特化 ○ 複数プレイヤー ○ 低レイテンシ

Slide 15

Slide 15 text

15 バックエンド構成概要 - バックグラウンド非同期処理 15 クラウドサービス( GCP) Kubernetes Cluster Monitoring Prometheus Async Servers GKE Pods Queue RabbitMQ, etc. Cache Redis Load Balancer KPI Analytics BigQuery Logs Cloud Logging ユーザー API Servers GKE Pods User Data Cloud Spanner Visualization Grafana クラウドサービス( AWS) CDN CloudFront Storage S3 Master Data MySQL, etc. Multiple Rplia PvP Servers GKE Pods ● ユーザー体験外のバックグラウンド処理

Slide 16

Slide 16 text

16 バックエンド構成概要 - 期待されるスキル ● ストレージ ○ ストレージの使い分け ○ 強み弱みの理解 ● APIサーバー ○ ステートレス処理の組み合わせで継続したプレイ・運用を設計する能力 ○ ゲームデータのモデリングと安全性 ● マルチプレイヤーサーバー ○ 複数ユーザー状況下でのステータス設計 ○ ネットワーク含めた性能追求 ● 非同期 ○ データの横の繋がりの理解力

Slide 17

Slide 17 text

17 個人的に思うモバイルゲーム開発の楽しさ ● 多くの職種の方とともにモノを作る楽しさ ○ 自分にはない考え、発想に刺激される ○ 様々な方と意見を交えてブラッシュアップされていく ● これまでエンタメ・ゲームを楽しんできたことが開発で活きる ○ 技術・開発経験とは別の経験値が反映される ● ユーザー反応をリアルタイムに受け取れる ○ SNSなどでリアルな反応をもらえる

Slide 18

Slide 18 text

18 まとめ ● モバイルゲームの開発体制と流れについて ● ゲームのバックエンドとは ○ 基本的なWebアプリケーション構成を中心 ○ ゲームならではの特徴に対応 ■ スパイク ■ データ量とレイテンシ ■ リアルタイム通信 ○ 継続的に安全・快適な遊びを提供する

Slide 19

Slide 19 text

19 参考 過去のイベントやブログで今回の内容に紐づくもの ● 高負荷・高トラフィック環境における対策 ○ 高負荷/トラフィックなゲームの運用を支えるSRE ○ コロプラにおけるLaunch Coordination Engineeringの取り組み ○ サーバーサイド 白猫負荷対策チーム ● リアルタイム通信 ○ ゲーム開発におけるリアルタイム通信基盤とKubernetes/Agones