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
Full Stack Cloudflare Wokrers_at_Workers Tech T...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Horai
March 07, 2025
1
350
Full Stack Cloudflare Wokrers_at_Workers Tech Talks in Osaka_2025
Horai
March 07, 2025
Tweet
Share
More Decks by Horai
See All by Horai
HonoとPostgreSQL with Workersを本番投入に向けて検証している話
horai93
3
1.3k
Cloudflare PagesとNewtでHeadless CMSをやってみた
horai93
0
360
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
470
Ruling the World: When Life Gets Gamed
codingconduct
0
150
Exploring anti-patterns in Rails
aemeredith
2
250
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Transcript
大変だけど最高な Full Stack Cloudflare Wokrers @Workers Tech Talks in Osaka
#2 Kosuke Horai
自己紹介 • 名前: Kosuke Horai • X: @horai93 • 仕事:
TypeScriptで全部書いちゃう少人数なチームでよく 働いています • 現職: “site:任意の転職サイト Cloudflare Workers” でhit した会社で働いています
話すこと 1. Cloudflare Workers でFull Stack な Webアプリケーションを書きたい 2. Cloudflare
Workers 全振りにおける課題 3. 運用してみた a. Bindingsが便利 4. 見えてきた課題と展望 a. Cache b. Database c. etc..
Cloudflare Workers でFull Stack な Webアプリ ケーションを書きたい
PagesじゃなくてWorkers? • WorkersでもPagesでも同じようなことができるが微妙に違う • 現状は双方に片方にしかない機能があったりする ◦ 雑にGithubと繋いでデプロイするのは Github Pagesの方が楽 ◦
例えばStorybookはPagesとかでGithub接続でいいんじゃないかと思っています 1. Cloudflare Workers で Full Stack な Webアプリケーションを書きたい
WorkersとPagesは統合される(された?) 1. Cloudflare Workers で Full Stack な Webアプリケーションを書きたい
WorkersとPagesは統合される(された?) • 実際にはまだ中途半端な状態 • とはいえWorkersをベースにやっていくのが良さそう ◦ Pagesの方が特殊で、Workersの方が素直に感じている • これまではフロントエンドを考えるとPagesの方が有力だった ◦
Next.jsは next-on-pages (https://github.com/cloudflare/next-on-pages) でデプロイ可能 1. Cloudflare Workers で Full Stack な Webアプリケーションを書きたい
アプリケーションはNext.jsで書きたい! • Remixを書いてたが求人を見てもNext.jsの方が多い • もちろんRemixや他のFWがダメな訳では無いがそれでもNext.jsが王道 ◦ (実際にはそんな理由で技術選定をするのは良くないですが、とはいえ Cloudflareを活かしたいとい う理由でNext.jsから離れてた筆者からするとキャッチアップが大変 ...)
• Next.jsでcacheをうまく扱いながらサクサクなWeb Applicationを良い感じに書きた い! 1. Cloudflare Workers で Full Stack な Webアプリケーションを書きたい
@opennextjs/opennextjs-cloudflare の登場 • 2024 9月26日にCloudflareのBuilder dayで発表された • WorkersでNext.jsが動かせる ◦ edge
runtimeではなくNode.js runtime(Cloudflareによるnodejs compatibility) • 2025年3月7日時点ではまだ
[email protected]
1. Cloudflare Workers で Full Stack な Webアプリケーションを書きたい
フロントエンドはNext.jsで書ける!!
APIはHonoで書きたい!
なぜ Hono? • Next.jsのApp Routerでサーバーも書い てしまうことはできる • とはいえapiとフロントは切り離しておき たい... •
HonoでWeb StandardsなReq/Resに よるAPIの書き心地が最高 • Honoはどこでも動く のでもちろん Workersにデプロイできる! 1. Cloudflare Workers で Full Stack な Webアプリケーションを書きたい https://x.com/honojs/status/1700865974201991635
FEもBEもWorkersで書いて、 どちらも妥協せず使える! 最高!!
本当に??
@opennextjs/opennextjs-cloudflare の課題 • (再掲)2025年3月7日時点ではまだ
[email protected]
• 直近までcacheサポートがなかった。。 • せっかくNext.js使うのにCacheが良い感じに扱えない 2.
Cloudflare Workers 全振りにおける課題 (実は3月現在 d1によるCache サポートが入った @opennextjs/opennextjs-cloudflare#320)
データベースの枯れた選択肢がない • Cloudflare D1を採用する • トランザクションが必要だったり Writeヘビーだと怖いがReadメイ ンであれば使えそう • ただ10BGのsize
limitがある 2. Cloudflare Workers 全振りにおける課題
実際に運用してみた
CacheはProxyで実現 • HonoでProxyのWorkersを作成、KVにキャッシュする • Next.jsのアプリケーションは前段で全てCache Workersを通す 運用してみた 参考: Cloudflare Workersプロキシパターン
https://zenn.dev/yusukebe/articles/647aa9ba8c1550
Service Bindingsが便利 • CacheのWorkerからNext.jsを呼び出すのにBindings(http)が使える • Next.jsからのデータ取得もBindings(RPC)でシームレスに繋がる 運用してみた
Service Bindingsが便利 • fetch部分を `c.env.NEXTJS_APP.fetch(...)` のようにするだけで呼べる • これによってNEXTJS_APPはhttpに露出しなくても呼び出せる 運用してみた
Next.jsからHonoへのデータ取得はRPCコール • 運用してみた
なんとか良い感じに!(?)
課題、今後の展望
今後の展望 • @opennextjs/cloudflareの成熟を待ちつつCacheを試す • BindingsでPR単位のプレビュー環境を作れない(作れても大変) • Cloudflare D1がまだ成熟していない?(有力なDBの選択肢の不足) ◦ データのエクスポートをするにも公式の
export apiは処理がブロッキングされるため 気軽に実行できない (D1のdocumentより) > A running export will block other database requests. ダメゼッタイ `npx wrangler d1 export <database_name> --remote --output=./database.sql` ◦ Branchingがサポートされる予定の模様
Appendix
Appendix - Service bindingsのLatencyがないは本当? • new Date()を返すだけのWorkers を用意 • Service
BindingsのRPCにより呼 び出してかかった時間を計測
Appendix - Service bindingsのLatencyがないは本当? • 初回リクエストで10msぐらい余分にかかってそう • 直後のリクエストではそれがなくなる
Thank You!