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
OSCON 2012: ql.io and Node.js
Search
Jonathan LeBlanc
July 20, 2012
Technology
1
580
OSCON 2012: ql.io and Node.js
OSCON 2012 (July - Portland, OR) presentation by Subbu Allamaraju and myself on ql.io and Node.js
Jonathan LeBlanc
July 20, 2012
Tweet
Share
More Decks by Jonathan LeBlanc
See All by Jonathan LeBlanc
Architecting Developer Relations for a New Development Platform
jcleblanc
0
33
Best practices for application development with Box
jcleblanc
0
6
BoxWorks Developer Training
jcleblanc
0
110
Building Mobile First Experiences on Box Platform
jcleblanc
0
51
Introduction to Box APIs
jcleblanc
1
67
Box Platform Developer Workshop
jcleblanc
2
280
JavaScript App Security: Auth and Identity on the Client
jcleblanc
0
71
Improving Developer Onboarding Through Intelligent Data Insights
jcleblanc
0
64
Better Data with Machine Learning and Serverless
jcleblanc
0
160
Other Decks in Technology
See All in Technology
ここ一年のCCoEとしてのAWSコスト最適化を振り返る / CCoE AWS Cost Optimization devio2025
masahirokawahara
1
1.4k
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
270
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
2.8k
2025年にHCP Vaultを学び直して見えた景色 / Lessons and New Perspectives from Relearning HCP Vault in 2025
aeonpeople
0
190
落ちる 落ちるよ サーバーは落ちる
suehiromasatoshi
0
140
Automating Web Accessibility Testing with AI Agents
maminami373
0
1k
異業種出身エンジニアが気づいた、転向して十数年経っても変わらない自分の武器とは
macnekoayu
0
280
実運用で考える PGO
kworkdev
PRO
0
150
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
130
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
2
340
AIエージェントの活用に重要な「MCP (Model Context Protocol)」とは何か
masayamoriofficial
0
290
Grafana Meetup Japan Vol. 6
kaedemalu
1
200
Featured
See All Featured
Building an army of robots
kneath
306
46k
Side Projects
sachag
455
43k
The Invisible Side of Design
smashingmag
301
51k
Facilitating Awesome Meetings
lara
55
6.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
What's in a price? How to price your products and services
michaelherold
246
12k
Transcript
node.js and ql.io Build Your Own HTTP APIs for Agility
and Scale OSCON July 20, 2012 1
Subbu Allamaraju @sallamar github.com/s3u 2
Jon LeBlanc @jcleblanc github.com/jcleblanc 3
How to consume HTTP APIs cheaply and efficiently 4
5 curl -‐X <HTTP method> <URI>
Real code (randomized)
7
8
9
10
11
12
13
14
Find things from A For each thing, find details from
B For each thing, find more details from C Merge results Use case: 15
Find products Find dominant categories of products Look up category
info Merge categories with products Use case: 16
Get stuff from A If A is down, try from
B Annotate stuff with other stuff from C Ignore some things from the stuff Join all Use case: 17
Producers Client [Really important client] Why don't you give
me an API optimized for my use cases? Server [Really important producer] Thanks. Get a number and stand in the line! 18
Producers Client Server [Really important producer] Thanks. Get a
number and stand in the line! Who gets to decide the right thing? 19 [Really important client] Why don't you give me an API optimized for my use cases?
Build Your Own Optimized APIs 20
21 https://github.com/ql-io/ql.io Platform Engineering
A domain specific language for HTTP client programming 22
cut down lines of code reduce no of requests save
bandwidth 23
24
http://ql.io/console 25
26 Server Web Node.js ql.io Installation Modes
27 curl http://<host>/q?s=query
As a Standalone Server Node Host ql.io Data (internal )
Data (externa l)
# As a node.js module npm install ql.io-‐engine
// Use ql.io from node.js var Engine =
require('ql.io-‐engine'); var engine = new Engine({ //OPTIONS }); var script = '…'; engine.execute(script, function(emitter){ emitter.on("end", function(err, res){ … }); });
Language: Defining a Data Source Include in .ql file
Include in Request
Example: Mustache Templates
Example: jQuery for Cross Domain Reqs
Let’s Do It!
1. Interop via HTTP 2. SQL inspired 3. Implicit orchestration
4. Failure modes 5. Consumer oriented 35
36 code https://github.com/ql-io/ql.io docs/demos http://ql.io https://github.com/jcleblanc/api-masher blog http://ql-io.github.com