InfoQ Homepage Presentations All Your API Are Belong to Us
All Your API Are Belong to Us
Summary
Paul Hill presents a case study of building an API with a short deadline using Node.js, WebSocket, MongoDB, JSON, Promises, Swagger, Memcached, Varnish and Hypermedia ReST.
Bio
Paul Hill is a software architect, designer and developer at KIXEYE, and resident expert on all things ReST and Hypermedia. An enterprise Java developer for most of his career he is now very much a polyglot paratrooper, spending most of his time designing and building APIs with Node.js to provide delightful features to KIXEYE's online competitive gaming community.
About the conference
Software is Changing the World. QCon empowers software development by facilitating the spread of knowledge and innovation in the developer community. A practitioner-driven conference, QCon is designed for technical team leads, architects, engineering directors, and project managers who influence innovation in their teams.
Community comments
Appreciate the Candor
by Faisal Waris,
Re: Appreciate the Candor
by Paul Hill,
RabbitMQ
by Rudi Starcevic,
Re: RabbitMQ
by Paul Hill,
Appreciate the Candor
by Faisal Waris,
Your message is awaiting moderation. Thank you for participating in the discussion.
Nice to hear the full story (good, bad and all).
In terms of "backpressure" it was mentioned that NodeJS threads block on I/O. Is this correct? If so that is not a scalable design. On Windows / .Net one can use event-driven IO where the thread is assigned from a thread pool upon completion of IO activity.
One can even use async database calls to SQL Server by using "Asynchronous Processing=true" in the connection string.
RabbitMQ
by Rudi Starcevic,
Your message is awaiting moderation. Thank you for participating in the discussion.
Great talk - many interesting suggestions, ideas and concepts.
I'm wondering if you use message queuing much? Eg: RabbitMQ.
Re: Appreciate the Candor
by Paul Hill,
Your message is awaiting moderation. Thank you for participating in the discussion.
Wow just noticed there are comments on this site, never got an email, sorry for the late response :-)
So yeah, Node uses non blocking IO. The back pressure I was referring to (and it's kind-of a corruption of the phrase) comes from non blocking responses that take much longer than expected to complete. This is ok for a little while but those callbacks eventually stack up and things go pear shaped.
:-)
Re: RabbitMQ
by Paul Hill,
Your message is awaiting moderation. Thank you for participating in the discussion.
Sorry I just noticed there are comments on this site :-)
Better late than never.
Yes we use queues (incl. RabbitMQ) extensively, but for the kind of volume we see in our API those would conk out just as quickly as Node.js if messages weren't consumed fast enough.
:-)