13
Open Source Business Systems www.opusvl.com Perl in the Real World Jon Allen (JJ) – [email protected] YAPC::Europe 2010 Perl in the Real World

Perl in the Real World

  • Upload
    opusvl

  • View
    432

  • Download
    0

Embed Size (px)

DESCRIPTION

Presented at the YAPC::Europe 2010 conference in Pisa, Italy

Citation preview

Page 1: Perl in the Real World

Open Source Business Systems www.opusvl.com

Perl in the Real World

Jon Allen (JJ) – [email protected]

YAPC::Europe 2010

Perl in the Real World

Page 2: Perl in the Real World

Open Source Business Systems www.opusvl.com

About OpusVL

•  Open Source development company •  Based in Rugby, UK

•  Founded in 2000 – Celebrated our 10th anniversary in January 2010

•  Provide Open Source business systems – National retailers, financial institutions, SMEs –  Solutions, not code

Perl in the Real World

Page 3: Perl in the Real World

Open Source Business Systems www.opusvl.com

What do we do?

•  Bespoke software development –  Back-office / financial systems –  eCommerce –  Intranet applications

•  Proud to use Perl –  And Moose, Catalyst,

DBIx::Class, cpanminus, Test::More, etc

Perl in the Real World

http://xkcd.com/208/

Page 4: Perl in the Real World

Open Source Business Systems www.opusvl.com

Intranet project

•  National chain of car dealerships (UK)

•  Very large feature set •  Multiple domains –  Sales, HR, Customer Service, Finance

•  Future plans –  Integrate all back-office systems

Perl in the Real World

Page 5: Perl in the Real World

Open Source Business Systems www.opusvl.com

Architecture

•  Two key design considerations:

•  Entensible –  Long life-cycle, always adding new features

•  Maintainable – Modular design, develop and update individual

components independently of the whole system

Perl in the Real World

Page 6: Perl in the Real World

Open Source Business Systems www.opusvl.com

Pluggable Catalyst apps

•  Create a "base" application – Common functions, views, models etc –  Authentication and access control –  Standard user interface components

•  Write application plugins as CatalystX:: components

•  Combine these together into a new Catalyst app

Perl in the Real World

Page 7: Perl in the Real World

Open Source Business Systems www.opusvl.com

CatalystX::AppBuilder

•  Programmable configuration for Catalyst applications – Define your application in code –  Extend in the next app, then extend again and so on

•  Handles inheritance path for components –  e.g. a chain of template directories for

Catalyst::View::TT –  $self->inherited_path_to('root','templates')

Perl in the Real World

Page 8: Perl in the Real World

Open Source Business Systems www.opusvl.com

CatalystX::InjectComponent

•  Injects Controller, Model, and View components into a Catalyst application

•  Create components with CatalystX::Starter

Perl in the Real World

after 'setup_components' => sub { my $class = shift;

CatalystX::InjectComponent->inject( into => $class, component => 'My::Other::Controller::JJ', as => 'Controller::NewName', ); }

Page 9: Perl in the Real World

Open Source Business Systems www.opusvl.com

Deployment

•  Base OS – typically Debian •  Three environments – Development –  Staging –  Production

•  Always compile Perl from source –  System Perl belongs to the OS, custom Perl 5.10.1

for applications

Perl in the Real World

Page 10: Perl in the Real World

Open Source Business Systems www.opusvl.com

First rule of Installation Club

•  Everything installed to Staging and Production must be packaged as CPAN-style modules –  Standard module layout – Makefile.PL, t/*, Pod documentation –  All modules are versioned

•  Very simple to regress to a previous release

•  Perl is the OS – Unlike native OS packages, CPAN works on Debian,

RHEL, Mac OS X, Solaris, etc

Perl in the Real World

Page 11: Perl in the Real World

Open Source Business Systems www.opusvl.com

Use the toolchain, Luke

•  Install using cpanminus –  Resolves dependencies –  Very fast –  Standard install procedure for each project –  cpanm --sudo --installdeps .

•  Components of a large system can be managed and upgraded independently

Perl in the Real World

Page 12: Perl in the Real World

Open Source Business Systems www.opusvl.com

Future

•  Internal CPAN mirror –  Include all custom code –  Task:: modules to set up client environments

•  Internal Perldoc – Develop on top of Perldoc::Server

•  Don't fight it, feel it – CPAN toolchain gives many benefits – Well worth using!

Perl in the Real World

Page 13: Perl in the Real World

Open Source Business Systems www.opusvl.com

Conclusion

•  Clients care about results, not code –  The technology is our job

•  Perl gives us the tools to deliver •  The Perl Community makes it possible

•  Thank you!

Perl in the Real World