SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

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
 

Destacado (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 ?
 

Similar a 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
 

Similar a 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
 

Último

Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

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