Introduction to Node.js
Node.js is an open-source, cross-platform runtime environment used for development of server-side web applications. Node.js applications are written in JavaScript and can be run on a wide variety of operating systems.
Node.js is based on an event-driven architecture and a non-blocking Input/Output API that is designed to optimize an application's throughput and scalability for real-time web applications.
Over a long period of time, the framework available for web development were all based on a stateless model. A stateless model is where the data generated in one session (such as information about user settings and events that occurred) is not maintained for usage in the next session with that user.
A lot of work had to be done to maintain the session information between requests for a user. But with Node.js there is finally a way for web applications to have a real-time, two-way connections, where both the client and server can initiate communication, allowing them to exchange data freely.
Who use NodeJS?
Node.js is used by a variety of large companies, few are:
- Paypal – A lot of sites within Paypal have also started the transition onto Node.js.
- LinkedIn - LinkedIn is using Node.js to power its Mobile Servers, which powers the iPhone, Android, and Mobile Web products.
- Mozilla has implemented Node.js to support browser APIs which has half a billion installs.
- eBay hosts their HTTP API service in Node.js
When to use Node.js and when not?
Node.js is good when you need high levels of concurrency but less amount of dedicated CPU time.
Node.js is best for usage in streaming or event-based real-time applications like:
- Chat applications
- Game servers – Fast and high-performance servers that need to processes thousands of requests at a time, then this is an ideal framework.
- Good for the collaborative environment – This is good for environments which manage the document. In the document management environment you will have multiple people who post their documents and do constant changes by checking out and checking in documents.
- So Node.js is good for these environments because the event loop in Node.js can be triggered whenever documents are changed in a document managed environment.
- Advertisement servers – Again here you could have thousands of request to pull advertisements from the central server and Node.js can be an ideal framework to handle this.
- Streaming servers – Another ideal scenario to use Node is for multimedia streaming servers wherein clients have request's to pull different multimedia contents from this server.
- Best of all, since Node.js is built on javascript, it's best suited when you build client-side applications that are based on the same javascript framework.
When not to use Node.js
- Node.js can be used for a lot of applications with various purpose, the only scenario where it should not be used is if there are long processing times which is required by the application.
- Node is structured to be single-threaded. If an application is required to carry out some long-running calculations in the background. For example, if the server is doing some calculations, it won't be able to process any other requests. Node.js is best when processing needs less dedicated CPU time.