Catalyst::Manual::SuccessStories - Catalyst rocks!


Catalyst::Manual::SuccessStories - Catalyst rocks!


Catalyst is great, no question...


Early Maypole -> Catalyst porting (Jesse Sheidlower)

The original version of the Oxford English Dictionary's Science Fiction web site, now at, was written as plain CGI scripts. (No, it's worse than that. It was written as .shtml pages, with the SSI shelling out to a Perl script that generated HTML. And yes, this was written after 1996. So sue me.) While this was mostly satisfactory at one time, as the site grew there were very many problems introduced by this system. I decided to upgrade it to a modern system based on Maypole and Template Toolkit. Among the user-visible features added were proper paging of the result sets, a search function, and the linking in of the OED's massive citation database to show all the quotations collected by the OED for each term. Back-end features included a mod_perl based framework, an extensible OO structure, proper templating, and the like.

After some desultory work - I have a day job - a perfectly working Maypole-based system was ready. However, at this point development on Catalyst was going strong, and it was clearly the wave of the future for Perl-based MVC frameworks. Also, I was irritated by some features of Maypole, in particular its habit of setting up an enormous amount of structures for you regardless of whether they were needed. Since I was trying to optimize this application, I wasn't thrilled with the idea of having literally dozens of unneeded database calls on every request; it wasn't easy to switch this off without overriding large swathes of Maypole.

So I delayed the launch of the new site to port it to Catalyst. This took less than a day. My initial benchmarks showed a remarkable speed increase, in the range of 100-250%, depending on the type of request. (For example, on my development server, I had been getting 16 pages/second under Maypole for a ``view'' page that displayed a single full record; under Catalyst this jumped to 57 pages/second.) After a week or so of public beta testing, I shifted the entire site to the new system, e-mailed Slashdot, and waited for the onslaught.

When it hit Slashdot, things held up very nicely. (Some early error pages, embarrassingly pointed out by a Slashdot poster, were in fact caused by a lack of available MySQL connections, for which misconfiguration the DB admin was harshly criticized, rather than from any app-specific failings.) In the hours after slashdotting, the app averaged about 3,000 pages/hour, each representing a dynamic database-generated page; the total requests averaged about 30,000/hour. During this period the perceived speed of the app was extremely snappy. After a small bump in the first minute, the load average on the server was less than 1.0 the whole time, usually under .3. Other apps running on the server were also unaffected.

The ease of use and speed of Catalyst contributed greatly to the success of this site.


Sebastian Riedel, Jesse Sheidlower,


This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

 Catalyst::Manual::SuccessStories - Catalyst rocks!