In 2008 I was searching for a new programming platform for making websites. This was more than wanting a new language--indeed the details of the language mattered very little to me. I was concerned rather about the ability to program advanced push features into the website like I had seen in GMail--the ability to for the server to push data to the user instead of having to constantly poll. The existing platforms were tightly coupled to the idea of the server as something which receives a request and issues a response sequentially. To be able to push events to the browser the platform needed to be able to constantly handle a number of open mostly idle connections.
I knew how to make this work at the system call layer, in C. If I used only non-blocking sockets the overhead per connection was very small, in small tests I could demonstrate a server that could handle thousands of idle connections or pretty massive throughput. I knew that this was the optimal way for a user-space Unix server to be implemented. However I didn't want to work in C, I wanted the beautiful fluidness of a dynamic language. While it was possible to issue the exact system calls I wanted in every programming language it was very ugly and was always the "alternative" method of socket programming. My theory was that non-blocking sockets were not actually difficult at all as long as everything was non-blocking.
In Node users find a system which scales well by default. Because of the choices made in the core system, nothing in the system is allowed to do anything too terrible (like block the current thread), and thus performance never degrades horribly. It is an order of magnitude better than the traditional blocking approach, where 'better' is defined as the amount of traffic it can handle take.
These days Node is being used by a large number of startups and established companies around the world from Voxer and Uber to Walmart and Microsoft. It's safe to say that billions of requests are passing through Node every day. As more and more people come to the project, the third party modules and extensions available grows and increases in quality. While I was once reserved about recommending Node for mission critical applications, I now full heartily recommend Node for even the most demanding server systems.
--Ryan Dahl, Creator of Node.js