An UPDATED 2010 post can be found here: http://codemonkey.ravelry.com/2010/03/24/ravelry-runs-on-2010
Just a little something to get the ol’ blog rolling again.
Last March, I wrote a tiny post that listed a few of the pieces that run Ravelry along with my opinion of each. Here is a update to that list. The biggest change? I’ve been running Phusion Passenger + Apache as application servers for the last several months.
As of March 2009, Ravelry runs on….
- Ruby on Rails 2.2: Still love it.
- Phusion Passenger: Replaced Thin/Mongrel. Passenger plus Ruby Enterprise Edition uses less memory, avoids memory leaks, and it spawns and retires Ruby processes as needed. I also like that you can get a fair amount of status and debugging information if you need it. It looks like Passenger is the new standard for Ruby deployment. The only downside? Hot deployments of new versions of the app were causing lots of trouble for me (Google Groups thread here). I ended up putting together a Capistrano script that removes each Passenger from load balancer, updates and stops/starts Apache once it is cold, puts it back into the loop, and moves on the the next app server.
- nginx: Still rocks. fast, memory efficient, stable, trouble free. We’re running two now.
- haproxy: Still rocks. I’m using it to load balance HTTP requests across Apaches and provide failover for search and another service.
- Sphinx: Still love it. If your site has any search needs, you’ve got to try it.
- beanstalkd: beanstalkd + a few simple Rails runner script daemons are my new solution for running background jobs and processing file uploads. This is a huge improvement over backgroundrb: much simpler, much more stable. I’ve never had a problem with beanstalkd. Background jobs used to be a very brittle part of our architecture and now I rarely think about them.
- Percona MySQL 5.0.x build: MySQL 5 has been rock solid for me. MySQL 5.1 was not. I’ve been running MySQL 5.1 on my slaves and I’ve found that they do a better job of picking up replication after a restart or other problem. Although I’d love the fast index creation feature that the InnoDB plugin provides, I have no plans to upgrade the main database to 5.1. However, I would like to bump up to one of the newer OurDelta MySQL 5 builds.
- Other stuff: I’m still very happy with Nagios for monitoring, Munin for perfomance graphs, Postfix for mail, Xen for virtualization, and Gentoo as my Linux of choice.
Updated to add a little diagram that shows how the web/application tier fits together.