
Cloud Functionsは2017年にβ公開、2018年7月にGAとなったGoogle CloudのFaaS(Function as a Service)である。AWS Lambda(2014年)、Azure Functions(2016年)に追従する形で登場し、関数単位でコードをデプロイし、HTTPリクエストやPub/Subメッセージ、Cloud Storageオブジェクト変更などのイベントで自動起動させる。近年はバージョンが大きく改められ、第2世代(2nd gen)からは内部実装がCloud Runベースになり、より大きなメモリやWebSocket対応など機能が拡張された。本記事では世代別の違い、トリガの仕組み、そして他サーバレスとの棲み分けを整理する。
この記事の目次
- 第1世代と第2世代、実装の刷新
- イベントトリガとEventarc
- Functions Frameworkと開発体験
- Cloud RunやApp Engineと比べたとき
- まとめ
第1世代と第2世代、実装の刷新

Cloud Functionsには現在「第1世代」と「第2世代」という2つのリリースが並走している。第1世代は2017年からの伝統的なFaaSで、Node.js、Python、Goなど主要言語に対応し、HTTPかEventarcなどのイベントで起動する。実行時間は最大540秒、メモリは最大8GBまでといった制約がある。
2022年に発表された第2世代は、内部実装をCloud Run上に置き換え、コンテナ化されたランタイムで動く。実行時間は最大60分まで延長され、メモリも最大32GB、同時並列リクエストにも対応する。第2世代の関数は実体としてCloud Runのサービスでもあり、ConsoleからもCloud Runのリビジョンとして見える点に注意したい。
イベントトリガとEventarc

Cloud Functionsの真骨頂はイベント駆動である。Cloud Storageへのオブジェクト追加、Firestoreのドキュメント変更、Pub/Subのメッセージ到着、Cloud Audit Logsの記録など、多くのGCPイベントを起点に関数を呼び出せる。「ファイルがアップされたらサムネを作る」「課金イベントが流れたら集計を回す」といった構成を、サーバ運用ゼロで組み立てられる。
第2世代以降のイベント配信は「Eventarc」と呼ばれる統一イベントバスを介して行われる。Eventarcは内部的にPub/SubとCloud Audit Logsを束ね、CloudEvents仕様に沿った形で関数を呼び出す。標準仕様準拠であるため、同じイベント定義をKubernetes向けのKnative Eventingでも扱えるなど、ロックインを軽減する工夫が見える。
Functions Frameworkと開発体験

開発体験面ではOSSの「Functions Framework」が提供されており、ローカルPCでもCloud Functionsと同じインターフェースの関数を動かせる。これにより「クラウドで動かしてはじめてエラーが分かる」という従来のFaaSあるあるが軽減され、ユニットテストもしやすくなった。Functions FrameworkはGCP外でも動くため、関数の移植性も比較的高い。
デプロイはgcloud functions deploy一発で、ソースコードを渡すとCloud BuildとBuildpacksが内部でコンテナをビルドしてくれる。Dockerfileを書かなくてもよいうえ、Secret Managerに格納した秘密情報を環境変数として安全に注入できる。Cloud Schedulerと組み合わせれば定期実行のバッチ的処理にも利用でき、小規模サービスの「裏側全部」を関数で完結させる構成も珍しくない。
Cloud RunやApp Engineと比べたとき

Cloud Functionsの利用シーンは「ひとつのイベントに対して、ひとつの小さな処理を返す」関数規模が最も自然である。サムネ生成、Webhook受け、Audit Logの集計、Pub/Sub経由のキューワーカといった用途で本領を発揮する。実装が第2世代でCloud Runベースになったことで、機能差は縮まっており、複雑な依存を持つアプリはCloud Runを直接使う方が分かりやすい。
App Engineは関数単位というよりアプリ単位の伝統的PaaSで、依然として既存資産の延長で使われることが多い。新規案件で「とにかく小さく、イベント駆動で軽く始めたい」ならCloud Functions、「ある程度の規模のWebアプリやAPIを継続運用したい」ならCloud Run、「すでにGAE資産がある」ならApp Engine、というのが大まかな住み分けである。
まとめ
Cloud Functionsは2017年からGCPのFaaSとして提供され、第2世代でCloud Run基盤へと刷新されたことで実行時間・メモリ・並列性の制限が大幅に緩和された。Eventarc経由のイベント駆動、Functions Frameworkによる開発体験、Secret Managerなどとの連携が組み合わさり、「小さく早く動かす」用途では現在も第一候補となる。Cloud RunやApp Engineと連続的に進化する関係にあるため、アプリの規模感と寿命を見ながらどのサーバレスから入るかを決めるのが現実的だろう。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント