サーバーレスJavaScriptの仕組みとは?| Service WorkersとCloudflare Workers

サーバーレスJavaScriptは、最小限のレイテンシーでサーバーレスWebアプリケーションを構築するために使用されます。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • サーバーレスJavaScriptの定義
  • サーバーレスJavaScriptを使用した低レイテンシーのWebアプリケーションを構築する方法とは
  • JavaScriptがVCLよりも効果的である理由についてご覧ください
  • HTTPキャッシュとHTTPリクエストとは
  • Service Workers、Cloudflare Workers、およびそれらの違いについてご覧ください

記事のリンクをコピーする

サーバーレスJavaScriptとは?

サーバーレスJavaScriptは、アプリケーションのすべてまたは一部を構成するJavaScriptコードであり、リクエストされた場合にのみ実行され、専用サーバーではホストされません。開発者は、ネットワークで実行される高いパフォーマンスで低いレイテンシーのサーバーレスアプリケーション(JAMstackアプリケーションなど)を構築し、コールドスタートなどの他のサーバーレスアプリケーションに関連する多くの問題を回避できます。

サーバーレスJavaScriptは、エッジネットワークでホストされるか、コンテンツを保存してHTTPリクエストにすばやく応答するHTTPキャッシュサービスによってホストされます。開発者は、HTTPリクエストを配信元サーバーに到達する前に処理するJavaScript関数を記述およびリリースできます。

EdgeサーバーでのサーバレスJavaScript

サーバーレスJavaScriptを使用すると、エッジでコードを実行して機能を拡張し、既存のアプリケーションのユーザー体験を改善したり、高速で拡張性の高い完全なサーバーレスアプリケーションを作成したりできます。Cloudflare WorkersはサーバーレスJavaScriptプラットフォームです。

Varnishとは?

Varnishは、Webアプリケーションを高速化し、Webサイトのパフォーマンスを向上させるために設計されたWebアクセラレータです。これは、キャッシュHTTP リバースプロキシであり、つまり、Webサーバーの前に配置され、Webクライアントから頻繁にリクエストされるコンテンツをキャッシュまたは保存することにより、そのサーバーとのHTTPトラフィックを加速します。Varnish構成言語、またはVCLは、Varnishと組み合わせて使用され、開発者はVarnishがWebリクエストを管理する方法をカスタマイズできます。

サーバーレスアーキテクチャでVCLの代わりにJavaScriptを使用する利点とは?

VCLは、Varnishキャッシュを簡単に構成できるように設計された構成言語であり、本格的なプログラミング言語ではありません。VCLは、堅牢なアプリケーションを構築または拡張するには十分な柔軟性がありません。JavaScriptに比べてできることは限られています。さらに、VCLはVarnish実装以外では使用されないため、ほとんどの開発者はVCLに精通していません。対照的に、JavaScriptはどこにでもあり、アプリケーションの構築にすでに広く使用されています。サーバーレスアーキテクチャでJavaScriptを使用すると、開発者は使い慣れた言語で完全なアプリケーションを構築できます。

サーバーレスJavaScriptを使用すると、より広範な開発者グループがエッジでサーバーレスコンピューティングを活用でき、それらの開発者により多様なアプリケーションを構築できるようにします。

サーバーレスJavaScriptを使用してアプリケーションを構築することで、どのようにレイテンシーが短縮されますか?

サーバーレスJavaScriptは、配信元サーバーでホストされるコードよりもエンドユーザーに近いHTTPキャッシュネットワークで実行されます。その結果、リクエストは配信元サーバーに行き来する必要がなく、アプリケーションはユーザーとのやり取りにより迅速に応答します。キャッシュネットワークが持つ地理的に分散したエッジロケーションほど、レイテンシーが減少します。

サーバーレスJavaScriptはいつ実行されますか?

サーバーレスモデルでは、アプリケーションは機能に分割され、特定のイベントに応じて機能コードが実行されます。それ以外の場合は実行されません。サーバーレスJavaScriptの実行をトリガするイベントはHTTPリクエストです。開発者は、JavaScript関数が応答するHTTPリクエストのタイプと、HTTPリクエストが変更または実行される方法をカスタマイズできます。

HTTPリクエストとは?

これは、HTTP(ハイパーテキスト転送プロトコル)を介してクライアントからサーバーに送信されるリクエストです。ブラウザは、ハイパーリンクのクリックやフォームの送信などのユーザーアクションをHTTPリクエストに変換します。その後、リクエストはサーバーに送信され、サーバーはリクエストを処理するためにHTTP応答を送信します。HTTPリクエストは、アプリケーションがAPIコールを行うときにも発生します。

HTTPキャッシングとは?

HTTPキャッシュは、将来のリクエストに対してより迅速な応答を生成するために、サーバーまたはブラウザーがユーザーのHTTPリクエストへの応答のコピーを保存することです。CDN サーバーは、HTTPキャッシュの一例です。一部のHTTPキャッシュサービスを使用すると、開発者はアプリケーションでHTTPキャッシュがどのように機能するかをカスタマイズできます。

Cloudflareは、世界中にデータセンターを持つHTTPキャッシュのエッジネットワークであり、開発者はネットワークエッジで独自のJavaScriptを記述およびリリースできます。 Cloudflareネットワークでは、HTTPキャッシュは特定のサーバーではなく、HTTPリクエストの送信元に最も近いデータセンター内で行われます。

Service Workersとは?

Service Workersは、ユーザー向けにカスタマイズされた体験を作成するために、ブラウザーがダウンロードして実行するスクリプトです。Service Workersは、プッシュ通知、バックグラウンド同期、オフライン機能などの機能をブラウザで可能にします。 JavaScriptで記述されており、リクエストがインターネットに到達する前にHTTPリクエストを傍受、変更、および応答します。

Service WorkersがHTTPトラフィックを処理できる2つの方法:

サービスワーカーの応答

Service Workersは、Webサーバーに接続せずにHTTPリクエストに応答できます

サービスワーカーによるリクエストの変更

Service WorkerはHTTPリクエストと応答を変更できます

Cloudflare Workersとは?

Cloudflare Workersは、サーバーレス機能をエンドユーザーのできるだけ近くで実行できるようにするためのプラットフォームです。本質的に、サーバーレスコード自体はネットワーク上で「キャッシュ」され、適切なタイプのリクエストを受信すると実行されます。 Cloudflare Workersは、Service Workers APIに対してJavaScriptで記述されているため、Service Workersが提供するすべての機能を使用できます。 Chrome V8エンジンを活用して実行します。Cloudflare Workersコードは、世界中のCloudflareの広大なデータセンターネットワークでホストされています。

Chrome V8とは?

「V8」とも呼ばれるChrome V8は、JavaScriptのコンパイル、最適化、実行のためにGoogleが開発したJavaScriptエンジンです。JavaScriptコードの実行にV8を使用すると、JavaScript Workersの起動時間が大幅に短縮され、ほとんどの場合「コールドスタート」の問題がなくなります。V8はセキュリティの脆弱性についても徹底的に分析されているため、JavaScriptコードを安全に実行するのに最適です。

Service Workersと比較してCloudflare Workersの独特な点は何ですか?

Cloudflare Workerの使用とService Workersの使用の主な違いの1つは、Service Workersはクライアント側で実行され、ユーザーのブラウザーでダウンロードする必要があるのに対して、Cloudflare Workersは、ユーザーとその他のインターネットとの間のCloudflareネットワークのエッジで実行され、ネットワーク自体内で効果的に実行されます。

Cloudflare Workersの詳細と、Cloudflare Workersを作成した理由についてご覧ください。