CDNレイヤでDBのコネクションプーリングとクエリキャッシュを提供。世界中どこからのDBアクセスでも高速化する「Hyperdrive」、Cloudflareが提供
今回は「CDNレイヤでDBのコネクションプーリングとクエリキャッシュを提供。世界中どこからのDBアクセスでも高速化する「Hyperdrive」、Cloudflareが提供」についてご紹介します。
関連ワード (動作、北米、通信等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Cloudflareは、グローバルなCDNレイヤでデータベースのコネクションプーリングとクエリのキャッシュを提供することによりデータベースへのアクセスを高速化する新サービス「Hyperdrive」のオープンベータを開始したと発表しました。
Want to make the existing regional database in your legacy cloud provider much, much faster? We've just launched Hyperdrive, which dramatically speeds up queries you make to databases you already have from Cloudflare Workers. https://t.co/0engeFePUP #BirthdayWeek
— Cloudflare (@Cloudflare) September 28, 2023
データベースが遠ければアプリは遅くなってしまう
Cloudflareは、CDNのエッジでアプリケーションを実行する「Cloudflare Workers」を提供しています。Cloudflare Workersはユーザーの近くにあるCDNエッジで動作することで、高速なレスポンスを可能にしています。
しかし一般的にアプリケーションのバックエンドにはMySQLやPostgreSQLといったデータベースが稼働しており、アプリケーションから頻繁にアクセスされます。
もしもこのデータベースが北米のデータセンターで稼働している場合、欧州やアジアやアフリカからアクセスするユーザーはどうなるでしょうか?
欧州やアジアやアフリカからアクセスするユーザーは、自分の近くにあるCDNエッジで稼働するCloudflare Workersにアクセスできるものの、そのCloudflare Workersは太平洋や大西洋を越えて北米にあるバックエンドデータベースにアクセスすることになります。
すると、結局は海を越えて遠い距離を何度も往復する通信が発生してしまい、その待ち時間が発生することでユーザーへのレスポンスが遅くなってしまいます。
せっかくCloudflare Workersをユーザーの近くで提供できたとしても、データベースまでの距離が遠ければそのメリットを十分に発揮できないのです。
データベースはそのままで世界中からのアクセスを高速化する
この問題を本質的に解決するには、データベースそのものも分散化し、ユーザーの近くで実行できるようにすることです。
CloudflareはそのためにCDNエッジで稼働するSQLiteベースの分散データベース「Cloudflare D1」を開発中です。
参考:Cloudflare、分散SQLiteデータベース「Cloudflare D1」のオープンベータを開始
しかし大容量のデータの保持、高性能なトランザクション処理の実現といったことを実現しようとすると、まだしばらくはMySQLやPostgreSQLといった従来のリレーショナルデータベースを選択することが合理的な判断になるでしょう。
そこで従来のデータベースを使いつつ、世界中に分散したCDNエッジからのアクセスを高速化するための技術が必要になってきます。
それを実現するために登場したのが、今回発表されたHyperdriveなのです。
CDNレイヤでコネクションプールとクエリキャッシュを提供
Hyperdriveは2つの機能を提供することで、世界中のCDNエッジからのデータベースアクセスを高速化します。
1つはデータベースへのコネクションプールをグローバルなCDNのレイヤで共有する機能です。
アプリケーションからデータベースへのクエリは、まずデータベースへのコネクションを確立する処理から始まります。
このコネクション処理は時間のかかる重い処理であることが知られているため、ミドルウェアであらかじめデータベースとのコネクションを何本も保持しておき、アプリケーションからのコネクション要求にはそのコネクションを使い回すことでコネクション処理を省略する、「コネクションプーリング」という有名なテクニックがあります。
HyperdriveはこのコネクションプーリングをグローバルなCDNレイヤで実現することで、どのCDNエッジからでも、高速にデータベースへのコネクションを確立できるわけです。
Hyperdriveが提供するもう1つの機能は、よく使われる読み取りクエリを自動的にキャッシュする機能です。
ユーザーがクエリを実行する場所の近くにクエリの結果をキャッシュすることで、レスポンスを劇的に高速化できると説明されています。
この2つの機能により、世界中のCDNエッジからのデータベースアクセスが高速化されるわけです。
ほとんどのケースで大幅に高速に
Cloudflareは実際にHyperdriveを用いて動作するデモを公開しています。下記がその結果の画面です。
濃いグレイのマーカーが、データベースへの直接接続とクエリにかかった時間を示し、オレンジのマーカーがHyperdrive経由での接続とクエリにかかった時間を示しています。
Hyperdrive経由での接続の方が遅いケースもありますが、ほとんどのケースでHyperdrive経由での接続は圧倒的に高速になっており、実際に効果があることが分かります。
PostgreSQLに対応し、今後MySQLへの対応なども
Hyperdriveは現時点でPostgreSQLに対応しています。これはGoogle CloudのCloud SQL for PostgreSQLやAlloyDB for PostgreSQL、CockroachDBなどPostgreSQL互換のデータベース対応も含まれています。
今後はMySQLを含む多くのデータベースへの対応、書き込み処理のキャッシュなどさらなる高速化、プライベートネットワークへの対応などにも取り組むとしています。
Hyperdriveの正式リリースは2024年初頭の予定と発表されています。