Cloud Firestoreのメリット・デメリットについて




Cloud FirestoreはFirebaseのサービスの1つで下記特徴があります。

 

Google の柔軟でスケーラブルな NoSQL クラウド データベースを使用して、クライアント側開発とサーバー側開発のデータを保存、同期します。

 

 

  • 柔軟性
  • 高機能なクエリ処理
  • リアルタイムアップデート
  • オフラインサポート
  • 拡張性のある設計

 

これらに対して実際にプロダクション環境で使った経験談を深掘りしたいと思います。

 

Cloud Firestoreのメリット

クライアントからリアルタイムにデータを取得できる

Cloud Firestoreの1番のメリットはサーバを介さずに直接Firestoreにアクセスでき、リアルタイムに更新されたデータを取得できることですね。クライアントはリアルタイムに取得したいコレクションとドキュメントに対してListenするだけで簡単に実現できます。

 

Firestoreを使わずに実現しようとするとWebsocketサーバを用意し、スケーリングを考慮してRedisのPub/Subを使ったり、コネクションが切れたら再接続処理を入れたりと考慮すべきことがものすごく多くなります。

 

Firestoreであればチャット機能は数分あれば作ることができます。さらにブラウザとスマホの両方から簡単に扱うことができます。

>>Cloud Firestoreでリアルタイムチャットを開発する

 

冗長構成でデータベースの管理コストがいらない

MySQLなどを自前で運用するとスペックの選定からマスタ・スレーブ構成を構築して、常にDBサーバのメトリクスを監視する必要があります。

 

Firestoreはマネージドサーバで管理されていて、複数リージョンにデータが複製されているため冗長構成を管理する必要がありません。

 

負荷に関しては世界規模のサービスに耐えるスケーリング性能を持っていると公式ドキュメントに書かれています。

世界でも最大規模のアプリからの最も過酷なワークロードに対応できるように設計

 

Cloud Functions for Firebaseとの連携が強力

FirestoreとFunctionsの連携はものすごく強力ですね。トリガーで発火したFunctionsは複数回呼ばれる可能性があるので冪等性を考慮して実装する必要はありますがデメリットとまでは行かないです。

 

FirestoreのバックアップもFunctions経由できますし、サーバを全く必要とせずにグローバルレベルにスケールするサービスを構築することができます。

Cloud Firestoreのデメリット

クエリが弱い

高機能なクエリ処理とありますが、現状はかなり弱いと言わざるを得ないですね。

 

例えばここら辺ですね。

  • ノットイコールなクエリはできない
  • 最近まではサブコレクションにクエリをかけられなかった
  • Like検索がない。Like検索っぽいことはできるみたいですが。詳細はこちら
  • or検索ができない

 

今後改善されていくと思うので期待は大ですが。

 

更新が多いサービスはきつそう

ゲームのように自分以外のデータを複数人で更新するようなサービスには適していないように思います。データベース設計でどうにかできるかもしれないですが、複雑になりそうです。

 

ドキュメントに対する時間当たりの書き込み数も制限されていることも更新が多いサービスには不向きかと思います。

 

まとめ

基本的にFirestoreはいいことだらけなので個人開発レベルであれば考慮する必要もなくFirestoreでいいですね。めちゃくちゃでかいサービス、複雑なDB設計を必要とするものだけ検討すればいいかと思います。

 

まだまだ内容が少ないので随時書き足して行きます。本日は以上です。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です