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
10分で完全に理解出来る Cloudflare Workers + HyperDrive / ...
Search
Taiyu Yoshizawa
February 02, 2026
Technology
7
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
10分で完全に理解出来る Cloudflare Workers + HyperDrive / Cloudflare Workers + HyperDrive: You Might Understand It in Just 10 Minutes
社内勉強会向け資料
Taiyu Yoshizawa
February 02, 2026
More Decks by Taiyu Yoshizawa
See All by Taiyu Yoshizawa
Flagship という素晴らしいもの / This awesome thing called Flagship
nekoya3
0
2
WorkersでCMSを作ってみないか / Wanna build a CMS with Workers?
nekoya3
0
4
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
1
1.9k
北海道新型コロナウイルスまとめサイトでのいろいろなこと
nekoya3
0
460
Other Decks in Technology
See All in Technology
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
160
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
230
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.7k
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.5k
システム思考で問題に対処する
yussak
0
350
My broken English still works: speaking at global OSS events
naruoga
0
120
Digitization部 紹介資料
sansan33
PRO
2
7.7k
20分でわかるセキュアAPI
nwiizo
2
310
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
4
700
現場回帰したデータエンジニアが考える AI 時代のキャリア開発 / Career Development in the Age of AI Perspectives from a Hands-on Data Engineer
medley
0
180
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
360
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
800
Un-Boring Meetings
codingconduct
0
390
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
300
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
Product Roadmaps are Hard
iamctodd
55
12k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
A better future with KSS
kneath
240
18k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
290
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Transcript
Cloudflare Workers + Hyperdrive Taiyu Yoshizawa
Cloudflare Workers + Hyperdrive Taiyu Yoshizawa
10分で完全に理解出来る Cloudflare Workers + Hyperdrive Taiyu Yoshizawa
None
ダ二ング・クルーガー効果 完全に理解した ちょっとわかる 何もわからない
ダ二ング・クルーガー効果 完全に理解した ちょっとわかる 前半 何もわからない
ダ二ング・クルーガー効果 完全に理解した ちょっとわかる 後半 何もわからない
Cloudflare とは DNSやCDN、DDoS防御やWAF、Zero Trustなどネット ワーク関係のサービスを幅広くを提供している会社 Registrarにも2021年からはなっていて、ほぼ原価でドメイ ンを買えるとても珍しいRegistrar 最近だとWebRTCやStreamなどの映像系のサービスにも力 を入れ始めている
Cloudflare Workersとは Cloudflare が持つグローバル ネットワーク(CDN)上で動く エッジコンピューティング インフラ自体の設定も保守も基 本不要で理論上無制限にスケー リングするサーバーレス基盤 無料から利用可能で100万件の
リクエストあたり0.3 USD
Cloudflare Workersとは Cloudflare が持つグローバル ネットワーク(CDN)上で動く エッジコンピューティング インフラ自体の設定も保守も基 本不要で理論上無制限にスケー リングするサーバーレス基盤 無料から利用可能で100万件の
リクエストあたり0.3 USD
Cloudflare Workersとは ! ん ー ら か わ か る
て っ 言 何 Cloudflare が持つグローバル ネットワーク(CDN)上で動く エッジコンピューティング インフラ自体の設定も保守も基 本不要で理論上無制限にスケー リングするサーバーレス基盤 無料から利用可能で100万件の リクエストあたり0.3 USD
CDN とは? Content Delivery Network の略で、コンテンツを効率よ く配信するためのネットワークのこと。 サーバー (Origin) と
クライアントの間に立って、キャッ シュやネットワークの最適化をしてくれる AkamaiやFastly などの会社も同様の仕組みを提供している AWS で言うと CloudFront
CDN とは? Japan America クライアント サーバー (Origin) クライアントとサーバーが地理的に遠いので 遅くなってしまう
CDN とは? Japan Japan America クライアント エッジサーバー (CDN) サーバー (Origin)
CDNが間に立って静的なコンテンツを キャッシュしてくれるので体感早くなる
CDN とは? Japan Japan America エッジサーバー (CDN) サーバー (Origin) IP
Anycast クライアント Cloudflareの場合は、DNS とくっついて提供されている かつTLS 終端を行うReverse Proxy としての役目がある
エッジコンピューティングとは? ユーザーに近いエッジロケーションでデータ処理を行う技 術・コンピューティングリソースのこと さっきのCDNの例で出ていたエッジサーバーがこれに当 たる サーバー(Edge)とクライアントの地理的距離が近いので、パ フォーマンスが向上する Fastly や Deno
も似たようなサービスを提供している AWS だと CloudFront Functions or Lambda@Edge
エッジコンピューティングとは? クライアント エッジサーバー (CDN) サーバー (Origin) 毎回Originサーバーまで到達する必要があり、 パフォーマンスが悪い & Origin
サーバーに負荷が集中する
エッジコンピューティングとは? クライアント エッジサーバー (CDN) サーバー (Origin) エッジまでのネットワークで良くなるのでパフォーマンスが良い & 各ユーザーの近い位置のエッジサーバーで処理するので負荷が分散する
ちなみに
Cloudflare Workersとは Cloudflare が持つグローバル ネットワーク(CDN)上で動く エッジコンピューティング インフラ自体の設定も保守も基 本不要で理論上無制限にスケー リングするサーバーレス基盤 無料から利用可能で100万件の
リクエストあたり0.3 USD
None
None
ない!!!!
None
None
Cloudflare Workersの仕組み Workers の根幹は JavaScript エンジンである V8 にある Isolate という仕組みによって動いている
V8 はブラウザにも Node.js にも使われて居る isolateの仕組みと、外側のSandbox環境によってセキュリ ティ的に守られている 要するに JavaScript が Chromium で使われている JavaScript エンジンの上で動いている
Node.js じゃないの?
Kubernetes上のPodで Node.jsを動かす場合は、 一つの仮想化された占有領域に 一つのユーザーコードを動かす 必要がある コールドスタートな 実際のコードの どの実行時に支払う 実行領域 オーバーヘッド
isolate アプローチでは、一度 作り出した JavaScript Runtime から isolate を何千 個と作り出してユーザーコード を実行できる
コールドスタートな 実際のコードの どの実行時に支払う 実行領域 オーバーヘッド
Cloudflare Workersの仕組み Workers の根幹は JavaScript エンジンである V8 にある Isolate という仕組みによって動いている
V8 はブラウザにも Node.js にも使われて居る isolateの仕組みと、外側のSandbox環境によってセキュリ ティ的に守られている 要するに JavaScript が Chromium で使われている JavaScript エンジンの上で動いている
早い! (仮想化領域を占有しないので価格設定が)安い! (なんかよくわからんけどたぶん)うまい! (コールドスタートがなくEdgeで動くので)
最高のサービス見つけちまったぜ!
! い な は 話 い ま う に な
ん そ最高のサービス見つけちまったぜ!
Cloudflare Workers による制約
Cloudflare Workersの制約 isolateの上で動くため、メモリの内容がそのまま引き継がれ るとは限らない fsは利用できない Node.jsの標準ライブラリは利用できない(最近は解消され つつある) バイナリが必要(node-gyp) なライブラリは使えない wasmは必ずisolateのinitalize時にロードされる必要がある
etc.....
Cloudflare Developer Platform AI Analytics Engine Assets Browser Rendering D1
Durable Objects Hyperdrive Images KV Queues R2 Rate Limiting Service Bindings Tail Workers Vectorize Workflows
Cloudflare Developer Platform AI Analytics Engine Assets Browser Rendering D1
Durable Objects Hyperdrive Images KV Queues R2 Rate Limiting Service Bindings Tail Workers Vectorize Workflows
KV グローバルで低レイテンシな Key-Value データストア 書き込み時は集中型のデータセンターにデータを保存する & エッジにキャッシュを保管する or Purgeする 読み込み時はエッジにキャッシュがあればそれを、無けれ
ば集中型のデータセンターにデータを取得しに行く 各エッジでは結果整合性を持っているが、他のエッジに伝搬 するまでに60秒以上かかることがある AWS だと DynamoDB Global Table みたいなもの
Durable Object グローバルで一意な状態・ストレージを持つ低レイテンシな Workers と Storage を組み合わせたもの ステートフルなサーバーレスアプリケーションをつくるのに利 用することができる。 WebSocket
の Connection を持っておいたり、ユーザー セッションを持っておく場合などに利用できる。 KVと異なり強力な一貫性を持ち、JSのObjectを持つことが 出来る。
D1 グローバルで利用できるSQLite互換のデータベース プライマリロケーションがあり、書き込みはそのロケー ションで行われるが、読み込みは最も近いエッジから行わ れる 書き込みは強い一貫性を持つが、リードレプリカには結果整 合性があり、伝搬に時間がかかることがある トランザクションなど、一部の機能が利用できない
Hyperdrive 既存のデータベースとWorkersの間に入って、コネクション の最適化やクエリのキャッシュを行ってくれるサービス Postgres, MySQL とそのExtension はもちろん、 CockroachDB や Timescaleなどにも対応している
既存のコードそのままで、クエリキャッシュやコネクション の最適化の恩恵を受けられるのが特徴
題 本 く や よう Hyperdrive
Hyperdriveがない場合 300ms Request Handle! TCP Handshake (3-way) Authorization Connection established!
Query Result Query Request
Hyperdriveがない場合 300ms Request Handle! TCP Handshake (3-way) Workerが落ちるたびに これをやる Authorization
Connection established! Query Result Query Request
Hyperdriveがない場合 300ms Request Handle! Serverless じゃなければコネクションプールによって、解決される TCP Handshake (3-way) Authorization
Connection established! Query Result Query Request
HyperdriveがないときのPros / Cons Pros これまで通りとくに悩むこともなく、使うことは出来る 間に何かが挟まる訳ではないので素直な挙動になる Cacheに悩まされることはない
HyperdriveがないときのPros / Cons Cons 毎回コネクションをつくり直すので、オーバーヘッドが大きく なる コネクションをそれぞれのWorker isolateが持とうとするた め、コネクション数が爆発的に増加する DBとWorkerの地理的距離によるネットワークコストが直接
的にレスポンスに影響する クエリはそのまますべてDBに流れる
Hyperdriveがある場合 10ms 300ms TCP Handshake Authorization Request Handle! Query Request
Request Handle! Query Request Query Result Hyperdrive Cache HIt! Hyperdrive Cache Miss Query Request
Hyperdriveがある場合 10ms 300ms TCP Handshake Authorization Request Handle! Query Request
Request Handle! Query Request Query Result Hyperdrive Cache HIt! リクエストがくる前 or 来たタイミングで コネクションプールを用意する Hyperdrive Cache Miss Query Request
Hyperdriveがある場合 10ms 300ms TCP Handshake Authorization クエリキャッシュが存在すれば、それを返す Request Handle! Query
Request Hyperdrive Cache HIt! Request Handle! Query Result Query Request Hyperdrive Cache Miss Query Request
Hyperdriveがある場合 10ms 300ms TCP Handshake Authorization Request Handle! Request Handle!
Query Result Query Request Query Request Hyperdrive Cache HIt! クエリキャッシュが存在しなければ、 DBにリクエストしてそれを返す Hyperdrive Cache Miss Query Request
HyperdriveがあるときのPros / Cons Pros コネクションプールをHyperdriveがマネージドで管理するの で、爆発的に増加しないし、オーバーヘッドも少ない クエリ結果をHyperdriveがキャッシュしていれば、DBヘの 負荷軽減も期待できる & パフォーマンスも向上する
DBとWorkerの地理的距離に大きく左右されることなく、 Cloudflare Global Networkの恩恵を受けながら安定した レスポンス速度を期待できる
Hyperdriveがない時のPros / Cons Cons Workers <-> Hyperdrive 、 Hyperdrive <->
DB の2つ のネットワークリクエストになるため、初回以外のネット ワークレイテンシは若干増加することがある Hyperdriveがキャッシュするため、キャッシュの挙動に悩ま されることがあるかも
HyperdriveとDBの接続方法 DBをPublicに配置して直接アクセス出来るようにする DBをPrivateに配置して、Cloudflare Tunnel を使ってコネ クションをつなぎに行く
HyperdriveとDBの接続方法 DBをPublicに配置して直接アクセス出来るようにする Internet AWS Public Subnet
HyperdriveとDBの接続方法 DBをPrivateに配置して、Cloudflare Tunnel を使ってコネ クションをつなぎに行く AWS Public Subnet Cloudflare Tunnel
database.example.com Private Subnet 172.x.x.x
HyperdriveとDBの接続方法 DBをPrivateに配置して、Cloudflare Tunnel を使ってコネ クションをつなぎに行く AWS Public Subnet Cloudflare Tunnel
database.example.com セキュリティ的にも ちょっとうれしい Private Subnet 172.x.x.x
Hyperdriveを実際に使ってみよう Dashboard 見たり コード見たり
Hyperdriveを実際に使ってみよう 1 // wrangler.jsonc 2 { 3 ... 4 "hyperdrive":
[ 5 { 6 "binding": "HYPERDRIVE_DB", 7 "id": "039de7c44d4b45fab171c85ba68aba38" 8 } 9 ], 10 ... 11 }
Hyperdriveを実際に使ってみよう 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 import { Hono } from 'hono'; import { drizzle } from 'drizzle-orm/postgres-js'; /* type CloudflareBindings = { HYPERDRIVE_DB: Hyperdrive } */ const app = new Hono<{ Bindings: CloudflareBindings }>(); app.use('*', (c, next) => { const db = drizzle(c.env.HYPERDRIVE_DB.connectionString); c.set('db', db); return next(); });
Hyperdriveを実際に使ってみよう 1 app.get('/account/me', async (c) => { 2 const db
= c.get('db') 3 const userId = "nekoyasan" // 実際にはどこかで送っている 4 if (!db) throw new Error('Database connection not found in context'); 5 6 const userData = await db.select({ 7 id: userDetail.userId, 8 displayName: userDetail.displayName, 9 iconImage: userDetail.iconImage, 10 }) 11 .from(userDetail) 12 .where(eq(userDetail.userId, userId)); 13 14 return c.json({ result: userData[0] }) 15 })
Hyperdriveを実際に使ってみよう 設定さえ出来てしまえば使うのはめちゃめちゃ簡単 Localの場合は WRANGLER_HYPERDRIVE_LOCAL_CONNECTION_ STRING_HYPERDRIVE_DB という環境変数が入っていればwranglerが良い感じにしてく れて、Local 開発でも便利
Cloudflare Workers ぜひ使ってみてね!
None