Which brings us to how Node allows for easily building fast, scalable network applications. It’s speed can be attributed to using V8 and a non-blocking I/O model (a key component I’ll talk about further in this post), while it’s scalability comes from the fact that you can spawn your Node application in as many processes, on as many machines as necessary, as long as you have the hardware. A popular approach to this sort of scalability is to run multiple Node processes behind Nginx to load-balance the requests. Another approach is to use Fugue to manage multiple Node processes across multiple cores.
Going back to the topic of Node’s non-blocking I/O model, you’ll also note that Node is event-driven. What this means for web developers and system administrators is that Node apps can be very fast if written correctly. It takes a little change in your thinking to write effective event-driven applications. Everything in Node is a reaction from an event. When that event (such as a page being requested) is triggered, Node will perform an action on that event, then continue waiting for the next event. When the action is complete, Node will issue a callback to the originating function. This is the essence of the “non-blocking” model. Node should almost never be “waiting” for a function to complete. Instead, it calls the function, moves on, and receives the callback later. When the callback is received, Node can do something with it (such as serving the requested page).
For more information, the Node.js homepage is a plentiful resource.