はじめに
この記事では、Google Cloud Functions(GCF)の2つの世代について、それらの特徴、制限、および2世代で行われた改良について説明します。
第1世代
サーバーレスコンピューティングプラットフォームとして、GCFは2016年にリリースされ、開発者が基盤となるインフラストラクチャを管理する必要なく、コードを実行できるようにしました。第1世代のGCFは、クラウド上で小規模で単一目的の関数を構築およびデプロイするプロセスを簡素化することを目的としていました。
第1世代の特徴
最初のGCFは、軽量のイベント駆動型アーキテクチャを提供し、開発者がコードの記述に注力できるようにしながら、サーバー管理の負担から解放しました。この世代の主要な特徴は次のとおりです。
- Node.js、Python、およびGoランタイムのサポートにより、開発者は多様な言語から選択できる
- 受信リクエストの数に基づく自動スケーリングにより、効率的なリソースの利用が保証される
- 多様なユースケースに対応できる従量課金制の価格設定モデル
- Pub/Sub、Storage、Firestoreなどの他のGoogle Cloudサービスとの統合により、エンドツーエンドのアプリケーション構築プロセスが簡素化される
- RESTful APIを介して機能を呼び出すためのHTTPトリガーにより、機能を外部クライアントに公開することが容易になる
制限と欠点
第1世代のGCFには多数の利点がありましたが、次のような制限と欠点も存在しました。
- プログラミング言語やフレームワークの選択肢が限られるランタイムサポート
- コールドスタートレイテンシーによる、環境の初期化に必要な時間によって使用頻度が低い機能の遅い実行時間
- 機能実行環境のカスタマイズ性が制限され、設定の変更やカスタム依存関係のインストールが困難
- 実行時間の最大値が540秒で、長時間実行される場合には使用が困難なユースケースが存在する
これらの制限は、Google Cloud Functionsの改良の必要性を促し、2世代が誕生することになりました。この新しいバージョンは、先代の欠点を解決し、より強力で柔軟なサーバーレスプラットフォームを開発者に提供することを目的としています。
第2世代
前身の制限に対応するため、第2世代のGCFは、より堅牢で機能豊富なサーバーレスプラットフォームを開発者に提供するために開発されました。この新世代は、先代の欠点を解決するために、プラットフォームの機能と性能に大幅な改善をもたらしました。
拡張された機能と性能
第2世代のGCFには、次のような新しい機能や改善が含まれています。
- Java、Ruby、PHP、.NETの追加により、プログラミング言語の選択肢が広がり、開発者は好きな言語で開発可能
- 冷起動レイテンシーが大幅に削減され、関数の実行時間が高速化され、ユーザーの反応性が向上
- CPUとメモリのリソースをより効率的に使用し、関数のパフォーマンスを最適化するためのより大きな制御を提供するように改善されたリソース割り当て
- 最大実行時間が900秒に増加し、GCFがより多様なユースケースに対応可能
- VPC(Virtual Private Cloud)コネクターの導入により、Google Cloudエコシステム内の他のサービスへの安全で信頼性の高い接続の改善
スケーリングとセキュリティの改善
パフォーマンスの向上に加えて、第2世代のGCFは開発者により良いスケーリングとセキュリティオプションを提供することを目的としています。
- 同時実行数や各関数あたりの最大インスタンス数をカスタマイズできる細かいスケーリング制御により、より効率的なリソースの使用とコスト管理が実現
- プライベートネットワーク、カスタムIAMロール、Secret Manager統合などの高度なセキュリティ機能により、GCFベースのアプリケーションの全体的なセキュリティ姿勢が向上
- Cloud MonitoringとCloud Traceの統合により、開発者は関数のパフォーマンスに関する価値ある洞察を得ることができ、潜在的な問題をより効果的にトラブルシューティングできるようになる
第1世代の制限や欠点を多く解決し、第2世代のGoogle Cloud Functionsは、開発者が幅広いアプリケーションを構築・デプロイするためのより強力で柔軟かつ安全なサーバーレスプラットフォームを提供することを目的としています。この新世代は、サーバーレスコンピューティングのメリットをより容易に活用できるようにし、より複雑で要求の高いユースケースにも対応できるようになりました。
比較
以下は、第1世代と第2世代を比較した表です。
機能 | Cloud Functions(第 1 世代) | Cloud Functions(第 2 世代) |
---|---|---|
イメージ レジストリ | Container Registry または Artifact Registry | Artifact Registry のみ |
リクエストのタイムアウト | 最大 9 分 | HTTP でトリガーされる関数の場合は最大 60 分。イベントによってトリガーされる関数の場合は最大 9 分 |
インスタンスのサイズ | 最大 8 GB の RAM(2 vCPU) | 最大 16 GiB RAM(4 vCPU) |
同時実行 | 関数インスタンスごとに 1 件の同時リクエスト | 関数インスタンスあたり最大 1,000 件の同時リクエスト |
トラフィック分割 | 非対応 | サポート対象 |
イベントタイプ | 7 つのソースからのイベントの直接サポート | Eventarc でサポートされているすべてのイベントタイプをサポート |
CloudEvents | Ruby、.NET、PHP のランタイムでのみサポート | 全ての言語ランタイムのサポート |
参考