ネットサービス

Cloudflareが「ステートフルなサーバーレス」を実現する「Durable Objects」を発表


Cloudflareが提供するサーバーレスコンピューティングサービスの「Cloudflare Workers」が、同サービス上で実行するコードの状態を保持し、ステートフルなサービスを実現できる新機能「Durable Objects」を発表しました。Durable Objectsを利用することで、サーバーレスコンピューティングでは実現が難しかったデータの一貫性を確保できるほか、複数クライアント間のリアルタイム処理を実現することができます。

Workers Durable Objects Beta: A New Approach to Stateful Serverless
https://blog.cloudflare.com/introducing-workers-durable-objects/

Cloudflare Workersは、は、ウェブサイトを世界各地のDNSサーバーにキャッシュしてクライアントへの通信を最適化するコンテンツデリバリネットワーク(CDN)のエッジ(Worker)上で、JavaScriptなどのコードを実行できるサービス。利用者がサーバーを用意せずともコードを実行できるサーバーレス構造のサービスです。


エッジに処理を分散するサーバーレス構造をもつCloudflare Workersは、サーバーの管理を行う必要がなく、かつクライアントの物理的な場所に応じて処理を最適化できるため、高い利便性を持っています、しかし、コードの状態を保持して処理を臨機応変に変える「ステートフル」なサービスの構築は、エッジ間におけるデータの一貫性や複数クライアント間の協調性を確保する必要があるため、Cloudflare Workersでは困難だったとのこと。この課題を解決してくれるのが「Durable Objects」で、これまでCloudflare Workersでは実現が難しかったゲームサービスやショッピングサイトなどのステートフルなサービスの構築を簡単に行えるようになります。

Durable Objectsはコードにおけるオブジェクトの状態を永続化することで、サーバーレス構造でもステートフルなサービスの構築を可能にしているとのこと。オブジェクトは状態を保持するためのストレージに接続され、固有の識別子が与えられます。世界中で動作しているエッジは識別子をもとにオブジェクトにアクセスすることで、エッジ間の一貫性や複数のクライアント間の協調性を維持するという仕組みになっています。

通常のクラウドサービスを利用する場合、データセンターの地域を表す「リージョン」はできるだけクライアントとの物理的距離が近いものを選択しますが、Durable Objectsでオブジェクトを配置するデータセンターはCloudflare側が状況に応じて自動で選択するため、リージョンは「地球」であるとのこと。


複数のクライアントはCloudflareが生成する「コーディネーター」を通して互いにやり取りを行います。コーディネーターはクライアント間の処理の競合を解決し、処理をスタックして後から反映する非同期処理を担当しています。Durable Objectsの正式リリースに合わせてWorkerがWebSocketプロトコルに対応するため、クライアント間のリアルタイム処理が容易になるとのこと。

Durable ObjectsとWebScoketで実装されているチャットアプリのデモが用意されており、以下のURLから試すことができます。

edge-chat-demo.cloudflareworkers.com/?_ga=2.231106332.266820583.1601355298-1202584184.1601355298
https://edge-chat-demo.cloudflareworkers.com/?_ga=2.231106332.266820583.1601355298-1202584184.1601355298

チャットルームに入ると匿名でチャットを行うことが可能。このデモにおけるオブジェクトは「チャットルーム」であり、オブジェクトの状態にあたる「チャットの内容」はDurable Objectsによって永続化されています。


従来からサーバーレスはステートレスなサービスと相性がよく、ステートフルなサービスの構築は難しいとされてきました。サーバーレスとステートフルを結び付けるためには、はじめにサーバーレスがコンピューティングを細かく分割したように、ステートも細かく分割する必要があるとのこと。ステートを分割する単位はアプリケーションによってさまざまで、例えばチャットであればチャットルームが、オンラインストアであればショッピングカートが分割の単位となります。Durable Objectsはステートの分割単位をオブジェクトとし、さらにそのオブジェクトと永続化のためのストレージを一対一で紐付けることで、スケーラビリティに優れたサービスとなっています。

なお、Durable Objectsは記事作成時点ではベータ版であり、下記URLからベータ版への招待をリクエストすることができます。

Cloudflare Workers® Durable Objects Limited Beta Program | Cloudflare
https://www.cloudflare.com/cloudflare-workers-durable-objects-beta/

この記事のタイトルとURLをコピーする

・関連記事
Cloudflareとインターネットアーカイブがウェブの信頼性をさらに高めるため提携 - GIGAZINE

プライバシー面を重視したDNSサービス「1.1.1.1」をCloudflareが提供開始 - GIGAZINE

クラウドサービス利用者につきまとう「ベンダーロックイン」問題にはどう対処するべきなのか? - GIGAZINE

Webサイトのクローリングやスクリーンショット撮影が簡単にできるヘッドレスChromeがGCPに登場 - GIGAZINE

Webサイトのクローリングやスクリーンショット撮影が簡単にできるヘッドレスChromeがGCPに登場 - GIGAZINE

in ネットサービス, Posted by log1n_yi

You can read the machine translated English article here.