SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Perl in the Real World

Jon Allen (JJ) – jj@opusvl.com
     YAPC::Europe 2010


     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
                  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
                                                  http://xkcd.com/208/


                  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
                   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
                   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
                 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
                  Open Source Business Systems
   www.opusvl.com
CatalystX::InjectComponent

•  Injects Controller, Model, and View components
   into a Catalyst application
    after 'setup_components' => sub {
        my $class = shift;

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

•  Create components with CatalystX::Starter

                 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
                 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
                     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
                  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
                    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
                  Open Source Business Systems
   www.opusvl.com

Weitere ähnliche Inhalte

Was ist angesagt?

You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHPTaylor Lovett
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to LaravelVin Lim
 
Laravel introduction
Laravel introductionLaravel introduction
Laravel introductionSimon Funk
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPressTaylor Lovett
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsTaylor Lovett
 
DSpace UI Prototype Challenge: Spring Boot + Thymeleaf
DSpace UI Prototype Challenge: Spring Boot + ThymeleafDSpace UI Prototype Challenge: Spring Boot + Thymeleaf
DSpace UI Prototype Challenge: Spring Boot + ThymeleafTim Donohue
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to LaravelEli Wheaton
 
FITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingFITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingRami Sayar
 
Laravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web ArtisansLaravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web ArtisansWindzoon Technologies
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentationToufiq Mahmud
 
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchTaylor Lovett
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPressTaylor Lovett
 
Ruby on Rails workshop for beginner
Ruby on Rails workshop for beginnerRuby on Rails workshop for beginner
Ruby on Rails workshop for beginnerUmair Amjad
 
Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache CamelKenneth Peeples
 

Was ist angesagt? (20)

You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHP
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to Laravel
 
Laravel introduction
Laravel introductionLaravel introduction
Laravel introduction
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPress
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications
 
DSpace UI Prototype Challenge: Spring Boot + Thymeleaf
DSpace UI Prototype Challenge: Spring Boot + ThymeleafDSpace UI Prototype Challenge: Spring Boot + Thymeleaf
DSpace UI Prototype Challenge: Spring Boot + Thymeleaf
 
What Is Hobo ?
What Is Hobo ?What Is Hobo ?
What Is Hobo ?
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to Laravel
 
Perl
PerlPerl
Perl
 
FITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingFITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript Debugging
 
Laravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web ArtisansLaravel - The PHP Framework for Web Artisans
Laravel - The PHP Framework for Web Artisans
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentation
 
Introduction to php
Introduction to phpIntroduction to php
Introduction to php
 
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with Elasticsearch
 
Laravel Introduction
Laravel IntroductionLaravel Introduction
Laravel Introduction
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Intro to Laravel
Intro to LaravelIntro to Laravel
Intro to Laravel
 
Ruby on Rails workshop for beginner
Ruby on Rails workshop for beginnerRuby on Rails workshop for beginner
Ruby on Rails workshop for beginner
 
Getting started with laravel
Getting started with laravelGetting started with laravel
Getting started with laravel
 
Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache Camel
 

Andere mochten auch

Creating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaCreating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaMark Gardner
 
YASPS OPENNING
YASPS OPENNINGYASPS OPENNING
YASPS OPENNINGJeen Lee
 
Phrase based Indexing and Information Retrieval
Phrase based Indexing and Information RetrievalPhrase based Indexing and Information Retrieval
Phrase based Indexing and Information RetrievalBala Abirami
 
Aspect-oriented programming in Perl
Aspect-oriented programming in PerlAspect-oriented programming in Perl
Aspect-oriented programming in Perlmegakott
 

Andere mochten auch (7)

Creating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaCreating Perl modules with Dist::Zilla
Creating Perl modules with Dist::Zilla
 
YASPS OPENNING
YASPS OPENNINGYASPS OPENNING
YASPS OPENNING
 
Phrase based Indexing and Information Retrieval
Phrase based Indexing and Information RetrievalPhrase based Indexing and Information Retrieval
Phrase based Indexing and Information Retrieval
 
Oo Perl
Oo PerlOo Perl
Oo Perl
 
Aspect-oriented programming in Perl
Aspect-oriented programming in PerlAspect-oriented programming in Perl
Aspect-oriented programming in Perl
 
perl_objects
perl_objectsperl_objects
perl_objects
 
Perl object ?
Perl object ?Perl object ?
Perl object ?
 

Ähnlich wie Perl in the Real World

Getting started with OpenERP
Getting started with OpenERPGetting started with OpenERP
Getting started with OpenERPAbeer AlSayed
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack SummitMiguel Zuniga
 
Rajnish singh(presentation on oracle )
Rajnish singh(presentation on  oracle )Rajnish singh(presentation on  oracle )
Rajnish singh(presentation on oracle )Rajput Rajnish
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftYaniv cohen
 
PHP Toolkit from Zend and IBM: Open Source on IBM i
PHP Toolkit from Zend and IBM: Open Source on IBM iPHP Toolkit from Zend and IBM: Open Source on IBM i
PHP Toolkit from Zend and IBM: Open Source on IBM iAlan Seiden
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5mbaric
 
Functional training day1
Functional training day1Functional training day1
Functional training day1Satyamitra maan
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
CON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptx
CON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptxCON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptx
CON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptxSergioBruno21
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopersBryan Cafferky
 
Rapid Tools(swift_suite) intro
Rapid Tools(swift_suite) introRapid Tools(swift_suite) intro
Rapid Tools(swift_suite) introJulie Jackson
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studyGaetano Giunta
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionDave Diehl
 
Containers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellContainers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellEugene Fedorenko
 

Ähnlich wie Perl in the Real World (20)

Getting started with OpenERP
Getting started with OpenERPGetting started with OpenERP
Getting started with OpenERP
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Ipc mysql php
Ipc mysql php Ipc mysql php
Ipc mysql php
 
Ow
OwOw
Ow
 
Rajnish singh(presentation on oracle )
Rajnish singh(presentation on  oracle )Rajnish singh(presentation on  oracle )
Rajnish singh(presentation on oracle )
 
Plantilla oracle
Plantilla oraclePlantilla oracle
Plantilla oracle
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
PHP Toolkit from Zend and IBM: Open Source on IBM i
PHP Toolkit from Zend and IBM: Open Source on IBM iPHP Toolkit from Zend and IBM: Open Source on IBM i
PHP Toolkit from Zend and IBM: Open Source on IBM i
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
 
Functional training day1
Functional training day1Functional training day1
Functional training day1
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
CON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptx
CON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptxCON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptx
CON5451_Brydon-OOW2014_Brydon_CON5451 (1).pptx
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopers
 
Rapid Tools(swift_suite) intro
Rapid Tools(swift_suite) introRapid Tools(swift_suite) intro
Rapid Tools(swift_suite) intro
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood edition
 
ow.ppt
ow.pptow.ppt
ow.ppt
 
ow.ppt
ow.pptow.ppt
ow.ppt
 
Ow
OwOw
Ow
 
Containers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellContainers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshell
 

Kürzlich hochgeladen

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 

Perl in the Real World

  • 1. Perl in the Real World Jon Allen (JJ) – jj@opusvl.com YAPC::Europe 2010 Perl in the Real World Open Source Business Systems www.opusvl.com
  • 2. 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 Open Source Business Systems www.opusvl.com
  • 3. 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 http://xkcd.com/208/ Perl in the Real World Open Source Business Systems www.opusvl.com
  • 4. 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 Open Source Business Systems www.opusvl.com
  • 5. 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 Open Source Business Systems www.opusvl.com
  • 6. 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 Open Source Business Systems www.opusvl.com
  • 7. 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 Open Source Business Systems www.opusvl.com
  • 8. CatalystX::InjectComponent •  Injects Controller, Model, and View components into a Catalyst application after 'setup_components' => sub { my $class = shift; CatalystX::InjectComponent->inject( into => $class, component => 'My::Other::Controller::JJ', as => 'Controller::NewName', ); } •  Create components with CatalystX::Starter Perl in the Real World Open Source Business Systems www.opusvl.com
  • 9. 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 Open Source Business Systems www.opusvl.com
  • 10. 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 Open Source Business Systems www.opusvl.com
  • 11. 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 Open Source Business Systems www.opusvl.com
  • 12. 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 Open Source Business Systems www.opusvl.com
  • 13. 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 Open Source Business Systems www.opusvl.com