Querier

Google Cloud Functionsを徹底解説 | 使い方、料金、比較、定期実行方法について

2023.07.07に公開 | 2023.07.07に更新

Querier運営

@querier_io@querierinc

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る

Google Cloud Functionsは、Google Cloudのサーバーレスコンピューティングプラットフォームであり、クラウド上でコードを実行するためのサービスです。

この記事では、そんねCloud Functionsについて詳しく解説します。Cloud Functionsの特徴やメリット・デメリット、使用方法、そして他のサービスとの比較についても触れていきます。

Google Cloud Functionsとは

Cloud Functionsは、Google Cloud Platform (GCP)が提供するサーバーレスコンピューティングサービスです。サーバーレスコンピューティングは、開発者がアプリケーションを構築・運用するために必要なインフラストラクチャの管理を完全にGoogleに任せ、開発者はコードの記述に集中できるという概念です。

特徴

Cloud Functionsは以下のような特徴があります。

  • イベント駆動型: Cloud Functionsはイベント駆動型のサービスで、GCP内の他のサービスからのイベントやHTTPリクエストに応答して自動的に実行されます。この特性により、リアルタイムのデータ処理やオンデマンドのタスク実行を行うのに適しています。
  • スケーラビリティ: 関数の呼び出しに応じて自動的にスケールします。これにより、突発的なトラフィックの増加や大規模な並列処理にも瞬時に対応することができます。
  • フルマネージド: インフラストラクチャのプロビジョニングや管理、スケーリング、パッチ適用などをGoogleが自動的に行うため、開発者はコードの記述に集中できます。

メリット・デメリット

Cloud Functionsのメリットとしては以下が挙げられます。

  • 開発の迅速化: 開発者は関数のコードのみを記述すれば良いため、アプリケーションの構築・デプロイが迅速に行えます。
  • 運用管理の軽減: サーバーのプロビジョニングやスケーリングなどの運用管理をGoogleが行うため、開発者の運用負荷が軽減されます。
  • 料金: 関数が実行された時のみ料金が発生し、実行されない時は課金されません。

一方、デメリットとしては以下が考えられます。

  • 実行時間の制限: 長時間にわたるタスクは実行できないという制限があります。現在、最大の実行時間は540秒(9分)です。
  • コールドスタート: 一定時間利用されていない関数は休眠状態になり、その関数が再度呼び出されるときには起動時間(コールドスタート)が必要となります。

App Engineとの違い

App EngineとCloud FunctionsはともにGCPが提供するサーバーレスのサービスですが、主な違いは使用目的とスケーリングの粒度にあります。

App Engineはアプリケーション全体をホスト・実行するためのPaaS(Platform as a Service)であり、バックエンドのロジックだけでなく、フロントエンドのコードを含む完全なウェブアプリケーションを作成・デプロイできます。また、自動スケーリングの単位はインスタンス(アプリケーション全体)です。

一方、Cloud Functionsは特定の関数(小さなコードスニペット)を実行するためのFaaS(Function as a Service)で、特定のイベントが発生したときに実行されます。自動スケーリングの単位は関数です。

Cloud Runとの違い

Cloud Runはコンテナを使用したサーバーレスのプロダクトで、Cloud Functionsと同様に開発者はインフラストラクチャの管理から解放されます。

Cloud RunはDockerコンテナを使用するため、環境を完全にカスタマイズすることが可能です。また、任意のプログラミング言語やライブラリを使用することが可能で、一方でCloud Functionsは一部のプログラミング言語のみをサポートしています。

また、Cloud Runはリクエストのたびに新しいコンテナを起動しますが、Cloud Functionsは関数の実行に応じてスケーリングします。これにより、Cloud Runは状態を持つアプリケーションに対しても適しています。

これらの違いを理解した上で、自分のニーズに最適なサービスを選択することが重要です。

Google Cloud Functionsの使い方

まず、Google Cloud Consoleの Cloud Functionsダッシュボード にアクセスします。

