For example, if your app is just getting data from a database and returning it to the user, 90% of your time will be spent:
* Receiving the user's request (Network, IO)
* Fetching something from the DB (Network, IO)
* Returning the data (Network, IO)
That's a good scenario for an event based system like Node.js.
Try not to use node.js if you're CPU-bound: rendering images or PDF, processing sound, etc. If you do need to do something like that and you still want to use node.js you should use a processing queue.
Typically Node.js is for high I/O web applications. Thanks to the wonderful asynchronicity of javascript (callbacks "let me know when this is ready/done") it's really wonderful for browser-based programs.
Node also works well for desktop apps because it's got the run loop.
Desktop apps are insanely high frequency IO apps, basically, its an Input Queue reading the mouse / keyboard / touch screen and a run loop, which is exactly what node is, except node originally envisioned the input queue being web requests. And most desktop apps are single threaded on the UI.
For example, if your app is just getting data from a database and returning it to the user, 90% of your time will be spent:
* Receiving the user's request (Network, IO)
* Fetching something from the DB (Network, IO)
* Returning the data (Network, IO)
That's a good scenario for an event based system like Node.js.
Try not to use node.js if you're CPU-bound: rendering images or PDF, processing sound, etc. If you do need to do something like that and you still want to use node.js you should use a processing queue.