2. The correct, proper answer is very, very long. Too long for a HN comment. The short version is that the product is I/O heavy since it mostly just queries a database and returns the results to the user over HTTPS. Node is primarily designed for this use case.
3. Per-query memory overhead is less than a threaded approach. Javascript is one of the fastest scripting languages when it comes to string manipulation which is what the API server does besides I/O. Node itself is written in C/C++ so it is quite fast too.
4a. Being single-threaded, it is very sensitive to CPU-bound tasks. I am actually working on refactoring some code to support streaming because there is an edge case that is CPU-bound and stalls the whole process.
4b. A big downside for my use case is handling 64-bit integers and numerics since Javascript does not natively support these data types, but are very important to support in a database product. We have worked around it using strings. The API server does little computation itself, so it isn't that big a deal.
4c. If you are doing a lot of CPU-bound work or computation with large numbers, then I strongly recommend not using Node. Otherwise it is probably okay even if your use case is not what Node is primarily designed for.
I should also point out that I have been developing software for a long time and have learned to become skeptical of the latest language, framework, tool, etc. I have seen so many of them come and go. It took some convincing for me to decide on Node for Datalanche. I am a big believer is picking the right tool for the job rather than the latest trend. I will be the first to say one should pick Node because it is the best for the use case.
2. The correct, proper answer is very, very long. Too long for a HN comment. The short version is that the product is I/O heavy since it mostly just queries a database and returns the results to the user over HTTPS. Node is primarily designed for this use case.
3. Per-query memory overhead is less than a threaded approach. Javascript is one of the fastest scripting languages when it comes to string manipulation which is what the API server does besides I/O. Node itself is written in C/C++ so it is quite fast too.
4a. Being single-threaded, it is very sensitive to CPU-bound tasks. I am actually working on refactoring some code to support streaming because there is an edge case that is CPU-bound and stalls the whole process.
4b. A big downside for my use case is handling 64-bit integers and numerics since Javascript does not natively support these data types, but are very important to support in a database product. We have worked around it using strings. The API server does little computation itself, so it isn't that big a deal.
4c. If you are doing a lot of CPU-bound work or computation with large numbers, then I strongly recommend not using Node. Otherwise it is probably okay even if your use case is not what Node is primarily designed for.
I should also point out that I have been developing software for a long time and have learned to become skeptical of the latest language, framework, tool, etc. I have seen so many of them come and go. It took some convincing for me to decide on Node for Datalanche. I am a big believer is picking the right tool for the job rather than the latest trend. I will be the first to say one should pick Node because it is the best for the use case.