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
AIエージェントを安全で速い現場監督にする:Jev・Obsidian・メタハーネス
x5gtrn
PRO
0
140
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
690
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
170
AI Agent入門〜今更聞けないAgentの話〜
hiromimaganuma
0
130
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
120
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
370
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
1
250
AWS FinOps Agent 結局何が得意なの?
siromi
0
220
AI臭い文章とは何なのか
nasuvitz
26
46k
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
1
540
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
760
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
320
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
820
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
Building an army of robots
kneath
307
47k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Tell your own story through comics
letsgokoyo
1
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
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 ご清聴ありがとうございました