Fixed bug in mod_fastcgi config
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / SuccessStories.pod
1 =head1 NAME
2
3 Catalyst::Manual::SuccessStories - Catalyst rocks!
4
5 =head1 DESCRIPTION
6
7 Catalyst is great, no question...
8
9 =head1 STORIES
10
11 =head2 Early Maypole -> Catalyst porting (Jesse Sheidlower)
12
13 The original version of the Oxford English Dictionary's
14 Science Fiction web site, now at
15 L<http://www.jessesword.com/sf>, was written as plain CGI
16 scripts. (No, it's worse than that. It was written as .shtml
17 pages, with the SSI shelling out to a Perl script that
18 generated HTML. And yes, this was written after 1996. So sue
19 me.) While this was mostly satisfactory at one time, as the
20 site grew there were very many problems introduced by this
21 system. I decided to upgrade it to a modern system based on
22 L<Maypole> and L<Template Toolkit|Template>. Among the
23 user-visible features added were proper paging of the result
24 sets, a search function, and the linking in of the OED's
25 massive citation database to show all the quotations collected
26 by the OED for each term. Back-end features included a
27 mod_perl based framework, an extensible OO structure, proper
28 templating, and the like.
29
30 After some desultory work - I have a day job - a perfectly
31 working Maypole-based system was ready. However, at this point
32 development on Catalyst was going strong, and it was clearly
33 the wave of the future for Perl-based MVC frameworks. Also,
34 I was irritated by some features of Maypole, in particular its
35 habit of setting up an enormous amount of structures for you
36 regardless of whether they were needed. Since I was trying to
37 optimize this application, I wasn't thrilled with the idea of
38 having literally dozens of unneeded database calls on every
39 request; it wasn't easy to switch this off without overriding
40 large swathes of Maypole.
41
42 So I delayed the launch of the new site to port it to
43 Catalyst.  This took less than a day. My initial benchmarks
44 showed a remarkable speed increase, in the range of 100-250%,
45 depending on the type of request. (For example, on my
46 development server, I had been getting 16 pages/second under
47 Maypole for a "view" page that displayed a single full record;
48 under Catalyst this jumped to 57 pages/second.) After a week
49 or so of public beta testing, I shifted the entire site to the
50 new system, e-mailed Slashdot, and waited for the onslaught.
51
52 When it hit Slashdot, things held up very nicely. (Some early
53 error pages, embarrassingly pointed out by a Slashdot poster,
54 were in fact caused by a lack of available MySQL connections,
55 for which misconfiguration the DB admin was harshly
56 criticized, rather than from any app-specific failings.) In
57 the hours after slashdotting, the app averaged about 3,000
58 pages/hour, each representing a dynamic database-generated
59 page; the total requests averaged about 30,000/hour. During
60 this period the perceived speed of the app was extremely
61 snappy. After a small bump in the first minute, the load
62 average on the server was less than 1.0 the whole time,
63 usually under .3. Other apps running on the server were also
64 unaffected.
65
66 The ease of use and speed of Catalyst contributed greatly
67 to the success of this site.
68
69 =head1 AUTHOR
70
71 Sebastian Riedel, C<sri@oook.de>
72 Jesse Sheidlower, C<jester@panix.com>
73
74 =head1 COPYRIGHT
75
76 This program is free software, you can redistribute it and/or modify it under
77 the same terms as Perl itself.