Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2eapFFq.
Michael Uzquiano talks about how to scale API to accept many items. He examines how to evolve the Evolution of ReST over HTTP to transactional, asynchronous bulk operations. He covers job descriptors, workers, the job queue and scaling workers across an API cluster elastically. He also talks about polling methods for job completion including HTTP long polling and WebSockets. Filmed at qconnewyork.com.
Michael Uzquiano is Founder and CTO of CloudCMS and Alpaca.js Committer.
2. InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
rest-evolution-async-operations
3. Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
4. About me
• Michael Uzquiano
• Founder @ Cloud CMS
• First time dad, not getting much
sleep
8. Building Blocks
• Services
• createNode()
• queryNodes()
• readNode(id)
• Object Methods
• update()
• del()
• transform(mimetype)
POST
POST
GET
PUT
DELETE
POST
10. Latency makes life tough
branch
.createNode({ “title”: “title1” })
.createNode({ “title”: “title2” })
.createNode({ “title”: “title3” });
100 ms
100 ms
100 ms
11. Life is not simple
branch
.readRepository(“repository1”)
.readBranch(“master”)
.queryNodes({
“category”: “my_category”
}).each(function) {
this.discount = 0.2;
this.update();
});
83. Add Nodes
var p = cloudcms.createPackage();
var node1 = p.addNode({ “title”: “title1” });
var node2 = p.addNode({ “title”: “title2” });
84. Add Binary Attachments
var p = cloudcms.createPackager();
var node1 = p.addNode({ “title”: “title1” });
var node2 = p.addNode({ “title”: “title2” });
var stream = fs.createReadStream(filePath);
var attachment1 = p.addAttachment(node2._doc,
“default”, stream);
85. Create the Archive
var p = cloudcms.createPackager();
var node1 = p.addNode({ “title”: “title1” });
var node2 = p.addNode({ “title”: “title2” });
var stream = fs.createReadStream(filePath);
var attachment1 = p.addAttachment(node2._doc,
“default”, stream);
var archive = p.package(“org.cloudcms”, “demo”,
“1.0”);