まだプロジェクトがない場合は、新しいプロジェクトを作成してください。
次に、左側のメニューで「Cloud Functions」を選択し、「関数を作成」をクリックします。

ここで関数の名前を指定し、トリガータイプ(HTTP、Pub/Sub、Firestore等)を選択します。トリガータイプは、関数がどのようなイベントで呼び出されるかを定義します。

「ソースコード」セクションでは、ソースコードを直接入力するか、Google Cloud Storageからアップロードするかを選択します。ここでは、main.pyにPythonコード、requirements.txtに依存関係を定義します。

「ランタイム」セクションでは、使用するランタイムを選択します。

最後に、「関数を作成」をクリックして関数をデプロイします。

各言語のサンプルコード

JavaScript

exports.helloWorld = (req, res) => {
  res.send('Hello, World!');
};

Python

def hello_world(request):
    return 'Hello, World!'

Go

package p

import (
	"fmt"
	"net/http"
)

func HelloWorld(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Hello, World!")
}

詳しくは公式ドキュメントの クイックスタートガイド をご覧ください。

デプロイ方法

作成した関数は、Google Cloud Consoleから直接デプロイできます。「関数を作成」をクリックすると、関数がGoogle Cloud Platformにデプロイされ、指定したトリガーにより実行できるようになります。

また、gcloud コマンドラインツールを使用して、ローカルマシンから直接デプロイすることも可能です。これは開発プロセスを自動化する際に特に役立ちます。

gcloud functions deploy FUNCTION_NAME --entry-point ENTRY_POINT --runtime RUNTIME

以上、Google Cloud Functionsの基本的な使い方について解説しました。詳細については公式ドキュメントをご覧ください。

Google Cloud Functionsの料金、無料枠はある?

Google Cloud Functionsの料金は、主に次の要素に基づいて計算されます。

  1. 呼び出し回数: 関数が何回呼び出されるか。
  2. 実行時間: 関数が何秒間実行されるか。
  3. 割り当てられたリソース: 関数に割り当てられるメモリとCPUの量。

価格

以下は、一部の地域での料金の一例です。

  • 呼び出し回数:$0.40 あたり100万回の呼び出し
  • 実行時間:$0.0000025 あたりギガバイト秒
  • ネットワーク通信量:$0.12 あたりGB(北米、ヨーロッパ、APAC地域)

価格は地域により異なり、最新の価格は 公式の料金ページ で確認できます。

無料枠

Google Cloud Functionsは、毎月一定の無料枠を提供しています。2023年7月現在、無料枠は以下の通りです。

  • 呼び出し回数:月200万回まで
  • 実行時間:月400,000GB秒、200,000GHz秒まで
  • ネットワーク通信量:5GBまで(北米、ヨーロッパ、APAC地域)

無料枠を超えた利用については通常の料金が適用されます。

詳細については公式の料金ページをご覧ください。

以上、Google Cloud Functionsの料金と無料枠について解説しました。必ず公式の料金ページで最新の価格と無料枠を確認してください。

Google Cloud Functionsの関数を定期実行する方法

Google Cloud Functionsの関数を定期的に実行するための主な方法は、Cloud Schedulerを使用することです。

Cloud Schedulerは、Cronジョブ(定期的に実行されるタスク)の概念をGoogle Cloud上で実現したもので、このサービスを使用して特定のCloud Functionを定期的にトリガーすることができます。

Cloud Schedulerのセットアップ

以下に、Cloud Schedulerを使用してCloud Functionを定期実行する基本的な手順を説明します。

  1. Google Cloud Consoleにログインします。
  2. 左側のナビゲーションメニューから「Cloud Scheduler」を選択します。
  3. 「Create job」をクリックします。
  4. 新しいジョブの詳細を入力します。ここで、ジョブの名前、頻度(cron syntax)、タイムゾーンを指定します。
  5. Target欄で「HTTP」を選択し、URLにCloud FunctionのURLを入力します。また、HTTPメソッドはCloud Functionによりますが、通常は「POST」を選択します。
  6. 「Create」をクリックしてジョブを作成します。

