GraphQL Server on Edge after that
by
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
GraphQL Server on Edge after that Workers Tech Talks #2 2023.12.15
Slide 2
Slide 2 text
活用例(In my case) ※管理画面 Cloudflare Workers Durable Objects Authentication Cloud Messaging Crashlytics etc 認証 画像データ (R2) Socket通信 GraphQL PUSH Node.js処理サーバ GraphQL Server その他サービス 現在 前回はこのあたり話した
Slide 3
Slide 3 text
今日はもうちょい細かく 実用的な話
Slide 4
Slide 4 text
アプリケーションの移行方法
Slide 5
Slide 5 text
部分的(一部のURL)に移行することは可能。 Proxyすることで元のオリジンも残したままにすることも可能。
Slide 6
Slide 6 text
/graphql 初期はシンプルにCloudflareがドメインを管理して Cloud Runに向けていただけ /api GraphQL以外の処理をするルーティングも存在
Slide 7
Slide 7 text
/graphql Cloudflare WorkersのRoute機能を使ってGraphQLのエンドポイント だけ動くようにして他は従来のAPIが動作するようにする。 /api GraphQL Server リクエストは処理しないが問題が発生した 場合に即座に戻せる GraphQL以外のルーティングはCloudflare Workersが動作しないので従来通り動作する
Slide 8
Slide 8 text
Database接続の注意点
Slide 9
Slide 9 text
リクエスト間で接続を共有することは出来ないので 都度接続する
Slide 10
Slide 10 text
1回目のリクエスト GraphQL Server 1回目のリクエストのコネクション 2回目のリクエスト 1回目のリクエストのコネクションを使うことは出来 ないので新たに2回目のリクエストのコネクションを 作成する Cloudflare Workersに限らず、サーバレスでは常時起動するわけでは ないのでメモリなどの永続的な領域に頼らない方が吉
Slide 11
Slide 11 text
リクエストの都度のデータベース接続を行う例
Slide 12
Slide 12 text
非同期処理のためにリクエストの最後に接続を切らない。 接続が残ってしまうのはDB側で頑張る。
Slide 13
Slide 13 text
問題を再現する最小のコード do not work waitUntil also do not work disconnect
Slide 14
Slide 14 text
ちなみに前回の資料でDataLoaderが動作 しないといったのはこれのせいでした
Slide 15
Slide 15 text
https://github.com/graphql/dataloader/blob/main/src/index.js の一部のコード setImmediateは使用できないので setTimeoutが使用されて遅延処理を行う
Slide 16
Slide 16 text
Cloudflare Workers(サーバ)の 管理
Slide 17
Slide 17 text
残念ながら標準のログ機能はあまり当てにせず、 自分でログ基盤は構築すること
Slide 18
Slide 18 text
ログをR2に出力することはできるが…
Slide 19
Slide 19 text
見る(探す)方法が標準で存在しないので絶望的に使いにくい
Slide 20
Slide 20 text
なので自分でなんでもいいのでログ基盤は用意すること 私の場合はOpenObserveを使用しています(SQLでログ検索できるので便利)
Slide 21
Slide 21 text
障害も発生したりするので、SPoFでもいいが障害 が発生したことがわかるようにすること
Slide 22
Slide 22 text
インシデントアラート機能があるので、とりあえず設定すること https://blog.cloudflare.com/incident-alerts/
Slide 23
Slide 23 text
サーバ費
Slide 24
Slide 24 text
サーバ費は本当に1/10になってます。 請求書はこちら。
Slide 25
Slide 25 text
赤は管理画面も含めて すべてCloudflareに移 行 Cloud Runの請求金額の変遷 最小インスタンス数の設定などのコールドスタンバイ対策設定は無かったのであればもう少し高かった
Slide 26
Slide 26 text
Cloudflareの請求金額の変遷 料金改定を適用したら 高くなった?これくら いなんてことはない。
Slide 27
Slide 27 text
Let’s Try Originless!!
Slide 28
Slide 28 text
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