エッジネットワーク上のサーバーレス機能
Cloudflareには、「サービスとしてのバックエンド」を提供するクラウドベースの製品のスイート全体があり、CloudflareWorkersはこのスイートの重要な部分です。 Cloudflareワーカーは、V8エンジンを搭載したNode.js環境でホストされるJavascript(またはできればTypescript)で記述されたサーバーレス関数です。それらをローカルに記述し、「ラングラー」-CLIを介してデプロイするか、クラウドで直接開発することができます。
// This is a minimal example for a
// serverless function hosed by
// Cloudflare. You define this code
// in a JS-file and upload it via the
// 'wrangler'-CLI.
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
return new Response("Hello world")
}
ここで初めて「サーバーレス機能」を聞いた場合は、ここで簡単に説明します。サーバーレス関数は、文字通り、サービスのビジネスロジックをカプセル化し、クラウドでホストされる関数です。主な利点は、サーバーのホスティング、パッチ適用、保守に1秒も費やす必要がないことです。関数を「アップロード」するだけで、数分で世界中で利用できるようになります。
Cloudflareは、地球全体に多くのエンドポイントを持つ非常に大規模なコンテンツ配信ネットワークを制御するため、特に製品の速度を向上させます。もちろん、このCDNはCloudflareワーカーにも活用されています。
バックエンドを世界中に配布する方法
Cloudflareワーカーをデプロイするたびに、世界中の多くの場所で共有および更新されます。これにより、Cloudflareは着信リクエストを常に最も近いエンドポイントにルーティングしてサーバーレス機能を呼び出すことができ、ネットワーク遅延を数ミリ秒に短縮します。 Cloudflareによって行われるこのルーティングは、リクエストを行うときに透過的です-ルーティングとバランスロードはバックグラウンドで自動的に行われます。
Cloudflare Workerのアーキテクチャのトポロジをよりよく理解するために、高レベルから低レベルへの内訳を次に示します。
前述のように、Cloudflareには世界中のさまざまな場所にある多くのサーバーで構成されるCDNがあります
単一の場所自体は、着信要求を処理する多数のサーバーで構成されます
単一のサーバーを拡大すると、このマシンは、JavascriptV8エンジンを搭載したいわゆる「ワーカーランタイム」を実行していることがわかります。
最後に、サーバーレス関数は、このランタイム内の1つの「分離」にすぎません。 1つのランタイムで数千の機能を同時にホストできます
特に重要な情報:デプロイする各Cloudflareワーカーには、他のすべてのプロセスから分離された独自のメモリがあります。これにより、データに実際にアクセスできるのはインスタンスのみになります。
Cloudflareワーカーを使用する場合と使用しない場合
Cloudflareワーカーは非常にエキサイティングに聞こえ、他のプロバイダーのサーバーレス機能を使用する既存のアプリがある場合でも、試してみる価値があります。しかし、これはCloudflareの製品を採用するのが難しい主な理由も指摘しているかもしれません。VercelやFirebase by Googleと組み合わせたNext.jsなどの多くのサービスも、そのようなソリューションを提供しています。現在彼らの製品を使用している場合、Cloudflareに切り替えることはあまり意味がありません。
ただし、新しいプロジェクトを開始する場合は、Cloudflareワーカーをバックエンドとして使用することを検討する価値があります。それらの使用法は、ユースケースの観点から実質的に無制限です。さらに、Cloudflareは、お客様の要件にぴったり合う可能性のある他のさまざまなサービスを提供します。