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
GraphQL Server on Edge after that
Search
chimame
December 15, 2023
Programming
1.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GraphQL Server on Edge after that
Workers Teck Tolks #2
chimame
December 15, 2023
More Decks by chimame
See All by chimame
Cloudflareの向き先
chimame
1
280
Cloudflare is Agents
chimame
0
230
知って得する@cloudflare_vite-pluginのあれこれ
chimame
2
720
Boost Your Web Performance with Hyperdrive
chimame
1
610
RemixでVersion skewに立ち向かう
chimame
2
1.3k
私がエッジを使う理由
chimame
10
4.2k
Accelerating App Dev with Cloudflare Workers
chimame
1
540
GraphQL Server on Edge
chimame
12
6.8k
エッジで輝くフロントエンド
chimame
11
7k
Other Decks in Programming
See All in Programming
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
2k
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
260
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
160
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
LLM 101: Exploring LLMs, Starting with Tokens.
dalinaum
0
100
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.2k
AI-Powered Domain-Driven Design
ziobrando
0
430
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
16
9k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
4
3.8k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
48k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
3k
Become a Pro
speakerdeck
PRO
31
6.4k
Fireside Chat
paigeccino
43
4.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Transcript
GraphQL Server on Edge after that Workers Tech Talks #2
2023.12.15
活用例(In my case) ※管理画面 Cloudflare Workers Durable Objects Authentication Cloud
Messaging Crashlytics etc 認証 画像データ (R2) Socket通信 GraphQL PUSH Node.js処理サーバ GraphQL Server その他サービス 現在 前回はこのあたり話した
今日はもうちょい細かく 実用的な話
アプリケーションの移行方法
部分的(一部のURL)に移行することは可能。 Proxyすることで元のオリジンも残したままにすることも可能。
/graphql 初期はシンプルにCloudflareがドメインを管理して Cloud Runに向けていただけ /api GraphQL以外の処理をするルーティングも存在
/graphql Cloudflare WorkersのRoute機能を使ってGraphQLのエンドポイント だけ動くようにして他は従来のAPIが動作するようにする。 /api GraphQL Server リクエストは処理しないが問題が発生した 場合に即座に戻せる GraphQL以外のルーティングはCloudflare
Workersが動作しないので従来通り動作する
Database接続の注意点
リクエスト間で接続を共有することは出来ないので 都度接続する
1回目のリクエスト GraphQL Server 1回目のリクエストのコネクション 2回目のリクエスト 1回目のリクエストのコネクションを使うことは出来 ないので新たに2回目のリクエストのコネクションを 作成する Cloudflare Workersに限らず、サーバレスでは常時起動するわけでは
ないのでメモリなどの永続的な領域に頼らない方が吉
リクエストの都度のデータベース接続を行う例
非同期処理のためにリクエストの最後に接続を切らない。 接続が残ってしまうのはDB側で頑張る。
問題を再現する最小のコード do not work waitUntil also do not work disconnect
ちなみに前回の資料でDataLoaderが動作 しないといったのはこれのせいでした
https://github.com/graphql/dataloader/blob/main/src/index.js の一部のコード setImmediateは使用できないので setTimeoutが使用されて遅延処理を行う
Cloudflare Workers(サーバ)の 管理
残念ながら標準のログ機能はあまり当てにせず、 自分でログ基盤は構築すること
ログをR2に出力することはできるが…
見る(探す)方法が標準で存在しないので絶望的に使いにくい
なので自分でなんでもいいのでログ基盤は用意すること 私の場合はOpenObserveを使用しています(SQLでログ検索できるので便利)
障害も発生したりするので、SPoFでもいいが障害 が発生したことがわかるようにすること
インシデントアラート機能があるので、とりあえず設定すること https://blog.cloudflare.com/incident-alerts/
サーバ費
サーバ費は本当に1/10になってます。 請求書はこちら。
赤は管理画面も含めて すべてCloudflareに移 行 Cloud Runの請求金額の変遷 最小インスタンス数の設定などのコールドスタンバイ対策設定は無かったのであればもう少し高かった
Cloudflareの請求金額の変遷 料金改定を適用したら 高くなった?これくら いなんてことはない。
Let’s Try Originless!!
Thanks! • name: chimame / rito • job: Webエンジニア •
field: Cloudflare, GCP, AWS, Ruby, Node.js, TypeScript, React, Next.js, Remix, Docker etc • company: Goens株式会社( https://about.goen-s.com ) • twitter: @chimame_rt • GitHub: chimame