\積極的に技術発信を行なっております/
▽ Twitter/COLOPL_Tech https://twitter.com/colopl_tech
▽ connpassページ http://colopl.connpass.com
▽ COLOPL Tech Blog http://blog.colopl.dev
モバイルゲームのバックエンド開発特徴とサーバーエンジニアの役割
View Slide
2● 略歴○ 大学卒業後 外資系SIer勤務○ Web系に転職○ 2018 コロプラ入社■ 白猫プロジェクトSREチーム■ ドラゴンクエストウォーク SREチーム■ サーバー基盤マネジャー兼SRE氏名 :部署名 :松野 岳記技術基盤本部 第2バックエンドエンジニア部サーバー基盤グループ自己紹介
目次1. モバイルゲーム開発の流れ2. ゲームバックエンドの特徴3. バックエンド構成概要4. 個人的に思うモバイルゲーム開発の楽しさ5. まとめ3
4モバイルゲーム開発の流れリリース企画設計開発制作テスト運用アップデートアップデート新機能イベント
5モバイルゲーム開発・運用に関わる職種プロデューサーディレクターシナリオライタープランナー デザイナー ・2Dデザイン ・3Dデザインサウンド エンジニア ・クライアント ・サーバー ・インフラデバッガーCXマーケティングデータサイエンス
6● クライアント○ いわゆるゲームそのもの○ ユーザーの手元の体験バックエンドエンジニアの役割● バックエンド○ ゲームの裏を支える○ ゲームの継続した体験○ ユーザー間のつながり○ 世界とのつながり
7ゲームバックエンドの特徴 - 負荷のスパイク● スパイクが極端○ 新コンテンツリリース時 vs 平常時○ デイリーボーナス更新タイミング
8ゲームバックエンドの特徴 - モバイルネットワークの不安定さ● 業務系と比べてシチュエーションが多様○ 家庭WiFiで机に向かってガチプレイ○ 電車内で隙間時間○ 隠れてこっそりプレイ(見つかったらタスクキル)
9ゲームバックエンドの特徴 - データ量● 全体○ 運用数年間分のイベント○ リセマラという現実● バリエーション豊富なプレイスタイル○ 10年間毎日プレイしてくれているユーザー○ しばらくプレイしていなかったがコラボなどで再開したユーザー○ 全イベントクリアしてくれるヘビーユーザー○ 好きなキャラ、装備、クエストなどにフォーカスしてプレイしてくれるユーザー
10バックエンド構成概要 - 全体クラウドサービス(GCP)Kubernetes ClusterMonitoringPrometheusAsync ServersGKE PodsQueueRabbitMQ, etc.CacheRedisLoad BalancerKPI AnalyticsBigQueryLogsCloud LoggingユーザーAPI ServersGKE PodsUser DataCloud SpannerVisualizationGrafanaクラウドサービス(AWS)CDNCloudFrontStorageS3Master DataMySQL, etc.Multiple RpliaPvP ServersGKE Pods
1111バックエンド構成概要 - プラットフォームクラウドサービス(GCP)Kubernetes ClusterMonitoringPrometheusAsync ServersGKE PodsQueueRabbitMQ, etc.CacheRedisLoad BalancerKPI AnalyticsBigQueryLogsCloud LoggingユーザーAPI ServersGKE PodsUser DataCloud SpannerVisualizationGrafanaクラウドサービス(AWS)CDNCloudFrontStorageS3Master DataMySQL, etc.Multiple RpliaPvP ServersGKE Pods● GCP / Kubernetes (GKE)○ リソースの柔軟性■ 負荷の変化■ 開発規模の増減
12バックエンド構成概要 - ストレージ12クラウドサービス(GCP)Kubernetes ClusterMonitoringPrometheusAsync ServersGKE PodsQueueRabbitMQ, etc.CacheRedisLoad BalancerKPI AnalyticsBigQueryLogsCloud LoggingユーザーAPI ServersGKE PodsUser DataCloud SpannerVisualizationGrafanaクラウドサービス(AWS)CDNCloudFrontStorageS3Master DataMySQL, etc.Multiple RpliaPvP ServersGKE Pods● 物量とスピード両立のための使い分け○ Cloud Spanner■ スケーラビリティ■ 耐障害性■ ユーザーデータ用■ 10msレベル○ MySQLなどのRDB■ Readのスケール■ マスタデータ■ 1桁msレベル○ Redis■ キャッシュ■ nsレベル
13バックエンド構成概要 - ステートレスAPIサーバー13クラウドサービス(GCP)Kubernetes ClusterMonitoringPrometheusAsync ServersGKE PodsQueueRabbitMQ, etc.CacheRedisLoad BalancerKPI AnalyticsBigQueryLogsCloud LoggingユーザーAPI ServersGKE PodsUser DataCloud SpannerVisualizationGrafanaクラウドサービス(AWS)CDNCloudFrontStorageS3Master DataMySQL, etc.Multiple RpliaPvP ServersGKE Pods● 運用性とモバイルネットワークの不安定さへの対応○ ステートレス、冪等性○ リトライ前提
14バックエンド構成概要 - ステートフルリアルタイムサーバー14クラウドサービス(GCP)Kubernetes ClusterMonitoringPrometheusAsync ServersGKE PodsQueueRabbitMQ, etc.CacheRedisLoad BalancerKPI AnalyticsBigQueryLogsCloud LoggingユーザーAPI ServersGKE PodsUser DataCloud SpannerVisualizationGrafanaクラウドサービス(AWS)CDNCloudFrontStorageS3Master DataMySQL, etc.Multiple RpliaPvP ServersGKE Pods● リアルタイムプレイ特化○ 複数プレイヤー○ 低レイテンシ
15バックエンド構成概要 - バックグラウンド非同期処理15クラウドサービス(GCP)Kubernetes ClusterMonitoringPrometheusAsync ServersGKE PodsQueueRabbitMQ, etc.CacheRedisLoad BalancerKPI AnalyticsBigQueryLogsCloud LoggingユーザーAPI ServersGKE PodsUser DataCloud SpannerVisualizationGrafanaクラウドサービス(AWS)CDNCloudFrontStorageS3Master DataMySQL, etc.Multiple RpliaPvP ServersGKE Pods● ユーザー体験外のバックグラウンド処理
16バックエンド構成概要 - 期待されるスキル● ストレージ○ ストレージの使い分け○ 強み弱みの理解● APIサーバー○ ステートレス処理の組み合わせで継続したプレイ・運用を設計する能力○ ゲームデータのモデリングと安全性● マルチプレイヤーサーバー○ 複数ユーザー状況下でのステータス設計○ ネットワーク含めた性能追求● 非同期○ データの横の繋がりの理解力
17個人的に思うモバイルゲーム開発の楽しさ● 多くの職種の方とともにモノを作る楽しさ○ 自分にはない考え、発想に刺激される○ 様々な方と意見を交えてブラッシュアップされていく● これまでエンタメ・ゲームを楽しんできたことが開発で活きる○ 技術・開発経験とは別の経験値が反映される● ユーザー反応をリアルタイムに受け取れる○ SNSなどでリアルな反応をもらえる
18まとめ● モバイルゲームの開発体制と流れについて● ゲームのバックエンドとは○ 基本的なWebアプリケーション構成を中心○ ゲームならではの特徴に対応■ スパイク■ データ量とレイテンシ■ リアルタイム通信○ 継続的に安全・快適な遊びを提供する
19参考過去のイベントやブログで今回の内容に紐づくもの● 高負荷・高トラフィック環境における対策○ 高負荷/トラフィックなゲームの運用を支えるSRE○ コロプラにおけるLaunch Coordination Engineeringの取り組み○ サーバーサイド 白猫負荷対策チーム● リアルタイム通信○ ゲーム開発におけるリアルタイム通信基盤とKubernetes/Agones