見出し画像

FireBaseでソーシャルエンジン(ガチャゲー)を作る。どこまでコストを落とせるか

スマフォゲームの代表格とも言えるガチャゲームですが、制作費の高騰や運営がうまくいかず失敗した場合のリスクヘッジの問題などで、一時期よりは制作本数など勢いが落ち着いて来ているように感じます。

ガチャゲーにとって、サーバーは欠かせないものですが大多数アクセスに耐える仕組みなどで月維持費は、数十万〜百万規模、ブラウザゲーだともっとかかる場合もあります。月維持費だけでも大きいので運営がうまくいかないと、サーバー維持費だけで負担になり、サービスを終了する事になります。

CWではガチャゲーを作る場合、以前はサーバープログラムはPHP(CodeIgniter)とデータベースはMySQLの組み合わせで制作していましたが、3年ほど前からFireBaseを使った新しい仕組みでサーバー開発、維持費を軽減出来ないか取り組んできました。実際稼働している案件もありノウハウも溜まってきたのでまとめたいと思います。

FireBaseは色々なサービスが使えますがソーシャルエンジンを作る場合、以下の2つが特に重要になります。

●Cloud Functions -- サーバープログラム(NodeJS)
●FireStore -- データベース


この2つは、FireBase特有のサービスではなく、
Google Cloud Platform(GCP)のサービスですがFireBase上でより扱いやすくなっています。
他にもStorageや、FireBase特有のRealTimeDB、Authenticationなども駆使してソーシャルエンジンを作っていきます。

FireBaseのメリットは、性能はもちろんですが、その性能に対してコストが大きく抑えられる事とです。
スケーリングなどのサーバーインフラやサーバー管理など全てGoogle任せで、全部SSLなので、別途SSL代とかも気にする必要はありません。
サーバー構築費やサーバー管理システムの開発費等も一切発生しません。
もちろんデメリットもあるのですが、それは後述します。

制作した案件でまずは開発段階でサーバー費用がどれくらいかかったかを見ていきます。
プラットフォームはスマートフォンで、クライアント側はUnityで制作しています。

●インフラ構築代 --- 無料(Googleアカウントでプロジェクトを作るのみ
●DB(FireStore)  ---    実質無料(無料枠の1日につき5万回よみこみ、2万回書込みを開発段階で超える事はまずない
●SSL      --- 無料(別途とかの概念さえなく全てSSL)
●Cloud Functions ---    実質無料(無料枠を超える事は開発段階でまずない

以上のように開発段階では、サーバー関連の費用は、ほぼ0に抑えられていおり必要なコストはサーバープログラムの人件費のみとなっています。

実際以前は開発時は、無料プランのSparkでも事足りていたのですが2020年半ばにCloud Functionsが従量制プラン契約が必須になった為、現在は開発時でも従量制プランのBlazeが必須になります。
BlazeでもSparkで提供されてる内容を超えるまでは無料で、稀に帯域やGCP連携などで費用が発生する月もありますが、それでも月100円以下で抑えられています。

次に運営開始した本番で実際どれくらい費用が発生したかを見ていきます。
FireBaseは管理画面で使用料金が随時確認でき、UnityにFireBaseSDKを組み込んでおけばDAUや30分以内何人遊んでるとかの集計及び表示も行われるようになります。

スタート当初は、DAUは1万5千人程度で目標には遠く及ばなかったのですが、その状態で1日1000円いかない程度。
スタートが開始月中旬であった事と、DAUも徐々におちた事もありその月は

●DB(FireStore)  --- 3,964円  (データベース)
●Cloud Functions  ---    2,354 円(サーバープログラム)
●Cloud Strage       ---      10円(CSVやAssetBundleファイルなど格納
●RealTimeDB         ---            7円(簡易データベース、基本設定など格納

という結果になりました。
サーバー維持費として月20万円の予算はとっていたものの、従量制の理論データでしか月のサーバー費が出せてなかったので、「もし、20万超えしたら・・」の恐怖がありましたが、実際は半月1万円以下に収まりました。

断っておきますが、料金が従量制であるFireBaseは、サーバープログラムの出来、不出来で料金にも大きく影響します。又運営の内容でも変動する事も考えられます。あくまで上記の数値は目安とお考えください。

海外で、プログラムミスで2日間でサーバーアクセスが200万セッションを超え、料金が3日で300万円超えてしまった事例なども報告されています。
良くないプログラムを組むとFireBase(GCP)はスケーリング性能が大きい為、サーバーが落ちるような事はなく、料金がどんどん加算されてしまうのです。

又費用を抑える良いサーバープログラムは、サーバー負荷が少ない事に繋がります。使う場合は、サーバープログラムは十分検証する必要があります。

上記案件は、しばらくしてクライアント様から、点数を競うゲーム部分でランキング実装のお願いがきました。
ランキング自体は問題ないのですが、集計は1時間毎とかでなく完全リアルタイムでやりたいとお願いが来ました。

完全リアルタイムランキングだとFireBase費用が大きく跳ね上がる事が予想できましたが、予算は出すとの事で時間制ランキング案は受け入れてもらえませんでした。

この頃は、DAU5千人程度まで落ちており、FireBase料金は1日500円を切るようになっていました。しかし想像通りリアルタイムランキング実行日は、
1日1万円超え、日によっては2万円超えを記録しました。
ランキングイベントは全部で2週間ほど行われ、その月は

●DB(FireStore)  --- 201,955円  (データベース)
●Cloud Functions   ---        8,489円(サーバープログラム)
●Cloud Strage        ---      43円(CSVやAssetBundleファイルなど格納
●RealTimeDB          ---            0円(簡易データベース、基本設定など格納

という結果になりました。

繰り返しますが、上記はあくまで目安です。
運営内容やイベントの種類、人数やサーバープログラムのアルゴリズムの出来で料金は大きく変動する可能性があります。

以上の事からサーバープログラムをしっかり検証していれば、サーバー費用は大きく抑える事が確認されましたが、実際はDAUが何倍、何十倍もあるコンテンツ上でFireBase料金が数十万とかかかるアプリが成功と言える気がします。

FireBaseのスケーリング性能を考えれば、大規模コンテンツに向いてるとも言えますが、費用面で言えば小規模コンテンツ制作、及びサーバー予算を抑えたい案件などにも向いてるとも言えるのではないかと考えています。

運営失敗など考えてはいけませんが、もし失敗した場合サーバー費用も大きく下がりサーバー維持費が負担にならないのは安心できます。

最後にデメリットと感じてる部分をメモしておきます。

●FireStoreなどのDBがGCP特有のもので、MySQLとかと比べるとエンジニアが少ない。
●Googleがサーバー仕様をバージョンアップしていくので、サーバープログラムを仕様に合わせて改良していく必要がある。
※放置してしまうと、そのうち動かない時がやってくる。

機会があれば、FireStoreの自動バックアップのとりかたなどもメモっていこうかと思います。

この記事が気に入ったらサポートをしてみませんか?