他のパブリッククラウドベンダーと同様に、GoogleにはCloud Functionsを備えたFunction-as-a-Service(FaaS)サービスがある。先月のブログ投稿で、Googleは、Cloud Functionsが.NET Core 3.1をサポートすると発表した。これは、Windows、Mac、Linux向けの無料のクロスプラットフォームで、オープンソースのプラットフォームである。
Cloud Functionsを使用すると、開発者は、HTTPイベントに応答するHTTP関数などのさまざまな関数を記述できる。また、GoogleのFunctions Framework for .NETで.NET Core 3.1ランタイムを使用して関数を作成できるようになった。Functions Framework for .NETは、移植可能な.NET関数を作成するためのオープンソースのfunctions-as-a-serviceフレームワークである。さらに、ランタイムはVisual Basic(VB)とF#もサポートしている。また、Google Cloud Platformで実行されているコードを使用すると、.NET Coreで記述されたCloud Functionsは負荷に基づいて自動的にスケーリングされる。
Functions Framework for .NETを使用すると、開発者は業界標準のCNCF CloudEventsに応答するHTTP関数とCloudEvent関数を作成できる。それらの関数は、Pub/Sub、Cloud Storage、FirestoreなどのGoogleCloudサービスからのイベントに応答できる。
namespace HelloPubSub
{
public class Function : ICloudEventFunction<MessagePublishedData>
{
private readonly ILogger _logger;
public Function(ILogger<Function> logger) =>
_logger = logger;
public Task HandleAsync(CloudEvent cloudEvent, MessagePublishedData data, CancellationToken cancellationToken)
{
string nameFromMessage = data.Message?.TextData;
string name = string.IsNullOrEmpty(nameFromMessage) ? "world" : nameFromMessage;
_logger.LogInformation("Hello {name}", name);
return Task.CompletedTask;
}
}
}
.NET for Cloud Functionsをサポートすることで、パブリッククラウドベンダーのGoogleはAWSに追いつこうとしている。AWSは、Lambdaを提供するFaaSで.NETをすでに何年もサポートしている。さらに、AWSは3月に.NET Core 3.1のサポートを発表した。
ブログ投稿の著者である、Googleのスタッフ開発者リレーションエンジニアであるJon Skeet氏と、GoogleのプロダクトマネージャーであるVinod Ramachandran氏は次のように書いている。
Cloud Functions for .NETは、現在プレビュー版ですが、.NET Core 3.1を使用して、ビジネスクリティカルなアプリケーションと統合レイヤーを構築し、プライベートVPCネットワーク内のリソースへのアクセスを備えたフルマネージド環境に機能をデプロイできます。.NET関数は、負荷に基づいて自動的にスケーリングされます。
また、Redditスレッドの投稿者は次のように述べている。
業界全体は、大きなモノリシックアプリケーションや製品内のコードによるカスタマイズから離れつつあります。クラウドビジネスモデルとの相性がよくないためです。
現在、開発者はCloud Functions for .NETを試すことでができる。クイックスタートガイドからガイダンスを見つけるか、codelabを使用してください。