コンテンツに移動
Google Cloud for Games

株式会社10ANTZ:Google Cloud のマネージド サービスで、開発者がコンテンツに集中できる開発環境を実現

2020年12月10日
https://storage.googleapis.com/gweb-cloudblog-publish/images/hero_image_10antz.max-2600x2600.jpg
Google Cloud Japan Gaming Team

利用している Google Cloud サービス:Google Kubernetes Engine(GKE)Cloud SQLMemorystoreFirestoreCloud LoggingCloud MonitoringDeployment Manager、  など

GKE とフルマネージドなデータストア等を活用してインフラ管理コストを削減

https://storage.googleapis.com/gweb-cloudblog-publish/images/10ANTZ_ahuriimeshiSu_Cai_BlogYong__small.max-1000x1000.jpg

「ファンとアーティストの “ありがとう” をつなぐ」をミッションに、デジタル コンテンツの企画・開発・運営を手掛ける株式会社 10ANTZ は、新型コロナウィルスの影響により、ライブ活動や握手会・ハイタッチ会等のイベント開催が中止・延期になっている昨今、ファンとアーティストがオンラインでコミュケーションが取れるアプリ「PJ Salmon(仮)」を開発しました(リリースは 2021 年予定)。

「PJ Salmon(仮)」は、ファンとアーティストが大切にしてきたコミュニケーションの場である握手会などの対面イベントを、オンラインで楽しめるアプリです。また、握手会とは異なる形の複数人参加型のイベントでも、オンラインで双方向に直接コミュニケーションできるライブ配信機能の開発も平行して進めています。ライブ配信機能では、ライブ配信中に 1 対 1 のオンライン トークが楽しめたり、クイズやアンケートといった、ゲーム要素も取り入れられています。

バックエンドの API サーバには Google Kubernetes Engine(GKE)を採用。機能ごとにコンテナ化されることによって、必要な API を必要な分だけスケールさせ、コストの最適化を図っています。ユーザー情報やイベント情報の管理には、Cloud SQL や Memorystore を活用。マネージド サービスのためインフラ管理コストの削減が可能となり、その分開発に時間を割けるようになりました。

また、コア機能であるビデオ通話の制御にはリアルタイム性が求められるため、各端末やサーバー間でのメッセージング、及び、ステートの管理に Firestore を採用。高速でサーバーレスのフルマネージド型 NoSQL データベースである Firestore の活用により、ここでもインフラの管理コストの削減を実現しています。これらの環境構築は、Deployment Manager を利用して容易に構築できるようにしています。 

並行開発しているアプリにおいては、「PJ Salmon(仮)」で作成した Deployment Manager を利用することによって、環境構築にかかる手間の削減を実現しました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/10ANTZ_gcpShi_Li__shisutemuGou_Cheng_Tu__f.max-2000x2000.jpg

開発者の声

株式会社10ANTZ リードエンジニア 芳賀 幸一郎 さん、同じくリードエンジニア 牟田口 剛さんにお話を伺いました。

ー Google Cloud 採用の理由

「CTO を含め開発メンバーが、Google Cloud INSIDE や Cloud on Air を通じてマイクロサービス アーキテクチャに対して高い関心を持っていました。『PJ Salmon(仮)』は、開発初期から事業拡大を見据える必要があったため、再利用性・保守性・拡張性を優先しようと決めていたので、マイクロサービス アーキテクチャを実践することに決めました。

10ANTZ ではマイクロサービス アーキテクチャのノウハウを持っていませんでしたが、前述の Google Cloud INSIDE や Cloud on Air 等において、GKE を利用したマイクロサービスのソリューションがわかりやすかったことと、Google Cloud のカスタマーエンジニアに Google Cloud ソリューションを活用したマイクロサービス アーキテクチャの相談をしたところ、複数のソリューションでの実現方法を提案頂けたことの2点から採用に踏み切りました。

『PJ Salmon(仮)』は、これからの事業拡大の要となるコンテンツであり、競合他社も多いため、開発がボトルネックになって事業の成長スピードを止めたくないという思いがありました。従って、開発者にとってコンテンツ制作に注力できる必要がありましたが、Cloud SQL や Memorystore といった、マネージド サービスを GKE から簡単に利用することができたことから、開発者はよりコンテンツに集中して開発を進める事ができました。さらに、GKE と Cloud Logging や Cloud Monitoring の連携もされていますので、問題が起きた時も迅速に調査する事ができました。」(牟田口さん)

ー GKE 採用の理由

「カスタマーエンジニアからは、GKE 以外に下記のソリューションを提案していただきました。
・App Engine を利用したマイクロサービス アーキテクチャ
・Cloud Run を利用したサーバレス アーキテクチャ
どちらもフルマネージドですし、オートスケール機能もあるので 10ANTZ 側の要件を満たしていましたが、事業拡大を視野に入れるとサービス メッシュは柔軟に定義できた方が良いと感じていたため、GKE を選択しました。」(芳賀さん)

