サーバーレス

Cloud Functions の最新情報: 言語、利用可能な地域、ポータビリティなど

#serverless

※この投稿は米国時間 2020 年 10 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud Functions は、サーバー管理なしでコードを実行するスケーラブルな従量課金制 Functions as a Service(FaaS)プラットフォームです。このたび、シンプルで使いやすいデベロッパー エクスペリエンスを提供する Cloud Functions を拡張し、いくつかの重要なユースケースに対応するエンドツーエンドのソリューションの構築に使用できるようにしました。

具体的には、サードパーティ サービスや API と統合するサーバーレス アプリケーションのバックエンド、またはモバイルや IoT のバックエンドの実装に特に適した手段となりました。また、関数をリアルタイムのデータ処理システムに応用することもできます。たとえば、Cloud Storage へのアップロードと連動してファイルを処理することや、Pub/Sub イベントのリアルタイム ストリームを処理することなどが可能です。さらに、仮想アシスタントや chat bot などのインテリジェント アプリケーションにも適していて、動画分析、画像分析、感情分析も行えます。

利用可能になった Cloud Functions の新機能の概要は次のとおりです。

新しいランタイム: Node.js、Python、Go に加えて、.NET、Java、Ruby にも対応

Cloud Functions は、文字列の出力にお使いのコードが Console.WriteLine、console.log、fmt.Println、print、puts のいずれであっても対応できます。Java 11、.NET Core 3.1、Ruby、Node.js(8、10、12)、Python(3.7、3.8)の各ランタイムに対応し、6 つの異なる言語をサポートするようになりました。

新しいリージョン

Cloud Functions は、ソウル、サンパウロ、シドニーなど、11 の新しいリージョンで利用可能になり、リージョンの合計数は 19 になりました。これにより、Cloud Functions が利用可能な地域が世界的に大きく拡大しました。利用可能なリージョンの詳細については、https://cloud.google.com/functions/docs/locations をご覧ください。

more regions on cloud functions.jpg

ローカルのデベロッパー エクスペリエンスが向上

Cloud Functions チームは、Cloud Functions でサポートされている言語ごとのイディオムに対応したオープンソース ライブラリのセットである Functions Frameworks をリリースしました。Functions Frameworks により、ローカル環境で関数の実行、テスト、デバッグが可能なため、デプロイ不要で、本番環境と同じ動作が得られます。

また、Function Frameworks により関数の全体的なポータビリティも向上します。Function Frameworks は、ローカルでの実行に加えて、他の場所での関数のデプロイにも適しています。たとえば、Dockerfile や Buildpacks とともに Function Frameworks を使用すると、単一の関数を、Cloud Run などのサービスにデプロイできる完全なコンテナ イメージに変えることができます。これにより、関数のポータビリティが大幅に向上します。

Cloud Functions UI エクスペリエンスが向上

http://console.cloud.google.com/functions の Cloud Functions UI を再設計しました。たとえば、改良されたインライン コードエディタは、より大きな画面サイズに適した作りになっています。

cloud functions console.jpg

きめ細かい制御によるセキュリティの強化

Google では、すべてのサービスに強固なセキュリティを組み込むよう努めています。Cloud Functions も例外ではありません。Cloud Functions の主な新機能の中に、関数ごとの ID があります。つまり、プロジェクト内の個々の関数が独自の ID を持つということです。また、この機能により、関数がアクセスできるリソースのきめ細かい制御が可能になります。

security.jpg
security access function.png

費用とスケーリングの制御

サーバーレスの全体的な課金を削減する場合でも、単に費用の超過を防ぐ仕組みを導入する場合でも、Cloud Functions にはお客様のニーズに対応する機能があります。以下に、その主な機能の一部を紹介します。

最大インスタンス数の設定

Cloud Functions の最大インスタンス数は、関数が受信リクエストに応じてどの程度スケールされるかを制限する機能です。適切な最大インスタンス数の選び方は、トラフィックと、目標とするリクエストのレイテンシによって変わります。

Cloud Functions は、通常の状況下で関数に必要なインスタンス数の見積もりに使用できる Cloud Monitoring 指標(cloudfunctions.googleapis.com/function/active_instances)を提供します。

次のコマンドラインを使用して、Cloud Functions の最大インスタンス数を変更できます。

gcloud functions deploy FUNCTION_NAME --max-instances MAX-VALUE

Cloud Functions のインスタンス管理についての詳細をご覧ください。

予算アラートの設定

予算アラートは、予期しない課金の増加に対する重大な早期警告シグナルを提供します。予算アラートの設定は簡単で、メールまたは Cloud Pub/Sub 経由でアラートを送信するよう構成できます。関数をトリガーできるため、アラートをプログラム処理することが可能です。

ラベルの使用

ラベルを使用すると、単純なテキスト値を特定のリソースに割り当て、請求書の料金をフィルタするために利用することができます。たとえば、いくつかの関数で構成されるアプリケーションがある場合、こうしたリソースに一貫したラベルを適用することで、複数の関数からなるこのアプリケーションが請求書に及ぼす全体的な影響を確認できます。これは、請求額の多くを占める Google Cloud の使用分野を特定して、的を絞った対応策を取るために役立ちます。ラベルの詳細については、ラベルの作成と管理をご覧ください。

お客様のユースケースの例: IKEA Retail

IKEA は、「より快適な毎日を、より多くの方々に」という IKEA のビジョンを実現するために、同社のデジタル変革の一環としてサーバーレスと Cloud Functions を使用しています。この詳細については、IKEA Retail のエンジニアリング マネージャー Matthew Lawson 氏による興味深いデモをご覧ください。IKEA のライブフィード在庫管理システムについて説明されています。

Cloud Functions を試してみる

Cloud Functions チームは、上記のすべての機能をお客様にご利用いただくことを心待ちにしています。詳細については、以下に示す次のステップのいずれかをお試しください。


いつでもお気軽に、Cloud Functions に関するフィードバックをお寄せください。Cloud Functions がお客様のソリューション構築に役立てば幸いです。


-Python デベロッパー アドボケイト Dustin Ingram

-プロダクト マネージャー Vinod Ramachandran