こうすることで、指定した頻度でCloud Functionが自動的にトリガーされるようになります。

詳細な手順は、公式ドキュメントをご覧ください。

なお、Cloud Schedulerを使用すると課金が発生しますのでご注意ください。無料枠を超えると通常の料金が適用されます。詳しくは公式の料金ページをご覧ください。

AWS Lambdaとの比較、メリット・デメリット

Google Cloud FunctionsとAWS Lambdaはどちらも優れたサーバーレスコンピューティングサービスですが、それぞれに特性と利点、欠点があります。

AWS Lambdaの特徴

AWS Lambdaは、AWSが提供するサーバーレスコンピューティングサービスです。コードをアップロードするだけで、高い可用性を持つ環境で実行することができます。

AWSの豊富なサービス群との統合が可能で、非常に強力なコンピューティングソリューションを構築することが可能です。

Cloud FunctionsとAWS Lambdaの比較

  • インテグレーション: AWS Lambdaは、AWSの広範囲なサービス群との統合が可能であるため、AWSを既に使用している企業にとってはメリットとなります。一方、Cloud FunctionsはGoogle Cloudのサービス群との連携が可能です。
  • ランタイムのサポート: AWS Lambdaは、Python, Node.js, Java, C#, Go, Ruby, PowerShellなど多数のランタイムをサポートしています。一方、Cloud Functionsは、Node.js, Python, Go, .NET, Ruby, PHP, Javaなどをサポートしています。
  • コールドスタート: 両者ともにコールドスタート(関数が呼び出されてから実際に実行が始まるまでの遅延)の問題がありますが、Cloud Functionsは一般的にLambdaよりもコールドスタート時間が短いと言われています。
  • 料金: 両者ともに使用したリソースに対してのみ課金されますが、詳細な料金は各サービスの料金ページをご確認ください。

IBM Cloud Code Engineとの比較、メリット・デメリット

IBM Cloud Code Engineもサーバーレスコンピューティングプラットフォームで、任意のコンテナ化されたアプリケーションを実行することができます。

IBM Cloud Code Engineの特性

IBM Cloud Code Engineは、コンテナベースのアプリケーションとジョブを、より簡単に作成、実行、管理できる環境を提供します。このプラットフォームは、開発者が自身のアプリケーションに集中できるよう、インフラストラクチャ管理の負担を軽減します。

Cloud FunctionsとIBM Cloud Code Engineの比較

  • 対応環境: Cloud Functionsは特定のランタイム環境をサポートしていますが、IBM Cloud Code Engineは任意のコンテナイメージを扱うことができるため、対応可能な言語やフレームワークに制約がありません。
  • スケーラビリティ: 両者とも自動スケーリング機能を提供していますが、IBM Cloud Code Engineは0までスケールダウンすることが可能で、これによりコストを最小限に抑えることができます。
  • インテグレーション: Cloud FunctionsはGoogle Cloudのサービスと緊密に統合されています。一方、IBM Cloud Code EngineはIBM Cloudの他のサービスやKubernetesとの統合が可能です。
  • 料金: 両者ともリソース使用量に基づく課金がありますが、詳細な料金は各サービスの料金ページをご確認ください。

さいごに

以上がGoogle Cloud Functionsの解説となります。特徴、メリット・デメリット、さらには他のサーバレスプラットフォームとの比較など、より深く理解するための情報を提供しました。

Cloud FunctionsはGoogle Cloud Platformの一部として、強力なインテグレーションやスケーラビリティを提供します。これにより、開発者はサーバーの管理から解放され、よりコードやビジネスロジックに集中することができます。

しかし、最適なサービスを選択するためには、それぞれのプラットフォームの特性を理解し、自身のニーズと比較することが重要です。この記事が、あなたの選択をサポートする一助となれば幸いです。

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

最新の記事

【告知】値の参照時の仕様変更のお知らせ

このたび2024年11月11日に値の参照に関する仕様変更を予定しておりますので詳細について報告いたします。

more

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る