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
12
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
The Present and Future of CJK Rendering in MapLibre
nekoya3
0
7
Kartore: A Style Editor and Toolkit for MapLibre
nekoya3
0
9
Kartore: Maplibre のための Style Editor とその Toolkit
nekoya3
0
26
Flagship という素晴らしいもの / This awesome thing called Flagship
nekoya3
0
2
WorkersでCMSを作ってみないか / Wanna build a CMS with Workers?
nekoya3
0
9
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
1
1.9k
北海道新型コロナウイルスまとめサイトでのいろいろなこと
nekoya3
0
470
Other Decks in Technology
See All in Technology
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
150
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
160
PfEingのアプローチで働こう
rindrics
0
180
Sony-DroidKaigi2026
sony
1
320
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
820
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
850
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
210
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
310
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
0
200
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
2.2k
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
3
2.3k
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
2
440
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
450
Documentation Writing (for coders)
carmenintech
77
5.5k
Odyssey Design
rkendrick25
PRO
2
800
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
KATA
mclloyd
PRO
35
15k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Raft: Consensus for Rubyists
vanstee
141
7.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Code Review Best Practice
trishagee
74
20k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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