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
Going Serverless with GraphQL
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Steve Faulkner
October 20, 2017
Technology
1
80
Going Serverless with GraphQL
Presented at O'Reilly Velocity London on 10/20/17
Steve Faulkner
October 20, 2017
Tweet
Share
More Decks by Steve Faulkner
See All by Steve Faulkner
Shipping TypeScript to npm
southpolesteve
2
390
Hitchhiker's Guide to Serverless @ QCon London
southpolesteve
0
48
Hitchhiker's Guide to Serverless - Node Interactive
southpolesteve
0
88
Full Stack Serverless @ DevOps Days Boston
southpolesteve
0
42
Full Stack Serverless Applications @ MidwestJS
southpolesteve
0
220
Other Decks in Technology
See All in Technology
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
190
(Test) ai-meetup slide creation
oikon48
3
450
組織全体で実現する標準監視設計
yuobayashi
3
490
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
260
VPCエンドポイント意外とお金かかるなぁ。せや、共有したろ!
tommy0124
1
690
Kiro Powers 入門
k_adachi_01
0
110
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
190
猫でもわかるKiro CLI(AI 駆動開発への道編)
kentapapa
0
260
[E2]CCoEはAI指揮官へ。Bedrock×MCPで構築するコスト・セキュリティ自律運用基盤
taku1418
0
190
A Casual Introduction to RISC-V
omasanori
0
360
AI駆動AI普及活動 ~ 社内AI活用の「何から始めれば?」をAIで突破する
oracle4engineer
PRO
1
110
最強のAIエージェントを諦めたら品質が上がった話 / how quality improved after giving up on the strongest AI agent
kt2mikan
0
190
Featured
See All Featured
The browser strikes back
jonoalderson
0
810
Become a Pro
speakerdeck
PRO
31
5.8k
My Coaching Mixtape
mlcsv
0
78
Navigating Team Friction
lara
192
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
470
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
190
Transcript
Going Serverless with GraphQL
Steve Faulkner @southpolesteve
None
None
The Hitchhiker’s Guide to Serverless
None
“Could he have used more buzzwords?”
None
Going Serverless with GraphQL
An oral history of Bustle architecture
None
80+ million readers
2 Years
100% production serverless + graphQL
100% production serverless + graphQL * mostly *
An oral history of Bustle architecture
August 2013
Rails + Heroku
August 2015
None
Rails Redis Postgres Elasticsearch Sphinx
None
EC2 + Opsworks
Issues: Rails + Postgres EC2 Autoscaling
AWS API Gateway
AWS Lambda
AWS Lambda + AWS API Gateway
None
“serverless”
there are still servers…
servers platforms!
Episode 1: It Begins
Node.js Lambda API Gateway REST API
EC2 ~$2500/mo
lambda api gateway ~$400/mo
None
None
deployment :/
None
https://github.com/bustle/shep
None
November 2015
Episode 2: the serverless front end
None
None
Node.js + preact Lambda microservice-ish API Gateway HTML
None
the servers are down!
Pop Quiz: Default max # of redis connections
10,000
nothing is a silver bullet
None
Spring 2016
GraphQL
None
“A query language for your API”
“coalesce the sundry key-value store back-end APIs which existed at
the time”
Schema Query Data
type Query { me: User } type User { id:
ID name: String }
{ me { name } }
{ "me": { "name": “Steve" } }
None
None
types
APIs are contracts
Give me a vehicle
None
Give me a car. With 6 seats. That is red.
And has a bike rack. Include the bikes. Mountain Bikes. With tires.
“Sounds like WSDL with less ceremony”
Yup
GraphQL = Happy Developers
Summer 2016
Rails Redis Postgres Elasticsearch Sphinx Node.js Lambda API Gateway graphQL
purescript
“serverless”
serverless
“serverless” 2.0
servers platforms events!
API Gateway Dynamo Kinesis SNS S3 Cognito Elasticache
API Gateway Dynamo Kinesis SNS S3 Cognito Elasticache
FaaS = Cloud Glue
FaaS = Boring
September 2016
Episode 3: All In!
None
the serverless servers are down!
account level concurrency limit
None
November 2016
Episode 4: Let’s write a graph database
100% Lambda 100% GraphQL
“coalesce the sundry key-value store back-end APIs which existed at
the time”
Issues: too many databases :/
redis + graphQL
None
hexastores redis sorted sets graphQL dataloader
Recap
REST API
REST API REST API
REST API REST API GraphQL
June 2017
Episode 5: How do you buy a company?
+
REST API REST API GraphQL 3rd Party
REST API REST API GraphQL 3rd Party
REST API REST API GraphQL 3rd Party
REST API REST API GraphQL 3rd Party
REST API REST API GraphQL 3rd Party
REST API GraphQL REST API GraphQL 3rd Party
REST API GraphQL REST API GraphQL 3rd Party
3 Approaches…
1. Build new APIs
2. Wrap legacy APIs
Read through Copy on Read/Write Dual Writes Replace
Data Cruft?
3. Import data with mutations
input EliteDailyImport { id: ID name: String url: URL authorID:
Int! }
Runtime Types Crufty Legacy Data
None
What next?
tweetable controversial thoughts
containers
“Docker who?”
What is “serverless”?
No one wants Multi-Cloud FaaS
FaaS is boring
Evented architectures are fun!
Serverless Databases
Deployment frameworks are boring
Architecture frameworks are fun!
Infrastructure as Code
Infrastructure as Code
Infrastructure as Config Files
Infrastructure as Config Files
const domain = new AWS.Route53('www.example.com') const fn = new AWS.Lambda('render-html')
const cdn = new Fastly('example-cdn') domain.pipe(cdn).pipe(fn)
const domain = new AWS.Route53('www.example.com') const fn = new AWS.Lambda(‘render-html’,
() => { return ‘<p>hello world</p>’ }) const cdn = new Fastly('example-cdn') pipe(domain, cdn, fn)
questions? Steve Faulkner @southpolesteve