サーバーレスとは

サーバーレス コンピューティングとは、デベロッパーがインフラストラクチャを意識することなく、コードの記述のみに専念できる、まったく新しいアプリケーション開発の枠組みです。従来のコンピューティングに比べ、サーバー管理不要、事前プロビジョニング不要、自動スケーリング、使用したリソースのみの支払いなどの利点があります。こうした利点を活かして、ステートレスな HTTP アプリケーションをはじめ、ウェブ、モバイル、IoT バックエンド、データ処理(バッチとストリームの両方)、チャットボットなど、幅広い目的に利用できます。


GCP サーバーレス コンピューティングのポートフォリオ

Cloud Functions

サーバーレスのファンクションおよびイベント

Cloud Functions

Google やサードパーティのクラウド サービスを簡単に連携させて拡張できる、イベント ドリブンのコンピューティング プラットフォーム。ゼロから地球規模にまでスケーリング可能なアプリケーションを構築できます。

詳細  
App Engine スタンダード環境

サーバーレス HTTP アプリケーション

App Engine スタンダード環境

ウェブと API バックエンドに適したフルマネージド型のサーバーレス アプリケーション プラットフォーム。一般的な開発言語を使用して、インフラストラクチャ管理を意識することなく開発を行えます。

詳細  
Cloud Run

サーバーレス コンテナ

Cloud Run

HTTP リクエストによって呼び出し可能なステートレス コンテナを実行できるサーバーレス コンピューティング プラットフォーム。Cloud Run はフルマネージドの従量料金制プラットフォームとして提供されており、Anthos にも含まれています。

詳細  

最適なサーバーレス コンピューティング プラットフォームを選ぶ

サーバーレス オプション

* App Engine スタンダード環境では、Node.js、Python、Java、Go、PHP がサポートされています

* Cloud Functions では、Node.js、Python、Go がサポートされています

ユースケース

ウェブ アプリケーション

ウェブ アプリケーション

App Engine スタンダード環境は、Node.js、Python、PHP、Java、Go で動作する、オペレーションが最小限のウェブアプリに適しています。アプリケーションは、これらいずれかの言語ライブラリを使用して標準的かつ慣用的な方法で記述します。迅速にデプロイでき、スケーリングにも対応しているため、ワークロード量が大きく変化するアプリケーションに適しています。

非同期のバックエンド処理

非同期のバックエンド処理

Cloud Functions は、クラウド上で発生したデータイベントに応じて実行されます。Cloud Storage にアップロードされた画像のサイズを変更する、Firestore データベースの値が変更されたときにデータを検証するといった軽量なプロセスに適しています。

モバイル バックエンド

モバイル バックエンド

モバイル アプリケーション向けの従来の REST API バックエンドには、App Engine スタンダード環境が適しています。ホスティング環境のモニタリング、更新、スケーリングはすべて自動的に行われ、お客様側で行うのはモバイル バックエンド サービスのコードを記述することだけです。また、Firebase には、モバイル アプリケーションに直接組み込み可能なリアルタイム NoSQL データベース、認証、ホスティング、ファイル ストレージなどの各種バックエンド サービスが揃っています。Firebase は Cloud Functions と統合されているため、Google Cloud Platform のその他のサービスとも簡単に連携できます。

API

API

単純な API(HTTP または Cloud Pub/Sub を介してアクセスする小規模なファンクション セット)を構築する場合は、Cloud Functions の使用をおすすめします。Cloud Functions はワークロードの急増を想定して設計されており、さまざまな機能を関数として実装するプログラミング方式は小規模のバックエンド コードを編成するのに適しています。複雑な API(多数のルートを持つ REST API など)には App Engine スタンダード環境の使用をおすすめします。多数のファンクションを編成する場合はこちらのほうが便利です。API の管理に Cloud Endpoints を使用する場合は、Cloud Endpoints がサポートされている App Engine スタンダード環境、Python 2.7、Java 8 の組み合わせを使用することをおすすめします。

定期的なオペレーション

定期的なオペレーション

Cloud Scheduler では、定義したスケジュールに従って HTTP リクエストを送信し、オペレーションをトリガーできます。App Engine に加えて、Cloud Functions や Cloud Run などの HTTP エンドポイントをターゲットにすることも可能です。

ラピッド プロトタイピングと API の結合

ラピッド プロトタイピングと API の結合

小規模なプロジェクトやいわゆる「ハッカソン」プロジェクトでラピッド プロトタイピングを行う場合や複数の API とサービスを結合させる場合は、Cloud Functions の使用をおすすめします。Cloud Functions のプログラミング方式は、小規模アプリの開発、または既存の API とサービスをつなぎ合わせた「グルーコード」の開発を迅速に進めるのに特に適しています。

プロバイダに依存しないコンテナを実行する

プロバイダに依存しないコンテナを実行する

Docker コンテナは、任意のクラウドまたはオンプレミス環境で実行できる業界標準のコンテナです。Cloud Run では、サーバーレスのリクエスト / レスポンスの形式でコンテナを実行できます。基本的には Cloud Run の使用をおすすめしますが、GPU などのカスタム ハードウェアが必要な場合や Kubernetes クラスタを使用する場合は、Google Kubernetes Engine クラスタで Cloud Run on GKE を実行することもできます。

サーバーレス ワークロードとステートフル ワークロードを組み合わせる

サーバーレス ワークロードとステートフル ワークロードを組み合わせる

Cloud Run for Anthos を使用すると、サーバーレス ワークロードとステートフル ワークロードを簡単に組み合わせて実行できます。たとえば、Marketplace で提供されている MongoDB を Anthos GKE クラスタにデプロイしてサーバーレス ワークロード用のドキュメント ストアとして使用する、といったことが可能です。Anthos にはどのようなものでも Kubernetes クラスタで実行できるようにする柔軟性があり、Cloud Run for Anthos を使用することでサーバーレス ワークロードを並行してデプロイできます。

プロダクトの比較

App Engine スタンダード環境 Cloud Functions Cloud Run Cloud Run for Anthos
デプロイメント形式 アプリ 関数 コンテナ コンテナ
ゼロにスケーリング チェック チェック チェック Pod2
無料枠 チェック チェック チェック
WebSocket チェック
言語 Java、Node.js、Python、Go、PHP Node.js、Python、Go 任意 任意
アクセス制御 OAuth 2.0、CICP、Firebase Authentication、Google ログイン、Users API 呼び出し元の IAM 権限 呼び出し元の IAM 権限、CICP、Google ログイン、Firebase Authentication クラスタのみ、VPC のみ
HTTP/2 と gRPC チェック
カスタム ドメイン チェック チェック チェック
リクエストのタイムアウト 1 分3 9 分 15 分 15 分
GPU と TPU チェック
VPC 接続 チェックベータ版1 計画中 チェック

1. ベータ版ソフトウェアには、SLA はありません

2. Cloud Run on GKE では、ポッドの数がゼロにスケーリングされます。クラスタごとのノードの数はゼロにスケーリングできないので、これらのノードはリクエストがない場合も課金対象となります。

3. 自動スケーリング: HTTP リクエストに対し 60 秒の時間制限あり。

その他のヒントとベスト プラクティス

その他の検討事項を以下に示します。