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
「魔法少女まどか☆マギカ Magia Exedra」におけるバックエンドの技術選定
Search
gree_tech
PRO
October 17, 2025
Technology
0
31
「魔法少女まどか☆マギカ Magia Exedra」におけるバックエンドの技術選定
GREE Tech Conference 2025で発表された資料です。
https://techcon.gree.jp/2025/session/TrackB-5
gree_tech
PRO
October 17, 2025
Tweet
Share
More Decks by gree_tech
See All by gree_tech
今この時代に技術とどう向き合うべきか
gree_tech
PRO
2
1.9k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
31
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
24
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
0
26
あうもんと学ぶGenAIOps
gree_tech
PRO
0
18
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
25
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
41
コンテンツモデレーションにおける適切な監査範囲の考察
gree_tech
PRO
0
17
新サービス立ち上げの裏側 - QUANT for Shopsで実践した開発から運用まで
gree_tech
PRO
0
18
Other Decks in Technology
See All in Technology
業務効率化をさらに加速させる、ノーコードツールとStep Functionsのハイブリッド化
smt7174
2
140
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
アイテムレビュー機能導入からの学びと改善
zozotech
PRO
0
170
フレームワークを意識させないワークショップづくり
keigosuda
0
200
セキュアな認可付きリモートMCPサーバーをAWSマネージドサービスでつくろう! / Let's build an OAuth protected remote MCP server based on AWS managed services
kaminashi
3
330
GoでもGUIアプリを作りたい!
kworkdev
PRO
0
150
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
80k
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
2
630
PHPからはじめるコンピュータアーキテクチャ / From Scripts to Silicon: A Journey Through the Layers of Computing Hiroshima 2025 Edition
tomzoh
0
140
AWSでAgentic AIを開発するための前提知識の整理
nasuvitz
2
170
Node.js 2025: What's new and what's next
ruyadorno
0
350
Digitization部 紹介資料
sansan33
PRO
1
5.5k
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Language of Interfaces
destraynor
162
25k
Git: the NoSQL Database
bkeepers
PRO
431
66k
How to train your dragon (web standard)
notwaldorf
97
6.3k
A Modern Web Designer's Workflow
chriscoyier
697
190k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Being A Developer After 40
akosma
91
590k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
20
1.2k
A designer walks into a library…
pauljervisheath
209
24k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Transcript
「魔法少女まどか☆マギカ Magia Exedra」における バックエンドの技術選定 株式会社WFS エンジニア 清水稔貴 1
清水 稔貴 経歴 23/4~ : 新卒入社 23/4 ~ :『SINoALICE』 23/11
~ :『アサルトリリィ Last Bullet』 24/10 ~ :『魔法少女まどか☆マギカ Magia Exedra』 株式会社WFS サーバーエンジニア 2
©2024 Magica Quartet/Aniplex,Magia Exedra Project ©WFS 3
©WFS 『魔法少女まどか☆マギカ』シリーズ歴代のシナリオや世界観を追体験! 歴代の魔法少女たちとともに記憶の光を集めながら魔女結界を探索していく ©2024 Magica Quartet/Aniplex,Magia Exedra Project 4
本講演について • 「魔法少女まどか☆マギカ Magia Exedra」ではGoogle Cloudを採用 ◦ ポケラボブランドでは初 ◦ 2025/3
国内・海外同時リリース • Google Cloudの採用背景について • 対応内容について • 過去運用タイトルに比べて、運用・費用のコストはどう変わったか 5
サーバー構成 6
7 技術選定する理由 なぜするの?
8 技術選定する理由 コストの抑制 コスト = サーバー費用, 人, 運用, 開発...etc
9 技術選定する理由 コスト = サーバー費用, 人, 運用, 開発...etc 運用できるの? 開発できるの?
性能は問題ない? コストの抑制
Google Cloud採用背景① - 前提ときっかけ • 技術選定時は「株式会社ポケラボ」 ◦ 2025/1に「株式会社WFS」と統合 ◦ 今まではGoogle
Cloud以外のサービスを用いていた • 当時WFS内でGoogle Cloud採用のプロダクトが増加 ◦ 運用実績のあるプロダクトを参考にできる ◦ 「今までのサービス」 or 「Google Cloud」 10
Google Cloud採用背景② - 抑制したいコスト 11 • 過去プロダクトにおける、DB(MySQL)コストの問題 サーバー費用 • サーバー費用全体の大部分を占める
• ポケラボはGvGのプロダクトが多い ◦ リアルタイムバトルが売り ◦ バトル用のDBを別で用意
Google Cloud採用背景② - 抑制したいコスト 12 運用(人的)コスト • DBのスペック変更 ◦ メンテナンス必須
◦ インフラチームとの連携 • シャーディング(水平分散)が必須 ◦ パフォーマンス向上のため ◦ スケールインが大変 サーバー費用 • サーバー費用全体の大部分を占める • ポケラボはGvGのプロダクトが多い ◦ リアルタイムバトルが売り ◦ バトル用のDBを別で用意 • 過去プロダクトにおける、DB(MySQL)コストの問題
13 Cloud Spannerを選定 Google Cloud採用背景② - DBコストの解決策
Google Cloud採用背景② - Could Spannerの魅力 • 簡単なスケーリング ◦ CPUやメモリ、ストレージの増減 ▪
ノード数の増減(ワンクリック or 自動)で実現 ▪ ダウンタイムなし ◦ シャーディング ▪ トラフィック変化に応じて自動で行う(スプリット分割) 14 node1 node2 nodeX
Google Cloud採用背景② - 抑制したいコスト 15 • 過去プロダクトにおける、DB(MySQL)コストの問題 サーバー費用 • サーバー費用全体の大部分を占める
• ポケラボはGvGのプロダクトが多い ◦ リアルタイムバトルが売り ◦ バトル用のDBを別で用意 運用(人的)コスト • DBのスペック変更 ◦ メンテナンス必須 ◦ インフラチームとの連携 • シャーディング(水平分散)が必須 ◦ パフォーマンス向上のため ◦ スケールインが大変
サーバー費用 • サーバー費用全体の大部分を占める • ポケラボはGvGのプロダクトが多い ◦ リアルタイムバトルが売り ◦ バトル用のDBを別で用意 運用(人的)コスト
• DBのスペック変更 ◦ メンテナンス必須 ◦ インフラチームとの連携 • シャーディング(水平分散)が必須 ◦ パフォーマンス向上のため ◦ スケールインが大変 Google Cloud採用背景② - 抑制したいコスト 16 • 過去プロダクトにおける、DB(MySQL)コストの問題 大幅削減
サーバー費用 • サーバー費用全体の大部分を占める • ポケラボはGvGのプロダクトが多い ◦ リアルタイムバトルが売り ◦ バトル用のDBを別で用意 Google
Cloud採用背景② - 抑制したいコスト 17 • 過去プロダクトにおける、DB(MySQL)コストの問題 無駄を抑える 運用(人的)コスト • DBのスペック変更 ◦ メンテナンス必須 ◦ インフラチームとの連携 • シャーディング(水平分散)が必須 ◦ パフォーマンス向上のため ◦ スケールインが大変 大幅削減
18 WFS内の導入実績 + Cloud Spannerによるコスト抑制見込み Google Cloud採用をした理由
19 技術選定する理由 コスト = サーバー費用, 人, 運用, 開発...etc 運用できるの? 開発できるの?
性能は問題ない? → WFS内の導入実績 コストの抑制
20 技術選定する理由 コスト = サーバー費用, 人, 運用, 開発...etc 運用できるの? 開発できるの?
性能は問題ない? → WFS内の導入実績 コストの抑制
21 性能面 • 「内製ライブラリ + Cloud Spanner 」 で問題なく動作するか 開発面
• ポケラボ内製ライブラリの改修 ◦ 長年の運用実績 ◦ Cloud Spanner用に改修 Cloud Spannerを導入するにあたっての課題
22 性能面 • 「内製ライブラリ + Cloud Spanner 」 で問題なく動作するか →
改修後に性能試験を実施 開発面 • ポケラボ内製ライブラリの改修 ◦ 長年の運用実績 ◦ Cloud Spanner用に改修 → Cloud Spanner特有の問題 Cloud Spannerを導入するにあたっての課題
• ホットスポット ◦ あるスプリットにアクセスが集中し、パフォーマンスが低下 ◦ スプリットは連続したキーの範囲で作成される • シーケンシャルなキーを用いると起きやすい 23 内製ライブラリの改修
- spanner特有の問題 pk=1~100 table A (shard1) pk=101~200 ・・・ pk=1001~1100 table A (shard2) table A (shard10)
• ホットスポット ◦ あるスプリットにアクセスが集中し、パフォーマンスが低下 ◦ スプリットは連続したキーの範囲で作成される • シーケンシャルなキーを用いると起きやすい ◦ 例)
pk=101~200が頻繁に読み書きされる→shard2にアクセスが集中 24 内製ライブラリの改修 - spanner特有の問題 pk=1~100 table A (shard1) pk=101~200 ・・・ pk=1001~1100 table A (shard2) table A (shard10)
• pkにAUTO_INCREMENTを用いているテーブル ◦ ある程度の桁数の数値でランダム生成 • ユーザーに紐づくテーブル ◦ userId + マスタIDの複合キーをpkとする
◦ 例) ユーザーが所持しているキャラクターのデータ → userId + characterId • マスタテーブル ◦ pkとなるIDは、マスタを作成しているプランナーが決めている ◦ app pod(アプリサーバー)起動時に一括で取得してサーバーキャッシュに載せる 25 内製ライブラリの改修 - ホットスポット対応
性能検証 - 概要 • 性能検証のため負荷試験を実施 ◦ 内製ライブラリ + Cloud Spannerの性能調査
◦ 改修したライブラリの動作確認 • リリース時のログインラッシュを想定したシナリオを用意 ◦ ログイン→プレゼント受け取り→各種ユーザーデータ取得→ガチャorクエスト周回 26
性能検証 - 目標設定 • 過去プロダクトを参考に目標値を設定 • シナリオ作成にはJMeterを使用 ◦ モニタリング: Grafana
◦ ログ調査: Cloud Logging 27 項目 RPS レスポンスタイム エラー率 目標値 15,000 Req/Sec p90: 300ms未満 p95: 400ms未満 < 0.01% (アプリ側のerror含む)
性能検証 - 手順 1. 1 pod, 1 ノードで捌けるRPS数を調査 ◦ podのCPU使用率が60%になるように、VMインスタンスも調整
2. 目標RPSに対してのpod数を試算 ◦ 目標値(1.5万) / 手順1でのRPS 3. 少しずつRPSとpod数を増やして、ノード数を調整 28
性能検証 - 結果 29 • 概ね目標値クリア ◦ GKEノードプールのマシンタイプ: c2-standard-16 ◦
app pod数: 140 (8 vCPU, 12Gi) • 加えて、検証過程で多く出ていたCloud Spannerのエラー対応 RPS spanner ノード数 レスポンスタイム エラー率 1.66万 35 p90: 376ms p95: 400ms 0.0002%
性能検証 - Transaction was aborted 30 • トランザクション間の競合によるエラー ◦ エラー件数:
480件 / 1000万 req ◦ 整合性のための排他制御故に、発生してしまうのは仕方がない • 1つのトランザクションで複数テーブルにアクセスする時に起きやすい ◦ 独自実装した処理 ◦ ライブラリのsingle-useでは発生しない → リトライが仕込まれていた • 独自の実装にもリトライを仕込む ◦ エラー件数: 480 → 12件まで減少
性能検証 - ホットスポットの監視 • Key Visualizer ◦ 横軸 = 時間
◦ 縦軸 = テーブルのキー(降順) • 色 = リソース使用の度合い ◦ 白くなればなるほどCPUを使用 • 問題となるようなテーブルは1件 ◦ pkのprefixが同じだった 31 Key Visualizerのヒートマップ例
32 技術選定する理由 コスト = サーバー費用, 人, 運用, 開発...etc 運用できるの? 開発できるの?
性能は問題ない? → グループ内の導入実績 → 内製ライブラリ改修 → 性能試験 コストの抑制
• 運用コストは激減 ◦ メンテナンスなし、サーバーエンジニアのみでDBスペック変更可能 ◦ シャーディングのスケールイン/アウトの手間もなくなった ▪ ホットスポットに注意 • 通常は少なめのノード数、施策リリース直前にあらかじめ増やす運用
◦ 急激なアクセス増加への対応 ◦ 過去プロダクトではやりにくかったこと ◦ 施策リリースもメンテナンスなし • リリース初期から目立った障害なし 33 実績 - 運用
• DB費用が約2~3割減 ◦ 過去の運営タイトルのリリース後~6ヶ月の費用と比較 ▪ ソロ主体のタイトル ▪ ユーザー規模は異なるため参考値 • まどドラの方がユーザー数は多い
• リリース時から比べてDB賃借料は7割まで減 ◦ 負荷を日々調査して少しずつスペックを下げる(メンテナンスなし) ◦ リリース1ヶ月後には半分ほどに削減 34 実績 - 費用
• 国内/海外ともに1リージョンで運用(東京リージョン) ◦ 国内に比べてレイテンシは悪化するが問題ないレベル ◦ 運用コスト抑制に繋がった ▪ 海外用にpodを配置する必要がない → デプロイコスト削減
▪ Cloud Spannerも1インスタンスで運用 → ノードの設定も共通 • Cloud Logging, Cloud Monitoringなどの活用できるサービスが多い ◦ 何も設定しなくても、GKEのpodのログが自動的に送信 35 その他の利点
• Cloud SpannerによるDBコスト抑制のため、Google Cloudを採用 ◦ きっかけはWFS内での採用実績 ◦ サーバー費用と人的コストの問題を解決できる見込み • Cloud
Spanner移行のため、内製ライブラリの改修と性能試験を実行 ◦ ポケラボ内製ライブラリをCloud Spanner用に対応 ◦ 内製ライブラリ + Cloud Spannerの負荷試験 • 運用コストは激減。費用も減。 ◦ 安定した稼働も続けられている! 36 まとめ
ご清聴ありがとうございました 37
38