こんにちは。バックエンドエンジニアのごましおです。
2023年2月9日、大規模モバイルゲームのローンチを支える技術 というタイトルのイベントを実施いたしました。
発表内容
新しいゲームのローンチ直後は非常に多くのユーザーさんが一斉にゲームにアクセスすることになり、ゲームバックエンドへの負荷は急激に高まります。このタイミングでサービス停止などの事態が起きてしまうと非常に大きな機会損失となってしまうため、コロプラではローンチ前の負荷試験に特に力を入れています。
今回はコロプラでのゲームのローンチに関する取り組みについて、次の項目でお話させていただきました。
「コロプラでローンチ前に実施している負荷試験」では、負荷試験全体の流れを紹介しつつ、試験に利用している gamebot という内製ツールの紹介、大規模な試験を効率的に行う工夫などに触れています。
gamebot は Golang で実装しているコロプラ内製の負荷試験用のツールで、独自の負荷試験の要件に最適化された機能を備えています。
実際に試験を行う際はサーバー費用などコスト面を効率化するため、 Spinnaker を利用して試験環境のスケーリングを行えるようにパイプラインを構築しています。
「ゲームのローンチに際してリアルタイムサーバーチームが取り組んだこと」では、内製リアルタイムフレームワーク Prizm を開発しているチームのメンバーがチームとしては初めて迎える大規模ローンチにあたって取り組んできたことを紹介しました。
前半では Prizm に導入されていた、もしくはローンチにあたって導入した機能の紹介として、通信の遅延・ロスをシミュレートする機能、通信切断時にセッションを維持する機能、通信頻度を計測する機能を紹介しました。
後半ではリアルタイムサーバーの観点から見た負荷試験について紹介しました。負荷試験の準備や実施において苦労したポイントや、負荷試験を実施したことで得られた知見についてお話させていただきました。
資料はこちらになります。
発表について補足
「安全なローンチを支える負荷試験」についての補足
発表内では時間が足りず触れられませんでしたが、資料にはデータベースのウォームアップについての内容も用意していたのでこの場で補足しておきます。
コロプラではゲームのユーザーデータを管理するために Google Cloud Spanner データベースを利用しています。
Spanner はトラフィック規模に応じたスケールを容易に行えるため、規模の読めないゲームタイトルの運用には非常に適しています。しかし、ゲームローンチ直後のようなトラフィックがほぼない状態からのスパイクには性能が追いつかず、サービス継続が難しいレベルで遅延が発生してしまいます。
これを回避するためには事前に Spanner をウォームアップしておく必要があるのですが、サービスごとの特性に沿った負荷をかける必要があるため、Spanner を利用している各社独自の手順でウォームアップされていることと思います。
アプリケーションの起動前にデータベースをウォームアップする | Cloud Spanner
コロプラでは過去に実施した勉強会でも Spanner のウォームアップについて紹介しています。
Spannerウォームアップについて /ColoplTech-02-03 - Speaker Deck
今回の資料では追加で以下の内容について紹介しています。
- 実際にウォームアップに利用している内製ツール spanner-warmer と dankichi
- 2022年に公開された Spanner のチューニングに関する公式記事
- コロプラが OSS として公開している Laravel 用の Spanner ドライバ colopl/laravel-spanner
特に Spanner をデータベースとして利用する場合は、一つの参考事例になるんじゃないかと思います。
「リアルタイムサーバーチームが初の大規模ローンチに向けてやってきたこと」についての補足
今回の発表ではゲームのローンチに向けた取り組みにフォーカスしてお話させていただいたため、コロプラで内製しているリアルタイムフレームワーク Prizm 自体についての話はほとんどしませんでした。
Prizm がどのようなものかという話については以前の ゲーム開発におけるリアルタイム通信基盤とKubernetes/Agones で発表させていただいてますので、そちらもご覧いただければと思います。
また、発表中に Google Cloud Profiler について紹介しましたが、こちらも 高負荷/トラフィックなゲームの運用を支えるSRE で紹介させていただいてますので、こちらもご覧いただければと思います。
最後に
多くの方々のご視聴いただき、また質問・コメントも多くいただき大変感謝しております。
今後も勉強会や技術ブログを通じて、エンジニアの方々に役立つコロプラの取り組みや技術情報を幅広く発信していきます。
次回イベントについては現在企画中となります。引き続きconnpassおよびtwitterで告知いたしますので、是非メンバー登録とフォローをよろしくお願いいたします。