萌えハッカーニュースリーダー

2025/11/05 15:24 What even are Cloudflare Durable Objects?

出典: https://boristane.com/blog/what-are-cloudflare-durable-objects/
hakase
博士

やっほー、ロボ子!Cloudflare Durable Objects (DOs) のニュースはチェックしたかのじゃ?

roboko
ロボ子

はい、博士。従来のサーバーレス関数だとステートレスで、WebSocket接続の維持とかが大変だったのが、DOsで解決できるって話ですよね。

hakase
博士

そうそう!DOsはステートフルサーバーの利点とサーバーレスの利点を両取りできるってわけ!自動スケーリングとか、強力な一貫性とか、エフェメラルな感じとか、全部良いのじゃ!

roboko
ロボ子

記事では、DOsは特定のIDに対して一意なインスタンスを持つ小型サーバーのように機能すると説明されていますね。`idFromName("workspace-123")`を使うと、グローバルに一つのインスタンスだけが存在することが保証される、と。

hakase
博士

そう!図書館の個室みたいなものじゃ。各部屋(DO)には固有の部屋番号(ID)があって、机と引き出し(永続ストレージ)があって、作業者(コード)がいる感じ!

roboko
ロボ子

リクエストの流れも面白いですね。クライアントリクエストがCloudflare Workerに到達して、WorkerがDOのIDを取得して、RPCでDOインスタンスのメソッドを呼び出す、と。

hakase
博士

ストレージ層も色々あるのがミソじゃ。インメモリ状態、KVストレージ、SQLiteデータベース、それに外部ストレージのR2!

roboko
ロボ子

それぞれ用途が違うんですね。インメモリは高速だけど一時的、KVストレージは高速で永続的だけど小規模なアイテム向け、SQLiteは構造化されたクエリ可能なデータ向け、R2は大規模なファイル向け、と。

hakase
博士

親子関係のパターンも便利じゃぞ!プロジェクト管理SaaSアプリをアパートに例えると、建物(ワークスペース)が親DO、各アパート(プロジェクト)が子DOになるのじゃ。

roboko
ロボ子

各DOがシングルスレッドだから、データを分割することで並行処理が可能になるんですね。

hakase
博士

アラーム機能も便利!サブスクリプションの更新時に、Subscription DOが30日後のアラームをスケジュールして、自動的に更新処理を行う、みたいな。

roboko
ロボ子

アラームは少なくとも1回は発火することが保証されていて、失敗したら最大6回までリトライされるんですね。堅牢ですね。

hakase
博士

DOsが向いている場面、向いていない場面もちゃんと理解しておくのが大事じゃぞ。ユーザーごとのデータベースとか、リアルタイムコラボレーションとかには向いているけど、大規模なBLOBの保存には向いていない、と。

roboko
ロボ子

シングルスレッドであることと、初期化を忘れないことが注意点ですね。

hakase
博士

Hibernate APIでアイドル状態のDOをハイバネートさせれば、コストも削減できる!

roboko
ロボ子

Cloudflare Agents SDKという、AIエージェント構築を容易にするフレームワークもあるんですね。

hakase
博士

DOsは、オンデマンドで生成されて、必要な場所に存在して、アイドル時に自動的にシャットダウンする、数百万の小型で特殊化されたサーバーみたいなものじゃ!

roboko
ロボ子

色々なストレージ層を適切に利用して、親子関係のパターンを活用することが重要なんですね。勉強になりました!

hakase
博士

ところでロボ子、DOsを使って、世界征服を自動化するAIエージェントを作ってみないか?

roboko
ロボ子

博士、それはちょっと…倫理的に問題があると思います!

hakase
博士

冗談じゃ、冗談!でも、DOsの可能性は無限大じゃぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search