How We Built eBay’s First Node.js Application
ebaytechblog.com
ebaytechblog.com
"When we found that Java did not seem to fit the
project requirements (no offense), we began exploring
the world of Node.js"
and "By the end of the exercise, people understood the core
value of Node.js; indeed, some of the con arguments proved
to be part of the beauty of the language."
What's wrong with this? The pros and cons of Java versus Node.js aren't explained. In fact, I'm hard pressed to find any specific information in this article at all about what drove their decision making, or for that matter, anything in this article that's remotely technical.This is a fluff piece that won't inform you about anything besides the fact that eBay is using Node. Cool story? But you're not telling us why
If we look to popular micro-benchmarks, they support my anecdotal observation:
http://benchmarksgame.alioth.debian.org/u64/benchmark.php?te...
http://www.techempower.com/benchmarks/
On a side node: node.js also suffers from the issue that while a small node.js program might be fast, what is actually fast is the C code and as the program grows larger and increasing amounts of time are spent executing actual javascript its performance characteristics change dramatically. This fact seems often lead to unrealistic understanding of node.js performance due to people benchmarking very small examples.
Highly performant JS ends up looking a lot like C, and most of the off-the-shelf JS libraries that people use to build software are littered with '.call', '.apply', 'arguments', null/undefined/true/false usage, implicit type conversions, unnecessary closures, etc. All of these are cases that V8 doesn't optimize well, and because the libraries are built to be highly abstract and useful by using these, performance drops off precipitously. It's completely possible to write a large JS application that's competitive with Java in performance -- but nobody does it.
V8 hasn't even really begun optimizing these things, and they're going to be incredibly hard to optimize well. So perhaps a more apt question is: when JS VMs have as much time in the oven as the JVM has had, what will the performance look like?
"This being a normal scenario in any event loop-based model like Node.js, the logs are crossed between multiple URL transactions, and the reporting tool shows scrambled output. We have worked out both short-term and long-term resolutions for this issue."
which sounds like a serious problem for pretty much anybody.
I know they're not obliged to tell us their solutions, but come on, they're a big company with lots of smart engineers and billions of dollars. We already know they can solve problems, telling us they've done so is neither interesting nor useful.
I'm curious how you're using Express if not as a framework.
http://mcavage.github.io/node-restify/
Both self describe as frameworks.
in a quick blurb on express v restify: "I get asked this more than anything else, so I'll just get it out of the way up front.
Express' use case is targeted at browser applications and contains a lot of functionality, such as templating and rendering, to support that. Restify does not."
FWIW I am a backend guy and have enjoyed prototyping and working with restify a great deal ( dtrace ftw :) ), just a user and YMMV of course.
I think they may have meant that they didn't want to write their own.
Anyway, it's good to try out new things. Kudos to them for doing something out of their mold.
No CPS pyramid of doom garbage though. To get that, Node.js is your one-stop-shop.