4月6日、CloudflareはCloudflare WorkersにJavaScriptネイティブのRPC(Remote Procedure Call)システムを追加した。
この新機能により、クライアント・サーバー間はもちろん、Worker間の通信も、ほぼボイラープレートなしでシームレスに行えるようになる。
開発者は以下のように、クラスを定義し、メソッドを呼び出すだけで、複雑なスキーマやルーターの設定をする必要がなくなる。
export class MyService extends WorkerEntrypoint {
sum(a, b) {
return a + b;
}
}
呼び出し側のコード:
let three = await env.MY_SERVICE.sum(1, 2);
CloudflareのRPCシステムは、Cap'n Protoをベースとして構築された。
Cap'n Protoは、高性能なデータ交換フォーマットおよびRPCシステムである。データのシリアライズおよびデシリアライズにかかる時間を最小限に抑えることを目的として設計されており、ゼロコピーでのデータアクセスを可能にすることで、非常に高速なデータ処理を実現する。これは、特に大量のデータを扱う分散システムや、レイテンシーが重要なアプリケーションにおいて大きなメリットをもたらす。CloudflareのRPCシステムは、このCap'n Protoに基づいて構築されているが、スキーマを書く必要がないなど、JavaScriptの使用に最適化された設計が施されている。
このRPCシステムは、リモートサービスをライブラリのように感じられるほど表現力に富んでおり、セキュリティの面でも利点がある。依存関係が少なくなるため、セキュリティ更新の必要性が減り、サプライチェーン攻撃への露出が少なくなる。Workers RPCには、JSONオブジェクトをパラメーターや戻り値として渡せる機能、関数やオブジェクトのメソッドをRPCのパラメーターや戻り値として使用できる機能など、多くの特徴がある。
更に、Worker間でのRPCはネットワークを越えることなく、同じスレッド上で実行されることが多いため、遅延がゼロになり、パフォーマンスが向上する。
Cloudflareはこの技術を用いて、従来のHTTPベースの通信に代わるものとして、より直感的で簡単に使用できるRPCベースのサービスバインディングを提供し、アプリケーション開発の効率化を図る。このシステムは、プロトコルと実装が完全にオープンソースとして提供されているため、今後のウェブ開発において、この技術が大きな影響をもたらす可能性もあり、業界からの注目が集まっている。
詳細はWe've added JavaScript-native RPC to Cloudflare Workersを参照されたい。
Cloudflareはこの技術を用いて、従来のHTTPベースの通信に代わるものとして、より直感的で簡単に使用できるRPCベースのサービスバインディングを提供し connect 4