Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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.8k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.3k
Cloudflare Workersで構築する非同期ジョブシステム
aiji42
7
3.5k
VRTツールのダークホース Lost Pixelを紹介したい
aiji42
5
3.4k
オリジンサーバに手を付けないパーフォマンス改善
aiji42
5
2k
Cloudflare Fonts試してみた🔤
aiji42
2
930
Workers Browser Rendering API について
aiji42
0
700
VercelとNext.jsの機能を最大限に活用したA/Bテスト手法
aiji42
6
1.9k
Cloudflare WorkersとKVで キャッシュを非同期に更新する | Cloudflare Meetup Nagoya
aiji42
1
1.1k
ビギナー向け エッジランタイムのすすめ | エッジランタイムを意識した開発をはじめよう
aiji42
15
6.4k
Other Decks in Technology
See All in Technology
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
210
音声コミュニティを守るAI監視基盤_ 90%以上の入力削減を支えたServerless設計と運用判断
shuheioka123
0
110
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
300
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
210
Amazon Bedrock Agents ClassicからAmazon Bedrock AgentCoreへ移行した際、ガードレール設定が2箇所に割れた話
matsunobu
0
140
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
1
240
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
1
100
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
320
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.8k
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
140
AIエージェント時代のPlatform as a Product —— テックリードがPdMとして回す発見・導入・計測 / Platform as a Product in the AI Agent Era
toshi0607
1
470
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
430
The untapped power of vector embeddings
frankvandijk
2
1.9k
Docker and Python
trallard
47
4.2k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
390
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Believing is Seeing
oripsolob
1
230
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Building Applications with DynamoDB
mza
96
7.2k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
540
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The agentic SEO stack - context over prompts
schlessera
0
940
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 ご清聴ありがとうございました