These days, web apps that function in real-time aren’t a novelty. They’re the standard. Users have come to expect instantaneous results, and to expect live, social components built into their applications. These expectations are met — with increasing ease and power — thanks to a small phenomenon called Node.js.
At most corner delis, customers (or, clients) place their sandwich order with the charming guy behind the counter (the server). He makes the sandwich and hands it over. He then starts over with the next customer’s order. This works out well for all parties until the lunchtime rush. If the deli only has one sandwich maker, it’ll be crushed by the traffic — and impatient customers might flee to Burger King.
Most traditional, basic websites employ this kind of client-server relationship. The client (your browser) asks for and receives information from a server, one piece at a time. Node.js allows for asynchronous input/output processing, meaning it can handle thousands or millions of diverse requests at the same time. In other words, Node as a lunch chef is a multi-tasking wizard, one who can start on the next customer’s sandwich, ring someone up, and prep the next batch of potato salad — all while the first customer’s sandwich is toasting. Every customer can order any kind of sandwich, and they’ll all get their lunch on time. Delicious.
My Answer is Node
But the most interesting uses of Node have come through new startups. Voxer, which essentially turns smartphones into real-time walkie-talkies, uses Node because its low latency can handle the massive amount of data needed for real-time audio. Mockingbird uses Node to allow multiple users to build wireframes simultaneously. Nodejitsu (part of the GA family) offers a cohesive set of cloud management technologies for businesses — essentially, they do the Node for you.
Node, the Places You’ll Go!
If you’re just starting out as a developer, Node is a great tool for building something that can really scale. But it is not without its drawbacks. First, Node is immature as a platform. Though it was launched by Ryan Dahl in 2009, it is technically still in preview mode. So while it has a growing, enthusiastic community of users, Node doesn’t have as large a library of modules and frameworks as compared with more established platforms. Also, if you’re building something especially complex — like a series of functions within functions — Node can bring about “callback hell” and be hard to debug.