Cloud Functions第二世代がやってくる - 公開プレビュー版から見る仕様とユースケース
2022/08/01
2022/08/01
テクノロジーコンサルティング本部 マネジャーの中川です。
私は以下のロールで活動を行っています。
私はAccentureに入社する以前からApp Engine、Cloud Runそしてこのエントリーでご紹介するCloud Functionsといった、フルマネージドかつサーバレスなサービスを用いたデリバリーを行っており、また個人としても、趣味・学習を兼ねてこれらの環境を使ったアプリケーション開発を行っています。
といったユースケースにおいてFaaS(Function as a Service)であるCloud Functionsを使っているのですが、年のはじめにCloud Functions第二世代がPre-GA(公開プレビュー)になりました。
新しい Cloud Functions(第 2 世代)でイベント ドリブン アーキテクチャを強化
このエントリーではPre-GA時点のCloud Functions 第二世代の仕様で抑えておきたいポイントおよび、想定されるユースケースについて共有します。
このエントリーは2022年6月末時点のPre-GA版Cloud Functions 第二世代を元に記載しております。GA(正式リリース版)および、Pre-GAにおいて仕様等が変更される可能性があるのでご注意ください。
まずはじめに仕様面でどのような変化があるか、表にまとめました。
比較項目 |
第一世代 |
第二世代 |
---|---|---|
最大処理時間 |
540s(9分) |
3,600s(1時間) |
CPU / Memory(最大) |
2つのvCPU / 8192MB |
4つのvCPU / 16GB |
同時実行数 |
Rate limit制約次第 |
最大1,000リクエストの同時実行 |
インスタンス最小数/最大数 |
指定可能 |
指定可能かつ、ウォームアップインスタンスの利用が可能 |
トラフィック管理 |
未実装 |
複数リビジョンに対するトラフィック分割が可能 |
イベントソース |
HTTP、Pub/Subおよび一部のイベント駆動(Firebaseなど) |
第一世代のイベントソースに加え、Eventarc対応およびCloudEvents形式のサポートが加わり90種類以上のソースに対応 |
対応言語 |
Node.js、Python、Go、Java、.NET、Ruby、PHP |
第一世代と同じ |
要点をまとめると、以下のとおりです。
Cloud Functions 第二世代はベースとなるPlatformがCloud Runとなっており、Cloud Runの潤沢なコンピューティング・リソース及びトラフィック管理がCloud Functionsで利用できるという仕様になっています。
といったように、「軽量な構成ならCloud Functions」「コンテナイメージから管理したい場合はCloud Run」といった使い分けになるのかなと思います。
また、Cloud Runの恩恵に授かる以外にも、イベントソースの増加やFunctions Frameworkによる開発の標準化が可能といった長所もあります。
Cloud Functionsを使うケースとして、
いずれも「App EngineやCompute Engineでアプリを作るほどではない、軽量かつシンプルな処理」を行うためのFaaSとしてのユースケースです。
第二世代においてもこれらのユースケースは有効で引き続き利用可能であると同時に、
Cloud Runの潤沢なコンピューティング・リソース及びトラフィック管理がCloud Functionsでも利用できるようになったことにより、本来コンテナで行っていたような処理・実装が可能となります。
具体例を上げると、
これらをすべてCloud Functionsで実現することが可能です(下図)。
これはあくまで一例ですが、小規模なシステムのアプリケーションはすべてCloud Functionsで構築・運用できるような未来が来るかもしれません。
Cloud Functions 第二世代を公開プレビュー版の仕様を元に紹介しました。
このエントリーを執筆する前に、実際に第二世代でのアプリケーションの構築および、第一世代の関数からのMigrationを行い、知見と手触りした熱量を持ってこのエントリーを執筆したのですが、十分使えそうであるという実感を得ました、正式公開が待ち遠しいです。
なお、DevOps的なアプローチでの管理はまだ検証していないので、引き続き触って知見を得た上で続編が書ければと思っております。
最後までお読みいただきありがとうございました。