こんにちは、クラウドエースの高島です。 昨今のゲーム市場では Google Cloud を採用した事例が多く、ここ数年は業界でも特に注目されています。 この記事では、Google Cloud のフルマネージドサービスである Cloud Run と Cloud Spanner をフル活用した、開発・運用コスト7割減を実現する Google Cloud ゲームインフラを紹介していきます。 目次 Toggle これまでのインフラ構成Cloud Run とはCloud Spanner とはおすすめインフラ構成開発環境料金ゲームインフラパッケージまとめ これまでのインフラ構成 VM インスタンスにアプリケーションや MySQL をインストールし運用するIaaS ベースのインフラ構成です。 インスタンスレベルで細かくチューニングできるため、汎用性はあるものの負荷によってWebサーバーを柔軟にスケールさせるのが難しかったり セキュリティパッチ当てやデータ整理などの深夜メンテナンスを実施した経験がある方もいらっしゃるのではないでしょうか。 深夜作業は人的コストも高く、エンジニアを大変疲弊させる問題がありました。 Cloud Run とは Cloud Runはコンテナ化されたアプリケーションをデプロイ・スケーリング可能なサーバレスコンピューティングプロダクトです。 様々なメリットがありますが、特筆すべき点は以下になります。 デプロイされたサービスはGoogle管理となり、リージョン単位で複数ゾーンに複製され冗長性を担保できる。 100ミリ秒単位の課金でトラフィックに応じてゼロから1000まで自動的にスケールし、トラフィックが少なければ無料枠におさまる。 また、Cloud Run はコンテナを扱うため、Container as a Service (CaaS) に分類されますが様々なアップデートにより、Platform as a Service (PaaS) にも近い、ハイブリットな位置付けだと筆者は考えています。 ※ IaaS・PaaS・SaaSなどの違いについては下記記事をご覧ください IaaS、PaaS、SaaS とは 概要や用途を5分で入門 Google App Engine (GAE) などの PaaS はソースコードを用意するだけで、アプリケーションを簡単に公開・運用できるメリットがあります。 一方、Google Kubernetes Engine (GKE) や Cloud Run の CaaS はユーザーがDockerFileを用意しコンテナをビルドしてアップロードする手間が必要で、Dockerに慣れないユーザーにとっては、少し敷居が高いものでした。 ソースコードからコンテナを作成 Cloud Run はデプロイコマンドに –source オプションを指定するだけで、 ソースコードからプログラミング言語を検出し、コンテナイメージ化したものを Artifact Registry と呼ばれるコンテナレジストリへと Push してくれます。 # ソースコードディレクトリ $ cd path/to/your/app # 「myapp」というサービス名と --source オプションを指定し、ワンライナーでデプロイ $ gcloud run deploy myapp --source=. https://myapp-<PROJECT_ID_HASH>-an.a.run.app デプロイが完了すると、上記のような一意なURLが発行されアクセスが可能になります。 ここまでの手順でDockerfileは作成していませんし、PaaSの特徴である「ソースコードを用意するだけで、アプリケーションを簡単に公開」ができました。 これが、CaaS と PaaS のハイブリットと言える所以です。 Cloud Spanner とは 一言で表現するとMySQLなどの「RDB構造」と非RDBの NoSQL が持つ「水平方向のスケーラビリティ」両方の特性と良さを持つデータベースです Google Cloud のデータベース群では RDB に位置付けされます。 テーブルスキーマ、ACID トランザクション、SQL(ANSI 2011) をサポートしており、 MySQL等のDBエンジンを触ったことがある方であれば、見慣れた構文になります。 また、業界最高水準の SLA を提供しており、 リージョナル 99.99% / マルチリージョン 99.999% です。 従来データベースでは、セキュリティパッチ当てや最適化のために夜間メンテナンスを定期的に行う必要があり、運用中にデータが肥大化していくとデータベースを分割(シャーディング)して負荷を軽減する対応が必要になることがありましたが、 Cloud Spanner はフルマネージドサービスのため、セキュリティパッチ当て・最適化・シャーディングなどの作業はありません。また、ダウンタイムもありません。 従来データベース Cloud Spanner メンテナンス ✕ 夜間作業等でメンテナンスによる停止 ◯ Google管理のため不要 高負荷時の対応 (スパイク対応等) ✕ スケールアップによる停止 ◯ 無停止のスケールアウト データベース最適化 (インデックス再構築等) ✕ 手動実施 ◯ 自動最適化 データベース分割 (シャーディング) ✕ アプリ改修やスキーマ再設計 ◯ 自動シャーディング 学習コスト ◯ 開発経験やナレッジが豊富 △ 基本はリレーショナルモデルだが、 キー設計などSpannerの特性を 理解して設計する必要がある おすすめインフラ構成 Cloud Run デプロイ時に発行されるURLをそのままアプリ側に組み込むことも可能ですが 東京と大阪でマルチリージョン化し、前段に Cloud Load Balancing (CLB) を立てることで 地方からのレイテンシーを向上させることが可能です。 WAF(Web Application Firewall)プロダクトの Cloud Aromor を CLB に紐づけることで、 DDoS対策・IP制限・地理制限等のセキュリティも担保できます。 Cloud Run・Cloud Spanner どちらもフルマネージドサービスのため、 運用コストが限りなくゼロになるほか、夜間などトラフィックが少ない場合はスケールインされるため、料金も抑えられます。 開発環境料金 開発中はアクセスが少ない為、ほとんどの場合 Cloud Run の無料枠内でご利用頂けます。 Cloud Spanner は最小インスタンスで1万円前後となります。 さらに費用を抑えたい場合は、Cloud Spanner エミュレータ を使用しても良いでしょう。 ゲームインフラパッケージ ここまで Cloud Run と Cloud Spanner を紹介してきましたが クラウドエースではゲーム業界のお客様向けに導入支援を行うパッケージをご用意しております。 本パッケージでは基本設計・トレーニング・サンプルコード解説などを徹底的に行うことで お客様自身がプロダクトを完璧に理解し、自信を持って運用できるようになることを目指しています。 パッケージ内容 現行インフラのTCOの可視化 現在のインフラから移行する際の費用対効果を明確にします。 基本設計書 IAM設計書 / 物理構成図のドキュメント作成 作成されず、引き継ぎがスムーズにいかないことが多いです。規参画メンバーのためにもCloud Aceがキッチリ作成します。 プロダクトトレーニング 運用自動化に向けて、Cloud Run / Spanner に特化した、勘所や注意点を含めたハイレベルトレーニングを実施します。 Terraformコードの提供 module化されたTerraformコードのサンプルを提供します。 サンプルコードの提供 Spanner Clinet Library for Go を使用したユーザー登録、ログインガチャ実行までのサンプルコードを提供します。 技術アドバイザー / 開発協力 実装上の問題にお答えします。一緒に悩みます。またご要望によっては準委任契約による開発協力も視野に入れています。 まとめ Google Cloud のフルマネージドサービスをフル活用することでサーバーエンジニア数名だけでインフラを構築・運用することができるようになりゲームのロジック開発に集中することができます。 「ゲームインフラパッケージの詳細をもっと聞きたい」 「Cloud Runに興味があるので、もっと聞きたい」 「Cloud Spannerに興味があるので、もっと聞きたい」 などなど、一つでもご興味がありましたらお気軽にご連絡ください。 他のクラウドサービスと比較してみよう GCP・AWS・Azure 3大クラウドサービス比較表では各社クラウドのあらゆるサービスや料金等の比較を網羅的に行なっております。よりクラウドサービスを体型的にご理解いただける内容となっておりますのでこちらもぜひお読みください。