Cloud Functions for FirebaseはFirebaseに特化したCloud Functionsでいろんなサービスのトリガーを起点に起動できる特徴があります。
コードは Google のクラウドに保存され、マネージド環境で実行されます。独自のサーバーを管理およびスケーリングする必要はありません。
大きな特徴は下記になります。

- Firebaseプラットフォームを統合
- メンテナンス不要
- ロジックの機密性と安全性を維持
Cloud Functionsをプロダクション環境で使っている経験からメリット・デメリット(注意点)について深掘りしたいと思います。
Cloud Functionsのメリット
サーバーレスなのでモニタリングなどのメンテ不要
Cloud FUnctionsはGoogleのマネージドサーバ上でコンテナを実行するだけなのでサーバのCPUやメモリといったモニタリングが不要になります。
サーバがマネージドなのでスケーリング耐性を考える必要がないですし、課金は実行時間によるのでしようしないときはお金がかからないというメリットもあります。
最近はCloud Run on GKEというサービスが出て、自分で作成したGKEクラスタ上でCloud Functionsのような用途でコンテナを実行する環境も出てきているので要注目です。
いろんなサービスのイベントをトリガーに起動できる
Cloud FunctionsはFirestore、Storage、Authenticationなど様々なサービスのイベントをトリガーに起動することができるのですが、この機能が一番便利かもしれません。
例えばデータ変更されたタイミングでCloud Functionsを起動してCloud Messageからプッシュ通知を送ったり、Cloud Schedulerを使って定期実行のジョブとして起動することもできます。
この柔軟な連携機能がCloud Functionsの大きな利点でもあります。いろんな使い方をスライドにまとめているのでぜひ見てください。
Cloud Functionsのデメリット(注意点)
初回起動が遅い
Cloud Functionsに限らずですが、AWSのLambdaも初回起動が遅いですね。これはコンテナの起動に時間がかかるためです。
一度立ち上がってしまえば起動のオーバーヘッドはなくなるのでそこまでデメリットではないですが、ユーザ数が少なくてコンテナが常時立ち上げっていない場合は遅延がストレスになります。
トリガーは複数回呼ばれる可能性がある
トリガーで起動したCloud Functionsは複数回呼ばれる可能性があります。なので、冪等性を考慮して実装する必要があります。
課金処理をCloud Functionsで実行する場合は注意してください。
使える言語がNode.jsだけ
GCPの方のCloud Functionsでは最近、GolangとPythonが追加されましたが、Firebaseの方のCloud FunctionsではまだNode.jsしか使えません。
そこまでデメリットではないですが、複数言語でかける方がいいですね。これもそのうち対応されるかと思います。
まとめ
デメリットであげたのは全部注意点といった感じで実際にデメリットと感じることはほぼないですね。
Cloud Functionsは小さいサービスから大きいサービスまで幅広く対応できる柔軟性があるのでぜひ使ってみてください。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す