RubyWorks 0.0.1 - early preview alpha "who knows, it may actually work" release of Rails production stack for RedHat and CentOS Linux

Dear world at large,

In the spirit of "release early, release often", with special emphasis on "early", we are making available to you RubyWorks 0.0.1.

RubyWorks is a yum repository (collection of binary RPM packages) that provides all software components needed to host a Rails application on a RedHat Enterprise Linux 4 or CentOS 4, pre-configured and ready to go.

Usage scenario for this product is as follows:

1. Point your package manager (up2date or yum) to http://rubyworks.rubyforge.org/RPMS/i386

2. Type "up2date rubyworks" ("yum install rubyworks" on CentOS)

3. Sit back and relax. Two minutes later you can browse to http://localhost:3001 and see a Welcome To Rails page, served by a cluster of four Mongrels, running in production mode, proxied behind HAProxy and monitored by monit.

4. Automatically get upgrades, bug fixes and security patches, tested for backward-compatibility with a specific minor version of Rails (1.2 at present).

5. Live happily ever after...

As the version number (and, indeed, the title of this message) suggests, this is an early release. Our primary intention is that people who have a need for something like this have something to look at and tell us about anything wrong or missing.

On the other hand, it works as advertised on developers' computers, so if you need to deploy Rails on CentOS or RHEL today, you now have a choice of spending half a day to set everything up manually, or half an hour to install RubyWorks.

Further details are at http://rubyworks.rubyforge.org

If you are attending RailsConf this weekend, and want to talk about this project, feel free to seek me out in corridors, or leave me a note at ThoughtWorks booth. Especially if you think that RubyWork sucks - I will be delighted to hear about it. Honestly, that's what versions 0.0.1 are for.

I'm also doing a talk on Saturday in Products & Services track, which will cover hows, whys and the bright future of RubyWorks (hint: it's not just a bunch of RPMs and a phone number, nor a rerun of J2EE in Ruby).

With crossed fingers, Alexey Verkhovsky RubyWorks team ThoughtWorks

Dear world at large,

In the spirit of "release early, release often", with special emphasis on "early", we are making available to you RubyWorks 0.0.1.

RubyWorks is a yum repository (collection of binary RPM packages) that provides all software components needed to host a Rails application on a RedHat Enterprise Linux 4 or CentOS 4, pre-configured and ready to go.

Usage scenario for this product is as follows:

1. Point your package manager (up2date or yum) to http://rubyworks.rubyforge.org/RPMS/i386

2. Type "up2date rubyworks" ("yum install rubyworks" on CentOS)

3. Sit back and relax. Two minutes later you can browse to http://localhost:3001 and see a Welcome To Rails page, served by a cluster of four Mongrels, running in production mode, proxied behind HAProxy and monitored by monit.

4. Automatically get upgrades, bug fixes and security patches, tested for backward-compatibility with a specific minor version of Rails (1.2 at present).

5. Live happily ever after...

As the version number (and, indeed, the title of this message) suggests, this is an early release. Our primary intention is that people who have a need for something like this have something to look at and tell us about anything wrong or missing.

On the other hand, it works as advertised on developers' computers, so if you need to deploy Rails on CentOS or RHEL today, you now have a choice of spending half a day to set everything up manually, or half an hour to install RubyWorks.

Further details are at http://rubyworks.rubyforge.org

If you are attending RailsConf this weekend, and want to talk about this project, feel free to seek me out in corridors, or leave me a note at ThoughtWorks booth. Especially if you think that RubyWork sucks - I will be delighted to hear about it. Honestly, that's what versions 0.0.1 are for.

I'm also doing a talk on Saturday in Products & Services track, which will cover hows, whys and the bright future of RubyWorks (hint: it's not just a bunch of RPMs and a phone number, nor a rerun of J2EE in Ruby).

Being unavailable on RHEL 4 is not the only problem with mod_proxy_balancer (although the most obvious one).

Another problem is that it has no idea that downstream server (Mongrel) is essentially single-threaded, when it's running Rails. So, when one of your (say) four Mongrels is stuck on a deadlock or an endless loop, you are losing every 4th request, i.e. all of your users experience downtime. Even if it's just a long-running request, it makes other requests long-running.

RubyWorks setup doesn't have that problem, because HAProxy is configured to send one request at a time to any given Mongrel. When one node in the cluster gets stuck, all subsequent requests are routed to other nodes.

HAProxy is also somewhat better than mod_proxy_balancer at dealing with cluster nodes going up and down while under heavy load.

To be fair, the downside of HAProxy is that it's yet another process to manage, and yet another socket. I personally think, the trade-off is still worth it.