http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js
- real-time websites with push capability
- unifies the language and data format (JSON) across the stack
- web applications with real-time, two-way connections, where both the client and server can initiate communication, allowing them to exchange data freely
- non-blocking, event-driven I/O to remain lightweight and efficient in the face of data-intensive real-time applications that run across distributed devices.
- You definitely don’t want to use Node.js for CPU-intensive operations
- Node.js operates on a single-thread, using non-blocking I/O calls, allowing it to support support tens of thousands of concurrent connections
- Although Node.js really shines with real-time applications, it’s quite a natural fit for exposing the data from object DBs (e.g. MongoDB). JSON stored data allow Node.js to function without the impedance mismatch and data conversion
- Typical examples include: the logging or writing of user-tracking data, processed in batches and not used until a later time; as well as operations that don’t need to be reflected instantly (like updating a ‘Likes’ count on Facebook) where eventual consistency (so often used in NoSQL world) is acceptable.