I've read a ton of articles this afternoon, and they all say how much
more processing power Ruby uses, and that scaling is seemingly more
Usually people writing these articles never had any real application to
Sure, some applications might have better performance on a single box
with Java in a micro-benchmark because they are CPU bound and Java is
much faster than Ruby (now) for CPU intensive processing but this has
nothing to do with scaling as most people mean it which usually is : "go
beyond the point where your application can fit on a single server and
get more performance by adding pizza boxes".
So saying that an application framework scales more than another is pure
bulls**t. Every modern web framework uses a "share-nothing" approach to
solve scalability problems so about anyone can scale by adding
application servers today.
When anybody comes to the point where the only shared component becomes
a bottleneck (usually the relational database but might be filesystems,
LDAP servers, network, whatever) scaling is a matter of architecture and
solving the bottleneck is specific to the application not a problem the
framework can come with a solution for.
The problem is that the "share-nothing" term is misleading: you always
share something and this is what comes back to bite you when your
application is under stress. You'll need one(/several) good
specialist(s) to find the bottlenecks and re-architecture your
application when the problem arises.
For example, I recently had to spend some time optimizing some parts of
one Ruby process that was getting slower. After I finished, on the same
hardware the application was 10 times faster. Turns out that some
database queries weren't optimal, the database lacked some indexes and
PostgreSQL 8.0 was much slower than 8.2. Ruby didn't have anything to do
with it. I'm pretty confident that even if I spent the rest of my life
recoding this application from Ruby to raw assembler I wouldn't get more
than a 10% speedup and a ton of bugs.
In the software industry believing that software in a shiny box will
solve your problems is amateurism: people solve your high-level problems
using tools, the tools are only meant to low-level ones like minimizing
the time spent coding simple tasks and providing easy access to lots of
libraries from which to extend your application as quickly as possible
(in fact most of them probably create more problems than they solve
). So if you have problems to solve, I suggest you look for bright
people who know how to solve them, not bright software, as bright
software is only a marketing myth...
Whow, looking at what I just typed it seems I was tired of coding and
needed to vent a bit