[Update: Some of the presentation files are now available on the RailsConf Europe website]
Some quick notes from some of the excellent conference sessions that I attended yesterday at RailsConf Europe. I wasn’t here for the Tutorials on Monday though now I wish I had been – the quality of the presentations (at least the ones I’m picking) is excellent. Aside, Berlin is a cool spot, I must come back here sometime again to have a decent look around…
- All about latest developments for Capistrano 2.0 – it seems to have matured considerably in recent months.
- Use multistage_ext
- Use shared project capfiles to keep things DRY
- Use remote repository cache to speed up deployments
- Read Jamis Buck‘s blog and the Capistrano Google Group
Really Scaling Rails, (Britt Selvitelle – Twitter)
I’ve seen presentations on Twitter scalability, and even since then they have had a few more high profile outages (at least high profile amongst Twitter users). A couple of interesting takes from this talk:
- Twitter uses Apache, mod_proxy_blancer and mongrel servers
- All user traffic is handled by a single MySQL server. That server does have a slave that can be promoted to master (for redundancy). They have a couple of other MySQL databases for use internally for reporting etc.
- They set mongrel’s
num_procsto 1. This means that each mongrel server instance will not queue requests from mod_proxy_balancer – they will only accept one at a time. The side effect is if the concurrent request count > mongrel server count then users start getting error pages. Strangely, they’d rather users got errors than risking loosing queued requests whenever they have to restart a mongrel instance (mongrel apparently waits only 60s before sending itself a TERM signal when shutting down).
A little different to what I was expecting, Ferret provides an indexing service for arbitrary strings (documents), similar to Apache Lucene in many respects. Worth a look, if you need to support full text search within your rails application.
The title of this one was a a bit modest as Paola presented a slew of new Rails Widgets that SeeSaw have developed, all of which seem to be very flexible. Widgets for include tabbed nav (or course), site nav, tables (blocks), nubbins, show/hide blocks, help popups were all demoed. Their widgets integrate very nicely into the rails views/templates – all in all, it looks at least good enough for use in creating rails app prototypes and it appears they might be flexible enough to be embedded into a production application…
The Rest of REST (Roy T. Fielding) – slides
Good historical view of where Roy came from and how the principles of REST have always been such an important underpinning of the IETF’s thinking behind standardization of key web specifications like HTTP, URI and HTML. He provided a good overview of how the web architectural style is defined as a set of constraints:
- client server
- uniform interface
- layered systems
There was some interesting discussion on what is missing from Rails though Roy’s first two suggestions drew comments that he might have missed features in Rails that do what he wanted. His last suggestion, for Rails to guide the developer into using hypertext as the engine for of application state (man they really have to find a shorter name for that!) was a fair comment – seems like an incredibly difficult problem to solve in a generic framework like Rails but as he said, it’d be a first…
Last talk was Craig McClanahan finishing off the day with a short Rails and the Next Generation Web pitch. Now I hadn’t realised Craig had switched from Java to Ruby development and he seems to be loving it. Craigs name has all over the Apache code I’ve worked with for years now – he was one of the original Tomcat Catalina & Struts developers and he also co-authored the Servlet and JSF specifications. He had an interesting anecdote about how the Struts developers all suddenly found themselves working on non-struts based projects…