Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Hyperdrive試してみた🛸
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
AijiUejima
October 06, 2023
Technology
1.6k
3
Share
Hyperdrive試してみた🛸
Cloudflare Meetup Nagoya 第3回にて発表した資料です。
https://cfm-cts.connpass.com/event/294096/
AijiUejima
October 06, 2023
More Decks by AijiUejima
See All by AijiUejima
エッジはフロントエンドなのか? バックエンドなのか? について考えてみる
aiji42
7
6.1k
Cloudflare Workersで構築する非同期ジョブシステム
aiji42
7
3k
VRTツールのダークホース Lost Pixelを紹介したい
aiji42
5
3.2k
オリジンサーバに手を付けないパーフォマンス改善
aiji42
5
1.8k
Cloudflare Fonts試してみた🔤
aiji42
2
880
Workers Browser Rendering API について
aiji42
0
660
VercelとNext.jsの機能を最大限に活用したA/Bテスト手法
aiji42
6
1.8k
Cloudflare WorkersとKVで キャッシュを非同期に更新する | Cloudflare Meetup Nagoya
aiji42
1
1.1k
ビギナー向け エッジランタイムのすすめ | エッジランタイムを意識した開発をはじめよう
aiji42
15
6.3k
Other Decks in Technology
See All in Technology
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
280
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
340
実践ハーネスエンジニアリング:TAKTで実現するAIエージェント制御 / Practical Harness Engineering: AI Agent Control Enabled by TAKT
nrslib
9
4.2k
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
6
1.1k
明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Niche AWS Security Tips
yuj1osm
0
550
AWS DevOps Agentはチームメイトになれるのか?/ Can AWS DevOps Agent become a teammate
kinunori
6
680
AI時代 に増える データ活用先
takahal
0
190
No Types Needed, Just Callable Method Check
dak2
1
630
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
430
Introduction to Bill One Development Engineer
sansan33
PRO
0
410
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
140
最初の一歩を踏み出せなかった私が、誰かの背中を押したいと思うようになるまで / give someone a push
mii3king
0
160
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Become a Pro
speakerdeck
PRO
31
5.9k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
520
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
100
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
170
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
260
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
First, design no harm
axbom
PRO
2
1.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Transcript
© 2023 Ateam Inc. Hyperdrive試してみた🛸 Cloudflare Meetup Nagoya #3
© 2023 Ateam Inc. ⾃⼰紹介 Who am I ? Name:
Aiji Uejima X(旧Twitter): aiji42_dev Github: aiji42 株式会社エイチームライフデザイン技術開発室所属 リードエンジニア 最近興味があるのはエッジランタイム。 毎⽇プライベートでGithubに草⽣やしながら頑張ってます! 2
© 2023 Ateam Inc. 🚧 注意 3 本⽇発表する内容は 2023-10-06 時点の情報です。
現在の Hyperdrive のステータスはオープンベータです。 よって、仕様が変更される可能性があります。
© 2023 Ateam Inc. Birthday Weekでの発表 4 https://blog.cloudflare.com/ja-jp/hyperdrive-making-regional-databases-feel-distributed-ja-jp/ 先⽉末(2023年9⽉)のBirthday WeekにてブログでHyperdriveなるものが発表されました。
© 2023 Ateam Inc. Hyperdriveとは 6 https://blog.cloudflare.com/ja-jp/hyperdrive-making-regional-databases-feel-distributed-ja-jp/ Hyperdriveは当社のグローバルネットワークを使用して、レガシーなクラ ウドプロバイダーであろうとお気に入りのサーバーレスデータベースプロ バイダーであろうと、既存のデータベースへのクエリーを高速化し、新しい
データベース接続を繰り返し設定することで発生する遅延を劇的に短縮 し、データベースに対して最も一般的な読取りクエリーをキャッシュしま す。 端的に⾔うとWorkerとDBの接続を⾼速化するものらしい
© 2023 Ateam Inc. WorkerからTCPでDBと接続する上での課題 7 ACK SYN-ACK SYN ClientHello
ServerHello Certificate ServerHelloDone ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec Finished ‧ ‧ ‧ 先述のブログによれば、WorkerとDBのコネ クション確⽴において TCP + TLS + 認証のた めに最低7往復の通信が⾛る(らしい) ※TCPで1往復、TLSで2往復、残りの4往復は具体的に何な のかわからない(詳しい⼈教えて下さい) 例えば北⽶(オレゴン)にDBがあり、名古屋から 接続すると最寄り(東京or⼤阪)のWorkerが割り 当てられる。 東京‧オレゴン間で1往復に100~300msかかる とすると、コネクションの確⽴に1~2sは要する Workerが⽴ち上がるたびにこのオーバヘッドが 必要になる SQL Query SQL Execute Result + 4? (Auth)
© 2023 Ateam Inc. この問題を解決するためのHyperdrive Workerに近い位置で寿命が⻑めのリソース (Hyperdrive)を⽤意しておき、先にDBとのコ ネクションを確⽴しておく。 WorkerはHyperdriveとコネクトするが、 物理的に距離が近いのでDBとダイレクトにコ
ネクトするよりも速い。 加えてHyperdriveはクエリキャッシュの機能も 備えている。 https://blog.cloudflare.com/ja-jp/hyperdrive-making-regional-databases-feel-distributed-ja-jp/
© 2023 Ateam Inc. Hyperdriveがオーバヘッドを低減するイメージ 9 ‧ ‧ ‧ ‧
‧ pre connect Hyperdriveなし Hyperdriveあり
© 2023 Ateam Inc. 実際にCloudflareが⽤意したデモサイト 10 https://hyperdrive-demo.pages.dev/
© 2023 Ateam Inc. 試しに使って計測してみた 11 https://zenn.dev/aiji42/scraps/62411e4b0daaed 時間の都合上駆け⾜でいきますので、 コードに関して気になる⽅は私のZennのスクラップを参照してください。
© 2023 Ateam Inc. Hyperdriveの⽤意 12 wrangler hyperdrive create <name>
--connection-string="postgres://…" `wrangler hyperdrive create`コマンドで任意のDBをHyperdriveに登録 Webのコンソールからは登録‧確認等はできない Postgresのみ対応(MySQLは年内に対応されるとのこと) 登録後は `wrangler hyperdrive list` で確認できる
© 2023 Ateam Inc. wrangler.tomlにBindingsとして追加 13 `hyperdrive create`(もしくは`hyperdrive list`)実⾏時に表⽰されたidを wrangler.tomlに記載すれば即利⽤可能になる。
© 2023 Ateam Inc. Workerから利⽤する 14 `env.HYPERDRIVE`を使ってSQLクライアントを⽣成 $ wrangler dev
‒remote で⽴ち上げれば利⽤可能になる
© 2023 Ateam Inc. 計測を開始 15 データベースは Neon オハイオリージョン 1リクエスト中で同⼀のSELECTを複数回実⾏し、クエリが解決される時間を計測
計測ケース 1. HyperdriveなしTCP接続 2. Hyperdriveあり+クエリキャッシュなし 3. Hyperdriveあり+クエリキャッシュあり
© 2023 Ateam Inc. 計測結果 16
© 2023 Ateam Inc. 計測結果 17 Hyperdriveなしでは初期コネクションのオーバヘッドが著しく⼤きく Hyperdriveによってそれが緩和されていることがわかる
© 2023 Ateam Inc. 計測結果 18 クエリキャッシュがヒットしている状態であれば、かなりパフォーマンスが改善 されている
© 2023 Ateam Inc. 計測結果 19 Hyperdriveありの⽅が、1クエリごとの処理時間は40~50ms増加している
© 2023 Ateam Inc. Hyperdriveを経由することによるレイテンシ Hyperdriveを経由するラウンドトリップ分の レイテンシが計上される
© 2023 Ateam Inc. 実測から⾒えてきたHyperdrive利⽤の勘所 21 - 1,2回しかクエリを発⾏しないのであればHyperdriveを利⽤した⽅が速い - 初回コネクションオーバヘッドの低減効果が⼤きい
- クエリを直列に複数回発⾏するケースでは逆転する可能性がある - Hyperdriveを経由する分のレイテンシが発⽣するため - コネクション確⽴のオーバヘッド vs 各クエリのレイテンシ累計 - クエリキャッシュの効果は絶⼤ - 何をキーにキャッシュしているのか、TTLや破棄される条件などは、情報が明 かされていないので注意が必要 - `$ wrangler hyperdrive update`でQCはオフにできる(デフォルトはオン)
© 2023 Ateam Inc. 22 < でもよく考えたら北⽶にDB置くケースは⾃分にはなかったわ...
© 2023 Ateam Inc. 国内で完結する構成で再計測してみる 23 データベースは Supabase バージニアリージョンと東京リージョンを⽤意 (Neonはアジアはシンガポールにしかリージョンがないので、⽐較しやすいようにSupabaseに変更)
1リクエスト中で同⼀のSELECTを複数回実⾏し、クエリが解決される時間を計測 計測ケース 1. HyperdriveなしTCP接続 2. Hyperdriveあり+クエリキャッシュなし (クエリキャッシュありは省略)
© 2023 Ateam Inc. 再計測 24 バージニア 東京
© 2023 Ateam Inc. 再計測 25 バージニア 東京 物理距離がパフォーマンスに与える影響が⽀配的であることがわかる
© 2023 Ateam Inc. 再計測 26 バージニア 東京 バージニアほどの差は無いが、近距離でも初期コネクションのオーバヘッド低減 効果は⼀定ある(距離が短いとはいえ7往復もしていればこのくらいの差は出る)
© 2023 Ateam Inc. 再計測 27 バージニア 東京 Hyperdrive経由分のレイテンシは若⼲あるが3ms程度なら無視できるかも
© 2023 Ateam Inc. 改めて利⽤における勘所 28 - DBのロケーションに関わらず、とりあえずHyperdriveは利⽤すると良さそう - 初期コネクションオーバヘッドの低減のため
- 各クエリに上乗せされるレイテンシは近距離であれば数ms - 遠距離であっても、1クエリで解決させるとか、Promiseで⾮同期に処理させる など、⼯夫次第でこのレイテンシは改善できる - クエリキャッシュは効果が期待できるが、キャッシュの仕様が明かされていないの で、事故を避けるため⼀旦オフで良いと思う ※あくまで⾃⾝のユースケースで評価した個⼈的⾒解です
© 2023 Ateam Inc. 29 < でもHyperdriveなくても国内完結なら⼗分速くない? < まあ確かに... (てか、この狭い国⼟に複数リージョンあるって⽇本すげーな)
© 2023 Ateam Inc. Hyperdriveの利⽤を後押しする話(料⾦) 30 https://developers.cloudflare.com/hyperdrive/platform/pricing/ ベータ期間中は有料アカウントなら誰でも使⽤可能 コネクションプーリングに関しては永続無料、クエリキャッシュは有料化予定
© 2023 Ateam Inc. Hyperdriveの利⽤を後押しする話(コネクションプール) 31 そもそもDBとWorkerが1対1なんてことは稀
© 2023 Ateam Inc. Hyperdriveの利⽤を後押しする話(コネクションプール) 32 Workerはスケールし、その分だけコネクションが発⽣するため、 コネクションプールがないとリソースが枯渇して新たにコネクションを確⽴できなくなる ❌ ❌
© 2023 Ateam Inc. Hyperdriveの利⽤を後押しする話(コネクションプール) 33 Supabase などの最近のDBaaSや、Aurora Serverlessなどはサーバレスから接続 されることが前提にあるので、プーリングを持っているサービスも増えている
https://supabase.com/blog/supabase-pgbouncer
© 2023 Ateam Inc. Hyperdriveの利⽤を後押しする話(コネクションプール) 34 プーリングを持たないDBを利⽤したいときには、Hyperdriveを使⽤して枯渇を 防⽌したほうが良い(無料だし) region A
region B
© 2023 Ateam Inc. 改めて利⽤における勘所(再掲) 35 - DBのロケーションに関わらず、とりあえずHyperdriveは利⽤すると良さそう - 初期コネクションオーバヘッドの低減のため
- 各クエリに上乗せされるレイテンシは近距離であれば数ms(誤差程度) - 遠距離であっても、1クエリで解決させるとか、Promiseで⾮同期に処理させる など、⼯夫次第でこのレイテンシは改善できる - コネクションプールとしての利⽤もあり(DB側に機能がないなら) - 無料だし - クエリキャッシュは効果が期待できるが、キャッシュの仕様が明かされていないの で、事故を避けるため⼀旦オフで良いと思う - こちらは将来的に有料化予定 ※あくまで⾃⾝のユースケースで評価した個⼈的⾒解です
© 2023 Ateam Inc. 36 ご清聴ありがとうございました