Rails 4 Live Streaming vs Node: An explanation for business people
Hongli Lai posted on the Phusion blog the other day about Live Streaming in Rails 4. This looks like a nice feature, especially since Node has gotten so big. But it's unlikely to kill Node, or even significantly limit Node.
If there's a very small component of an app that will benefit from being able to stream data to the client, this is a nice piece of functionality. But Node is more than that. The V8 engine that powers Node is fast. I'm not totally swayed by this argument as a major deciding factor for architecture choices, but it's relevant. I still think that individual developer effectiveness is the deciding factor, as long as there aren't specific technical decisions (although this is mostly important when people bring up a question like Ruby vs Python, the correct answer to which is almost always "whichever your developers are better at").
If there's likely to be a lot of shared code between the front and backends, such as complex input validations, Node is actually a good choice. This might be best for an app such as medical record input, where you want to be *very* sure that data is correct on the backend, but you also want users to be aware early on to minimize wasted human-time.
Also, on the tech side, one issue that limits LS to being useful for small parts of a Rails app is the math behind evented code -- the magic that makes the difference between Node versus other typical app servers. With Node, every plugin is evented (or it's just not a Node plugin). With Rails, this is not necessarily true -- it's possible, but you have to be more careful.
If I were making the decision between Rails LS and Node, from a tech standpoint, I'd focus on how much of the app is really about long-term, low-data connections. If you're building some kind of chat client -- Node is good. If you're building a normal consumer-facing app, Ruby is good. But from a business standpoint, it comes down to the team you've got -- give them the tools they know.
Thanks to Josh@Cloudspace and Adrian@Minted for their thoughts on this.