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
GraphQL Server on Edge
Search
chimame
July 19, 2023
Programming
12
5.2k
GraphQL Server on Edge
Workers Teck Tolks #1
chimame
July 19, 2023
Tweet
Share
More Decks by chimame
See All by chimame
私がエッジを使う理由
chimame
10
3.8k
GraphQL Server on Edge after that
chimame
1
1.1k
Accelerating App Dev with Cloudflare Workers
chimame
1
340
エッジで輝くフロントエンド
chimame
11
6.3k
Cloudflare Workersと状態管理
chimame
4
1.4k
CSRなサイトを (疑似的な)ISRに変更した話
chimame
0
510
Cloud Runマネージドに適したアプリケーションを考える
chimame
1
260
RDS Proxyを使ってAuroraと仲良くなる
chimame
0
1k
BigQueryの簡単データ参照
chimame
1
360
Other Decks in Programming
See All in Programming
CSC307 Lecture 09
javiergs
PRO
1
500
CSC307 Lecture 06
javiergs
PRO
0
360
さきがけから振り返るアーキテクチャ刷新 / Reflecting on the Architectural Renewal from the Vanguard
nrslib
2
780
企業向け生成AIアプリの 開発から得られた知見
takaakikakei
0
310
MIERUNE BBQにおけるユーザー中心設計()
mierune
PRO
1
110
ぼっちを避けて楽しむためのアノテコノテ / Various Tips and Tricks to Avoid Loneliness and Have Fun
nrslib
3
1.7k
ピグパーティにおけるMongoDB CommunityバージョンからAtlasへの移行事例
10969hotaka
0
130
Composing an API the *right* way (Droidcon Berlin 2024)
zsmb
1
450
社内 LT 会を発足し、アウトプット文化を醸成させるために考えたこと・やったこと / Starting internal LT meetings and fostering an output culture
mackey0225
3
120
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
コード生成を伴うLLMエージェント - 2024.07.18 Tokyo AI
smiyawaki0820
11
4.1k
Architectures with Lightweight Stores: New Rules and Options
manfredsteyer
PRO
0
100
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
How GitHub (no longer) Works
holman
305
140k
Why Our Code Smells
bkeepers
PRO
332
56k
What's in a price? How to price your products and services
michaelherold
239
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
245
1.2M
Learning to Love Humans: Emotional Interface Design
aarron
269
39k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
The Mythical Team-Month
searls
217
43k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
44
4.7k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
WebSockets: Embracing the real-time Web
robhawkes
59
7.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
360
22k
Transcript
GraphQL Server on Edge Workers Tech Talks #1 2023.07.19
目次 • (GraphQL) API Server 構築 • サーバレスコンテナサービスの運用課題 • Cloudflare
Workersという選択肢 • ユースケース • まとめ
今日話すことの細かい実装はこちら
(GraphQL) API Server • APIサーバはどこにどうやって建てますか? ◦ Amazon Web Services(Fargate, App
Runner, EKS) ◦ Google Cloud(App Engine, Cloud Run, GKE) ◦ Azure(Container Instances, Container Apps, AKS) ◦ オンプレ • Backend for frontend(BFF)の設計になるとAPI Serverの管理者は誰? ◦ バックエンド? ◦ フロントエンド?
(GraphQL) API Server 私の場合は、初手は大体Cloud Run • サーバレスアーキテクチャにしてインフラコストを 極限まで下げる • 最終的にデータがBigQueryに行くことが多いの
で、Google Cloudは結局使うことになる • アプリケーションが最終的にコンテナで動けば、他 に移行もそこまで難しくない
サーバレス(コンテナ)サービスの運用課題 Cloud Runに限らず、サーバレスも銀の弾丸ではない • コンテナのデプロイまでの時間がかかる • コールドスタートを短く抑えないといけない • コンピュータリソースあたりの単価は高め
さて、どうしよう??🤔
Cloudflare Workersという選択肢 パブリッククラウドのサーバレスサービスと比較して異なるところ • ビルドしたファイルをデプロイする • V8エンジンをランタイムとして採用 • 基本料金$5で、最低100万リクエストは処理できる
Cloudflare Workersという選択肢 パブリッククラウドのサーバレスサービスと比較して異なるところ • ビルドしたファイルをデプロイする → コンテナを入れ替えるより高速にデプロイが可能 • V8エンジンをランタイムとして採用 →
V8 isolateを使用することで高速に起動できる • 基本料金$5で、最低100万リクエストは処理できる → 計算リソースあたりの単価が非常に安価
Cloudflare Workersという選択肢 なんで今まで選択されてこなかった? • Cloudflareにロックインする • ランタイムがNode.jsではないのでNode.jsに依存する資産は使用できない • Cloudflare WorkersからRDBMSに接続するにはhttpで接続するしかなかった
Cloudflare Workersという選択肢 なんで今まで選択されてこなかった? • Cloudflareにロックインする • ランタイムがNode.jsではないのでNode.jsに依存する資産は使用できない • Cloudflare WorkersからRDBMSに接続するにはhttpで接続するしかなかった
許容すれば選択可 TCPでの接続が行えるようになった
※管理画面 ユースケース Cloudflare Workers Durable Objects Authentication Cloud Messaging Crashlytics
etc 認証 画像データ Socket通信 GraphQL PUSH その他サービス サービス初期
※管理画面 ユースケース Cloudflare Workers Durable Objects Authentication Cloud Messaging Crashlytics
etc 認証 画像データ (R2) Socket通信 GraphQL PUSH Node.js処理サーバ GraphQL Server その他サービス 現在
ユースケース ライブラリの変遷 • Fastify • Apollo Server • Prisma •
Pothos • GraphQL Yoga • Kysely (Prisma) • Pothos 2.0からWeb Standard APIで動作するように再構築されている。 そのためCloudflare Workersでも動作する。 Prismaは通常のモードでは Cloudflare Workersで動作しない。代替に別ライブラリを使用する必要があ る。自分の場合はPrismaのマイグレーション機能および Kyselyのデータベースの型生成として使用してい る。
ユースケース 移行した効果(メリット) • コンテナのデプロイまでの時間がかかる → デプロイ時間が8分前後が1分未満に短縮 • コールドスタートを短く抑えないといけない → 最大5秒前後が200ミリ秒程度まで高速化
• コンピュータリソースあたりの単価は高め → 数万円/月のAPIサーバ費が数千円/月に低下(約1/10)
ユースケース 移行に際した注意点(デメリット) • Node.jsが必要な場合は別途サーバを用意する必要がある ◦ Cloud Runで構築した場合はリクエスト時間に影響しないようにする (非同期処理にする、起動時間を早くする etc) •
TCPの接続はリクエスト処理している間だけ接続可能である ◦ waitUntilに接続するような処理があるとうまくいかない場合がある ◦ DataLoaderも動作しない場合がある
まとめ • Cloudflare WorkersでAPIサーバを構築する のは既に実用的な段階にある ◦ オリジンの”味付け”ではなく、単体でサーバとして機 能する • Cloudflareにロックインはするが、それに見
合ったメリットは十分にある
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