It's hard for a startup to choose the right language for development. One of the biggest fight in development is between Node.JS and Ruby on Rails. So, who is the winner in this fight?
The King is dead, long live The King!
If you asked this question 5 years ago, it would be definitely Ruby, but time is changing and we have a new leader.
Let's have a look at Google trends:
During the last 4 years, Node.JS has just smashed Ruby, and node continues to expand the market.
Now, let's compare programming languages runtime.
As we can see from this graph, Ruby has the slowest runtime.
Another factor is a quantity of jobs. The more jobs in the market the more demands on a particular language.
Ruby on Rails Pros:
- It is flexible and IDE friendly framework.
- Database migrations. It will be easily portable to any platform.
- Easy functions and manipulations.
- It is consistent with structure and methodology.
- The language is very powerful and expressive. It's easy to express application logic in an intuitive way.
Ruby on Rails Cons:
- Best programming skills are required so top notch programmers with high pay are required.
- Much trickier if making large projects.
- Documentation is only for popular frameworks
- More computing resources are required.
- Performance. Rails is slow as hell, and this bubbles up to the experience of the end user.
- Large stack frames. The fact that Rails has so many layers of abstraction makes debugging a pain.
- Powerful underlying libraries. libuv, the library behind Node that handles non-blocking I/O, is super awesome and wicked fast.
- Full stack. From HTTP server to templating engine, Node.JS is the whole package. Rails relies on something like Nginx or Apache with mod_rails (aka Passenger) in order to actually work.
- High market demand and very popular in startups at this time.
- Same language on client and server side.
- Easy to monitor, deploy and support.
- Page load is faster across the site. (Our tests showed that websites are usually 2 or 3 times faster with node.
- Node is not suitable for processor intensive tasks.
- Unstable API: The Node API has a habit of changing in backwards-incompatible ways from release to release, and frequent changes to your codebase are required to keep things running on the latest version. That said, things are supposed to be more stable since 0.2.0 has been released.
- Because it’s new and very hot, there are fewer developers in market for node.js.
Big companies are choosing Node.JS instead of Ruby on Rails.
When it comes to scalability you can't compete with Node.JS. There are companies, that switched from Ruby on Rails to Node.js:
- New York Times
LinkedIn Case Study
LinkedIn replaced their back-end mobile infrastructure built on Ruby on Rails with Node.js some time ago for performance and scalability reasons.
Kiran Prasad decided to switch from Ruby because of scalability problems.
Node.js was eventually chosen providing a number of benefits:
- Better performance, Node.js is being up to 20 times faster than Rails for certain scenarios
- Using only 3 servers instead of 30, leaving room for a 10x traffic growth