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
570
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
3
Best practices for application development with Box
jcleblanc
0
6
BoxWorks Developer Training
jcleblanc
0
92
Building Mobile First Experiences on Box Platform
jcleblanc
0
39
Introduction to Box APIs
jcleblanc
1
59
Box Platform Developer Workshop
jcleblanc
2
260
JavaScript App Security: Auth and Identity on the Client
jcleblanc
0
52
Improving Developer Onboarding Through Intelligent Data Insights
jcleblanc
0
44
Better Data with Machine Learning and Serverless
jcleblanc
0
140
Other Decks in Technology
See All in Technology
キャラクター制御のためのプロンプト術 for LINE Bot
uezo
0
520
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.2k
入社後初めてのタスクでk8sアップグレードした話.pdf
kkato1
1
380
NLP2024 参加報告LT ~RAGの生成評価と懇親戦略~ / nlp2024_attendee_presentation_LT_masuda
taro_masuda
1
190
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
310
社内勉強会運営のコツ
senoo
6
1.1k
なぜ NOT A HOTEL が Web3 に取り組むのか - NOT A HOTEL TECH TALK
ynunokawa
0
160
Terraformあれやこれ/terraform-this-and-that
emiki
4
290
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
320
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM and Prompt Engineering and Building Tutors
ks91
PRO
0
220
ユーザーストーリーのレビューを自動化したみたの
bun913
1
310
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
170
Featured
See All Featured
How to name files
jennybc
64
92k
Design by the Numbers
sachag
274
18k
GitHub's CSS Performance
jonrohan
1023
450k
Making the Leap to Tech Lead
cromwellryan
123
8.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
321
20k
The Invisible Customer
myddelton
114
12k
Large-scale JavaScript Application Architecture
addyosmani
503
110k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
243
20k
How to train your dragon (web standard)
notwaldorf
72
5.1k
Designing with Data
zakiwarfel
95
4.8k
Docker and Python
trallard
33
2.7k
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