&
 NODE.JS


Jakub Nešetřil
                 apiary.io
REST


                                            apiary.io
       http://www.flickr.com/photos/pagedooley/4310765089/
API


                                       apiary.io
      http://www.flickr.com/photos/emrank/4088047582/
REST API


           apiary.io
REST API Documentation


                         apiary.io
apiary.io
apiary.io
apiary.io
hledáme k sobě další …




                         apiary.io
BEHIND THE SCENES

• MVC    web app

• API   Blueprint (Markdown++)

• HTTP    Proxy

• HTTP    Diffs

• JSON   Schema

• wildcard   DNS
                                 apiary.io
STACK OVERVIEW


• Express, Eco, Stylus

• MongoDB    + Mongoose, Redis + HiRedis, Socket.IO

• Ace, Markdown, Amanda, Node-Http-Proxy

• Mocha, Chai, Zombie



                                                      apiary.io
async
                                 hiredis

socket.io
                                     stylus


              coffee-script
                              mongoose


                    http-proxy
                                           apiary.io
nodemailer                               robotskirt
             async                 step
                      googlediff          hiredis
                                      oauth
socket.io
                             amanda           stylus
chai        connect   eco
                           mongoose-dbref
       express
                coffee-script           moment
  send
         request              mongoose
 redis            nib
            raven      gzippo
                              connect-mongodb
    mailchimp         http-proxy
                                                     apiary.io
nodemailer       node-inspector
                                               robotskirt
             async                    step
mocha                    googlediff          hiredis
    sinon-mocha                                        sinon
                         supervisor      oauth
socket.io       docco           amanda           stylus
 chai      connect      eco
                            mongoose-dbref
       express
                 coffee-script   temp    moment
  send
         request      zombie mongoose
 redis            nib
            raven      gzippo
                              connect-mongodb
    mailchimp         http-proxy
                                                          apiary.io
nodemailer       node-inspector
                                               robotskirt
             async                    step
mocha                    googlediff          hiredis
    sinon-mocha                                        sinon
                         supervisor      oauth
socket.io       docco           amanda           stylus
 chai      connect      eco
                            mongoose-dbref
       express
                 coffee-script   temp    moment
  send
         request      zombie mongoose
 redis            nib
            raven      gzippo
                              connect-mongodb
    mailchimp         http-proxy
                                                          apiary.io
The Good


                                            apiary.io
           http://www.flickr.com/photos/rufo_83/403475732/
THE GOOD


• low   level access - to http, to tcp, to the socket

• whole   app ~6k SLOC, ~10k SLOC including tests

•




                                                        apiary.io
The Bad


                                           apiary.io
          http://www.flickr.com/photos/rufo_83/403475732/
THE BAD


• debugging    async errors / race conditions

• long   stack traces

• wrong    return value vs. no callback



                                                apiary.io
The Ugly


                                            apiary.io
           http://www.flickr.com/photos/rufo_83/403475732/
QUESTIONS?

E-MAIL   jakub@apiary.io   TWITTER   @jakubnesetril




                                                      apiary.io

Node at Apiary.io

  • 1.
  • 2.
    REST apiary.io http://www.flickr.com/photos/pagedooley/4310765089/
  • 3.
    API apiary.io http://www.flickr.com/photos/emrank/4088047582/
  • 4.
    REST API apiary.io
  • 5.
  • 6.
  • 7.
  • 9.
  • 10.
    hledáme k sobědalší … apiary.io
  • 11.
    BEHIND THE SCENES •MVC web app • API Blueprint (Markdown++) • HTTP Proxy • HTTP Diffs • JSON Schema • wildcard DNS apiary.io
  • 12.
    STACK OVERVIEW • Express,Eco, Stylus • MongoDB + Mongoose, Redis + HiRedis, Socket.IO • Ace, Markdown, Amanda, Node-Http-Proxy • Mocha, Chai, Zombie apiary.io
  • 13.
    async hiredis socket.io stylus coffee-script mongoose http-proxy apiary.io
  • 14.
    nodemailer robotskirt async step googlediff hiredis oauth socket.io amanda stylus chai connect eco mongoose-dbref express coffee-script moment send request mongoose redis nib raven gzippo connect-mongodb mailchimp http-proxy apiary.io
  • 15.
    nodemailer node-inspector robotskirt async step mocha googlediff hiredis sinon-mocha sinon supervisor oauth socket.io docco amanda stylus chai connect eco mongoose-dbref express coffee-script temp moment send request zombie mongoose redis nib raven gzippo connect-mongodb mailchimp http-proxy apiary.io
  • 16.
    nodemailer node-inspector robotskirt async step mocha googlediff hiredis sinon-mocha sinon supervisor oauth socket.io docco amanda stylus chai connect eco mongoose-dbref express coffee-script temp moment send request zombie mongoose redis nib raven gzippo connect-mongodb mailchimp http-proxy apiary.io
  • 17.
    The Good apiary.io http://www.flickr.com/photos/rufo_83/403475732/
  • 18.
    THE GOOD • low level access - to http, to tcp, to the socket • whole app ~6k SLOC, ~10k SLOC including tests • apiary.io
  • 19.
    The Bad apiary.io http://www.flickr.com/photos/rufo_83/403475732/
  • 20.
    THE BAD • debugging async errors / race conditions • long stack traces • wrong return value vs. no callback apiary.io
  • 21.
    The Ugly apiary.io http://www.flickr.com/photos/rufo_83/403475732/
  • 22.
    QUESTIONS? E-MAIL jakub@apiary.io TWITTER @jakubnesetril apiary.io