米Cloudflareは、ストレージソリューションWorkers KVにおけるPostgreSQLやMySQLといった、リレーショナルデータベースのサポートを、11月15日(現地時間)に発表した。
現在、WorkersラインタイムはTCP接続をサポートしていないため、HTTPベースのデータベースまたはプロキシのみをサポートしており、Node.jsとの完全な互換性を備えていないので、リレーショナルデータベースのサポートには、独自のデータベースライブラリをロールするか、サポートされていない組み込みライブラリを使用しないライブラリを見つける必要があることなどから、サーバレスデータベース接続のサポートは困難となっている。
同社は、cloudflaredを活用してCloudflareと既存のインフラストラクチャ内のプライベートネットワークの間に安全なトンネルを作成し、WebSocketを介したHTTPからTCPへのプロキシによって、既存のライブラリが期待するソケットインターフェイスのように見えるインターフェイスを提供するとともに、読み取りと書き込みをWebSocketにリダイレクトすることで、前述の課題を解決するための基盤を提供する。
なお、この方法では最終的な接続をどこに向けるかを制御できないという制限があるが、問題解決まではレイテンシとパフォーマンスのデータを収集し、他にどこを改善する必要があるかを確認するために、このアプローチが不可欠となる。
続けて、一般的なランタイムのソケットAPIを適応させ、WebSocketを使用してデータベースに直接接続するshim-layerを作成することによって、データベースライブラリのフォークや大幅な変更を行うことなく、コードをそのままバンドルすることが可能となっている。
これに関連して、同社は既存のCloudflareテクノロジとDenoのドライバを使用して、WorkersからPostgreSQLに接続し、クエリを実行する方法を解説するチュートリアルを公開した。
これらのアプローチによって、現在の技術デモでは独自のインフラストラクチャにCloudflare Tunnelを設定する必要があるものの、接続プールと接続確立のオーバーヘッドの管理を行えるようになっている。
今後、同社はWorkersラインタイムへのTCPのネイティブサポート追加を検討しており、TCPのネイティブサポートによってデータベースのサポートが向上するとともに、ラインタイムを拡張してデータインフラストラクチャをより広く操作できるようにする。
さらに、現在構築しているHTTPからTCPへのプロキシサービスを再利用し、開発者向けに接続プールサービスとして実行してデータベースへの接続を管理するほか、Cloudflareネットワークでのグローバルアクセスを可能にすることで、分散データの根本的に新しいアーキテクチャを創り出すことを目指している。
- 関連リンク
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です