=head1 NAME
Catalyst::Manual::SuccessStories - Catalyst rocks!
=head1 DESCRIPTION
Catalyst is great,
no
question...
=head1 STORIES
=head2 Early Maypole -> Catalyst porting (Jesse Sheidlower)
The original version of the Oxford English Dictionary's
Science Fiction web site, now at
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
L<Maypole> and L<Template Toolkit|Template>. 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.
=head1 AUTHOR
Sebastian Riedel, C<sri
@oook
.de>
Jesse Sheidlower, C<jester
@panix
.com>
=head1 COPYRIGHT
This program is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.