ー Istio を利用した GKE マルチクラスタ サービスメッシュ構築

「ライブ配信機能では、一部『PJ Salmon(仮)』のユーザーデータ情報を共有する必要があったり、『PJ Salmon(仮)』のマイクロサービスをそのまま利用する必要がありました。ライブ配信機能は、Google Cloud プロジェクトも 『PJ Salmon(仮)』とは別のプロジェクトでした。当初は、『PJ Salmon(仮)』の Google Cloud プロジェクトで利用している Container RegistryGCR、Cloud SQL などに、別の Google Cloud プロジェクトからアクセスできるように IAM の追加や VPC peering を検討していましたが、管理コストが膨れ上がってしまう懸念を抱えていました。そのため、Istio を利用してマルチクラスタのサービス メッシュを構築することにしました。

Google Cloud のソリューション記事では、GKE + Istio を利用した具体的なサンプル アプリケーションでの構築手順がまとまっていて、手順通りにやれば特につまずくことはなく構築可能になっているのがとても助かりました。

実はマルチクラスタ構築当時は、Istio の v1.8 がリリースされていなかったので、マルチクラスタを実現するために行なったのは .global ドメインを利用したメッシュ構築でした。

v1.8 がリリースされてから .global ドメインを利用した手法は beta に移行してしまったため、共有コントロール プレーンを利用する必要がでてきました。

Google Cloud のソリューション記事も共有コントロール プレーンを利用する方法に更新されており、こういった状況の変化に迅速に対応してくれるのも Google Cloud の良いところだと感じています。」(芳賀さん)

ー Google Cloud を選んで良かったこと

「Cloud Spanner や Cloud Run など、魅力的なソリューションはたくさんありますが、今回は手厚いサポートをいただけて非常に助かりました。10ANTZ は初めての GKE ということもあり、最初は右も左もわからない状態でしたが、Google Cloud の営業担当者から、Google Cloud 主催の勉強会の案内や、今回のアーキテクチャに近い過去のイベント資料などを提供いただき、また、カスタマー エンジニアには、システム アーキテクチャについて相談に乗ってもらえました。

また、第一回 E.G.G. というゲーム業界で働くエンジニア向けの学習プログラムに参加させていただきました。全部で 3 回あるセッションでは、Google Cloud のカスタマー エンジニアが 各種サービスの使い方を紹介してくれたのですが、“本番用 GKE クラスタの構築で知っておくといいこと” など、実際に利用する現場のエンジニアにとって有益なセッションとなっていました。 

Google Cloud の魅力的なソリューション以外でも、Google Cloud を選択して間違いはなかったと思っています。」(芳賀さん)

ー 今後の展望

「今後は、事業拡大に伴って、Cloud SQL で管理しているデータを Cloud Spanner へ移行することも視野に入れています。また、10ANTZ はゲーム事業も行っていますので、今回得た GKE のノウハウを、今後はゲーム事業側でも展開していきたいと考えています。」(牟田口さん)

https://storage.googleapis.com/gweb-cloudblog-publish/images/10ANTZ_Haga-san_Mutaguchi-san_For_Blog.max-1000x1000.jpg
(左から、リードエンジニア 芳賀 幸一郎さん、同じくリードエンジニア 牟田口 剛さん)

Google Cloud Japan 担当カスタマー エンジニアより

今回のプロジェクトでは、将来の事業成長に対する柔軟性と、開発者がコンテンツに集中して開発できる環境作りの両面を見据えて、各アプリケーション サービス毎に特性を考慮し、Google Cloud のマネージド サービスを適材適所で採用してくださいました。今回採用されている Cloud Firestore のネイティブ モードは、フルマネージドでサーバーレスなドキュメント指向 NoSQL データベースで、Firebase とのインテグレーションも可能な製品です。(Google Cloud CE  渡辺 光一)


株式会社10ANTZ
株式会社10ANTZは、2013 年の設立以来一貫して、「ファンとアーティストの “ありがとう” をつなぐ」をミッションに掲げ、アーティストとデジタル コンテンツを融合させた新しい形のサービスを展開。2016 年にリリースしたゲームアプリ「乃木恋」は、累計 850 万ダウンロードを突破し同社を代表するタイトルへ成長。また、11 月にリリースしたばかりの、日向坂46を起用した最新タイトル「ひなこい」も好評。現在はゲームアプリだけはなく、これまで培ってきたゲーミフィケーションのノウハウを活かした、新たなオンライン コミュニケーション サービスも開発中。「総合デジタルエンタメ企業」としてエンターテインメントに新たなスタンダードを創り出すことを目指しています。


その他の導入事例はこちらをご覧ください。

投稿先