Ruby Heavy-Lifting: Lazy load it, Event it, Defer it, and then Optimize it.
by Ilya Grigorik

Ruby is great for scripting, what about the heavy-lifting? In this talk we’ll disassemble the
lessons learned at AideRSS, and how we’ve optimized our Ruby infrastructure to handle millions of
RSS feeds on a daily basis – building a spider, processing content, and optimizing process
coordination and communication.

“Green Threads” and global interpreter lock (GIL) impose a lot of performance constraints on every
developer using Ruby 1.8. We’ll explore the limitations of the MRI, the dreaded global interpreter
lock (GIL), and look at the existing and upcoming alternatives – Ruby 1.9 concurrency model (Fibers
and Actors) & JRuby threading. In similar fashion, we’ll walk through architectural patterns which
can help us alleviate these problems: asynchronous and event driven processing, lazy data loading
and processing, and common optimization paths for improving performance (ranging from syntactic
optimizations, to writing custom C extensions).

You don’t have to leave the comfort of your Ruby shell to build a high performance system!

About Ilya Grigorik
Ilya Grigorik is the founder and CTO of AideRSS, Inc. After narrowly escaping certain death beneath
an avalanche of unread RSS feeds, he knew that something must be done to protect future generations
from the menace of information overload, and voila – AideRSS was born. An avid Ruby and RoR blogger
(for which he received the ‘Ruby Hero’ award at RailsConf ’08), and a tinkerer at heart, Ilya is
often found researching or evangelizing the latest web-development practices, software
architectures, and web standards in general.

Back