Commit | Line | Data |
8e40e7ef |
1 | =head1 NAME |
2 | |
3 | Catalyst::Manual::SuccessStories - Catalyst rocks! |
4 | |
5 | =head1 DESCRIPTION |
6 | |
d01df17d |
7 | Catalyst is great, no question... |
8e40e7ef |
8 | |
9 | =head1 STORIES |
10 | |
f531dd37 |
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 |
07e73f82 |
53 | error pages, embarrassingly pointed out by a Slashdot poster, |
f531dd37 |
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. |
8e40e7ef |
68 | |
69 | =head1 AUTHOR |
70 | |
71 | Sebastian Riedel, C<sri@oook.de> |
f531dd37 |
72 | Jesse Sheidlower, C<jester@panix.com> |
8e40e7ef |
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. |