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

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Último (20)

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

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