Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 2 (more)

Os Harkins

From oscon2007, 11 months ago

1195 views  |  0 comments  |  0 favorites
 

Tags

No tags to display

 
 
 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 1195
on Slideshare: 1195
from embeds: 0* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Care and Feeding of Large Web Applications Perrin Harkins

Slide 2: Arcos, a project at Plus Three About 2.5 years of continuous development 2 - 5 developers on the team during that time ~79,000 lines of Perl code ~4900 lines of SQL (Computed with David Wheeler's SLOCCount program) Plenty of HTML, CSS, and JavaScript too ~14000 automated tests in 269 files 169 CPAN modules

Slide 3: Arcos, cont'd CMS with modern AJAX UI E-commerce Data warehouse with AJAX query builder GUI E-mail campaign management Asynchronous job queue system Comprehensive reporting

Slide 4: Arcos, cont'd Object-oriented MVC-ish Controller classes Database classes Templates Core modules: CGI::Application Class::DBI HTML::Template

Slide 5: Deployment Hard to generalize .tar.gz files Always release full builds, not individual files Consistent state for production system QA installs are accurate copies

Slide 6: The CPAN problem “Just use the CPAN shell” Fails too often Installs whatever the latest version is

Slide 7: CPAN installer requirements: Install specific versions Install from local media Allow locally modified versions Fully automated “Erase your hard drive? [n]” Install in a local directory Skip the tests Cluster install Some will never work

Slide 8: Our solution Finds all modules in src/ directory of package (Including ones we hacked) Uses Expect to answer questions Builds non-CPAN stuff too Apache mod_perl SWISH-E search engine

Slide 9: Why bundle dependencies? Avoid troubleshooting local problems If possible, specify Perl, MySQL, OS, etc. Sometimes reality intervenes Hardware support Office politics

Slide 10: Next up: binary distributions Compile takes too long Still just tar? RPMs? PAR? See build system in Krang: http://krangcms.com/

Slide 11: OH HAI! I HELP WIF UR INDENTATION!

Slide 12: Upgrades Need full automation Got the database part Schema version number in database Run all upgrade scripts with appropriate names e.g. 2.0 --> 3.0 means run upgrade/V2_1.pm and upgrade/V3_0.pm Hand-written SQL scripts Test mode that upgrades from old schema first LVM for rollback in QA

Slide 13: Configuration Highly configurable systems must be highly ● configured Started with httpd.conf style ● Config::ApacheFormat – Basic scoping and inheritance –

Slide 14: Observations on Configuration People ignore options they don't understand ● If the server starts, it must be ok! – Some comments in a config file == weak ● documentation Things you rarely change shouldn't be in the ● shipped config file

Slide 15: I CAN HAS MAINTENANCE BRANCH?

Slide 16: Version Control Many tool choices now svn, svk, git... Fight it out and let me know who wins Most projects need at least two branches at all times development stable

Slide 17: Very simple version control Main branch is development Must build and pass tests When making a release from a branch, tag it Make a “2.0” tag when you release it

Slide 18: Very simple version control, cntd Maintenance branch from that tag for bug fixes “2.x” branch On maintenance release, merge all changes on maintenance branch to main branch Tag “2.1” on 2.x branch Merge 2.0 --> 2.1 onto main branch

Slide 19: Too simple? Not everyone is done at the same time Hard to keep dev branch stable for major changes Feature branches Possible integration problems Beware of complex merges This is not the Linux kernel Could be a people problem An alternate point of view http://utsl.gen.nz/talks/git-svn/intro.html

Slide 20: HALP! TESTS R FAYLIN!

Slide 21: Testing You all know the drill ● Local library for common testing tasks ● Log in mech object – Run test SMTP server – Test data setup and teardown ● Keep stack, delete in reverse order – Probably easier to just wipe the db –

Slide 22: Testing tools Simple Test::More scripts are easy ● But scoping becomes an issue – Test::Class – Test::Builder – Improves test failure messages ●

Slide 23: Testing tools, ctd ● Test::WWW::Mechanize ● Great for testing SSL, Apache config, mod_rewrite – Works fine on JavaScript pages – But doesn't test the JavaScript ● Selenium does ● Smolder ● http://sourceforge.net/projects/smolder –

Slide 24: KTHXBYE!