ポノス:大人気ゲーム「にゃんこ大戦争」を Google Cloud へ移行、ユーザーへの影響を抑えつつ、モダナイズを実現
Google Cloud Japan Team
Tech Acceleration Program (TAP) は、ユーザー企業が DX の取り組みを加速させるために、クラウドネイティブな技術を活用して、実際のアプリケーションを題材に、迅速で効率的なアプリケーション開発を体験するアジャイル型のワークショップです。また、TAP ではアジャイルなアプリケーション開発を支援するための環境づくり(開発環境の整備やコンテナベースのプラットフォームの検討など)もご支援しています。
株式会社ポノスは 1990 年創業のゲーム会社です。家庭用ゲーム機向けやガラケー向けゲームのリリースを経て、2012 年にスマートフォン向けゲームアプリ「にゃんこ大戦争」をリリースしました。9,300万ダウンロードを突破した同作は、日本のみならず、英語、韓国語、中国語など、多数の言語に対応し、世界中で楽しまれています。
今回は、にゃんこ大戦争のシステムを支える白井様、橋詰様、宇佐美様にお話を伺い、AWS から Google Cloud への大規模な移行の背景や、Google Cloudの活用方法について詳しくお聞きしました。
利用している主なサービス:
Cloud Run, Cloud Spanner
利用している主なソリューション:
アプリケーションのモダナイゼーション
既存システムの課題
2012 年のリリース以来、世界中で 9,300 万ダウンロードを突破した大人気ゲーム「にゃんこ大戦争」。その開発当初は AWS 上でマイクロサービスとして運用されており、それぞれのサービスは AWS Elastic Beanstalk、Amazon Aurora、Amazon S3 で構成されていました。
しかし、ゲームの成長に伴い、いくつかの課題が浮上しました。マイクロサービスのサービスごとにプライマリ / スタンバイ構成の Amazon Aurora 環境を運用することによる 運用負荷の増加や、データ分析基盤には Google Cloud を採用していたことによる AWS との連携の煩雑さなどが顕在化してきたのです。
また、長年固定化されたインフラ環境を運用するエンジニアとしてのモチベーションが低下し、コンテナなど新しい技術を採用したいという開発チームの思いもありました。
Google Cloud への移行を決断
これらの課題を解決すべく模索していたところ、Google Cloud から Tech Acceleration Program(TAP)の提案を受け、それを機に移行を検討し始めました。Google Cloud の魅力は、コンテナ化されたアプリケーションを実行できるフルマネージドサーバレス実行環境 「Cloud Run」 と、フルマネージドのミッション クリティカルなデータベース サービス 「Cloud Spanner」の存在でした。特に、Cloud Runは、コンテナをデプロイするだけで自動的にスケーリングやロードバランシングを管理してくれるため、インフラ運用負荷の軽減に大きく貢献すると期待されました。また、Cloud Spanner は、フルマネージドで可用性が高く、しかもメンテナンスフリーという点が、24時間365日安定稼働が求められるゲームサービスにとって非常に魅力的でした。
2022 年と 2023 年の 2 度にわたって TAP に参加することで、Google Cloud への移行が現実的になってきました。TAP を通じて Cloud Run と Cloud Spanner の可能性を実感できただけでなく、Google Cloud のエキスパートからの技術的なアドバイスやサポートを受けられたことで、具体的な移行の方式や手順も明確になり、それが自信につながりました。その結果、2024 年の年初に Google Cloud への移行を会社に提案し、正式に決定されました。
白井様: レアケースの問題が発生した時も、Google Cloud のスペシャリストと協力して迅速に解決策を見出すことができました。また、移行プロジェクトにおける技術的な課題やアイデアについて、活発な議論を通じて解決策を模索することができました。
橋詰様: TAP でのプロトタイピングを通じて、Cloud Spanner の効率的な活用方法やデータベース設計のコツを得ることができました。
宇佐美様: Google Cloud のネットワーク構成や Cloud Spanner の仕組みについて深く理解し、コスト削減の具体的な方法を把握することができました。
TAP から生まれた「引越サービス」で実現する無停止移行
「にゃんこ大戦争」の移行プロジェクトは 2024 年の年初にはじまりました。最大の特徴はTAP でのディスカッションで生まれた「引越サービス」と名付けた独自開発の移行 API サービスです。このサービスを活用し、ユーザー体験に影響を与えることなく、無停止で移行予定です。
仕組みとしては、ユーザーが移行後のシステムに初回アクセスした際に、データがないことを確認すると、引越サービスにリクエストを投げて、 AWS から Google Cloud へ該当するユーザー データを移行します。それをユーザーのアクセスごとに行うのですが、自動的にコントロールするため、ユーザーがそれを意識することはありません。一定の移行期間の後、しばらくアクセスがない非アクティブユーザーのデータをまとめて移行させる計画です。このユーザーごとに移行を実施するアプローチにより、ユーザー体験を損なうことなく移行を行うことができます。従来、データベース移行はデータの整合性確保のため、ゲームの長時間停止を伴う場合が多かったのですが、この方法でユーザーへの影響を最小限に抑えることができます。
Google Cloud への移行により、ポノスでは様々なメリットを享受しています。まず、コンテナの導入により、開発環境と運用環境を統一し、環境構築の効率化ができました。また、マイクロ サービスごとに運用していた Amazon Aurora を Cloud Spanner に移行しつつ、データベースを集約することで、データベースにかかるコストを 40% 削減できる予定です。ストレージコストに関しても 20% 削減、全体で 15% のコスト削減を見込んでいます。さらに、Cloud Run や Cloud Spanner を利用することでメンテナンスによるダウンタイムを回避し、運用コストも削減できると考えています。
移行プロジェクトの舞台裏:苦労と工夫
今回の移行プロジェクトは、様々な課題と向き合いながら進めてきました。
まず、Cloud Spanner と Amazon Aurora のデータベース構造の違いから、既存のアプリケーションコードに修正が必要となりました。また、社内調整においても、経営層への移行のメリットの説明や、コスト比較の提示には時間を要しました。
また運用負荷増大の原因になっていた、複数のマイクロサービスについても再設計を実施しており、サービス自体を集約、数を減らしてメンテナンスを効率化し、効率的なモジュラーモノリスに構成し直しています。
さらに、エンジニアのモチベーション維持も重要なポイントでした。従来のインフラ環境では、長年固定化された構成での運用を続けることにより、エンジニアのモチベーションが低下していました。しかし、Google Cloud への移行によって、新しい技術に触れる機会が増え、エンジニアのモチベーション向上に繋がりました。
運用コストの削減も大きな課題の一つでした。従来の構成では、Amazon Aurora、AWS Elastic Beanstalk 、Amazon S3 を組み合わせた環境が複数存在し、それぞれの環境でメンテナンスが必要となりコストもかさんでいました。Cloud Spanner の移行時には複数の環境のデータベースを集約したことで、メンテナンスコストを大幅に削減し、運用を効率化することができました。
このように工夫を重ね、課題を一つずつ解決していくことで、最終的に成功を収めることができました。
AI サービスの利用も検討
また、ポノスでは、データ分析を強化するため、Google Cloud の BigQuery を活用していますが、今回、ゲーム基盤も Google Cloud に全て移行することで、データ分析がよりスムーズに行えるようになると考えています。さらに、チート対策をより強化するため、Google Cloud の AI サービスを活用することを検討中です。具体的には、クライアント側で不正に改ざんされたデータや、不正な操作によるデータなどを AI が自動的に検知し、対応することで、より効果的なチート対策が可能になると期待しています。
Google Cloud への期待
Google Cloud には、安定稼働と充実したマネージドサービスに大きな期待を寄せています。今後も Google Cloud の最新技術を活用し、「にゃんこ大戦争」をさらに進化させていきたいと思っています。
ポノス株式会社
スマートデバイス向けゲーム開発をゲーム事業における成長戦略の核と考え、自社で企画・開発するオリジナルゲームを App Store、Google Play 等のマーケットを通じて日本だけに留まらず海外市場に向けても配信しています。
今後、ゲームラインアップを充実させ、配信国も更に拡げていき、世界中の人々にゲームを届けていきます。
インタビュイー
ポノス株式会社
開発部 サーバーエンジニアチーム リーダー 白井 亨 様
開発部 サーバーエンジニアチーム 橋詰 翔健 様
管理部兼インフラエンジニア 宇佐美 裕章 様