Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GraphQL Server on Edge after that
Search
chimame
December 15, 2023
Programming
1
1.3k
GraphQL Server on Edge after that
Workers Teck Tolks #2
chimame
December 15, 2023
Tweet
Share
More Decks by chimame
See All by chimame
RemixでVersion skewに立ち向かう
chimame
1
830
私がエッジを使う理由
chimame
10
4k
Accelerating App Dev with Cloudflare Workers
chimame
1
380
GraphQL Server on Edge
chimame
12
5.5k
エッジで輝くフロントエンド
chimame
11
6.5k
Cloudflare Workersと状態管理
chimame
4
1.5k
CSRなサイトを (疑似的な)ISRに変更した話
chimame
0
560
Cloud Runマネージドに適したアプリケーションを考える
chimame
1
280
RDS Proxyを使ってAuroraと仲良くなる
chimame
0
1.1k
Other Decks in Programming
See All in Programming
Cognitoが大型アップデート!Managed Loginとパスワードレスログインを実際に使ってみた@しむそくRadio Special Day1
tmhirai
2
160
Criando Commits Incríveis no Git
marcelgsantos
1
120
Vue.js_好きに捧ぐ Nuxt Hub で簡単に始めるCloudflare
xiombatsg
1
110
我々のデザインシステムは Chakra v3 にアップデートします
shunya078
2
2.7k
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
2
250
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
10
4.1k
気をつけたい!Desktop対応で陥りやすい罠とその対策
goto_tsl
0
180
TypeScript でバックもやるって実際どう? 実運用で困ったこと3選
yuichiro_serita
17
7.5k
PipeCDの歩き方
kuro_kurorrr
3
140
初めてDefinitelyTypedにPRを出した話
syumai
0
480
大規模サイトリビルドの現場から:成功と失敗のリアルな教訓 / Site Rebuild,Real Lessons Learned from Successes and Failures_JJUG Fall 2024
techtekt
0
200
CSC305 Lecture 23
javiergs
PRO
0
110
Featured
See All Featured
Become a Pro
speakerdeck
PRO
25
5k
Teambox: Starting and Learning
jrom
133
8.8k
The Cult of Friendly URLs
andyhume
78
6.1k
Music & Morning Musume
bryan
46
6.2k
Why Our Code Smells
bkeepers
PRO
334
57k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Six Lessons from altMBA
skipperchong
27
3.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
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