Cloud Functionsとは?
イベント駆動型のサーバレスな関数サービス(FaaS)
Cloud Functions は、Google Cloud Platform(旧GCP)が提供するフルマネージド型のイベント駆動型サーバーレスな関数サービス(FaaS: Function-as-a-Service)です。HTTPリクエストや Cloud Pub/Sub イベントなど、さまざまなトリガーでコードを実行できます。
人気とその理由
- サーバーレス:Cloud Functions はサーバーをプロビジョニングしたり管理したりする必要がありません。
- スケーラブル:Cloud Functions は自動的にスケーリングされます。リクエストの数に応じてスケールアップまたはスケールダウンされます。
- 費用:Cloud Functions は費用対効果の高いサービスです。200万回の呼び出し無料枠があり、ほとんどのケースで費用が少なく済みます。
- 使いやすい:Cloud Functions は数分で関数を作成してデプロイできます。他のGoogle Cloud サービスとの連携もしやすいです。
Cloud Functionsの使用方法
Cloud Functionsを使用するには、サポートされている言語(Go、Python、Java、Node.js、PHP、Ruby、.NET)のいずれかでロジックを記述し、デプロイし、トリガーで実行します。トリガーで実行には、Cloud Storageへのファイルアップロード、Pub/Sub、Firebaseのイベント、またはコマンドラインインターフェース(CLI)を介した直接呼び出しがあります。
機能 | Cloud Functions 第 1 世代 | Cloud Functions 第 2 世代 |
---|---|---|
実行時間 | 最大 9 分 | 最大 60 分 |
インスタンスサイズ | 128 MB メモリ、1 コア | 最大 8 GB メモリ、最大 16 コア |
同時実行数 | 1 インスタンスあたり 1 リクエスト | 1 インスタンスあたり最大 1,000 リクエスト |
トラフィック管理 | サポートなし | サポートあり |
Eventarc | サポートなし | サポートあり |
Cloud Functionsの導入のステップ
-
Cloud Functionsを作成する。
関数を作成するには、関数名、ランタイム、トリガーを指定する必要があります。ランタイムは、関数を実行する言語です。トリガーは、関数が実行されるイベントです。関数を作成したら[デプロイ] ボタンをクリックします。
-
Cloud Functions 関数を使用する。
関数を使用するには、HTTP リクエスト、Cloud Pub/Sub イベント、データベースの変更などトリガーで実行します。
費用
関数の呼び出し回数、コンピューティング時間、データ転送に基づいて費用が発生します。アイドル状態の場合は費用がかかりません。
関数の呼び出し回数は毎月 200 万リクエストまでが無料枠として用意されています。
セキュリティ
セキュリティについては、Identity and Access Management(IAM)を使用して、関数にアクセスできるサービスまたは人員を定義し、VPCコントロールを使用して、ネットワークベースのアクセスを定義できます。
ユースケース
- データ処理/ETL : Cloud Storageイベント(ファイルが作成、変更、または削除されたときなど)にリッスンして応答します。画像を処理、ビデオのトランスコーディングを実行、データを検証および変換し、インターネット上の任意のサービスを呼び出すことができます。
- Webhooks : シンプルなHTTPトリガーを介して、GitHub、Slack、Stripeなどのサードパーティシステムからのイベントに応答するか、HTTPリクエストを送信できる場所から応答します。
- 軽量API : 軽量で緩やかに結合された論理のビットからアプリケーションを構成し、即座にスケーリングすることができます。関数はイベント駆動型またはHTTP/S経由で直接呼び出すことができます。
- モバイルバックエンド : アプリ開発者向けのGoogleのモバイルプラットフォームまたはFirebaseを使用し、Cloud Functionsでモバイルバックエンドを書きます。Firebase Analytics、Firestore、Realtime Database、認証、およびストレージからのイベントにリッスンして応答します。
- IoT : 数万台または数十万台のデバイスがPub/Subにデータをストリーミングする際に、Cloud Functionsを起動してデータを処理、変換、および保存します。