SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
Enterprise PHP Development

                 Ivo Jansch - ivo@ibuildings.com


                        ZendCon 2008

Enterprise PHP
About me
• Ibuildings:
  • PHP services (dev, training, consulting)
  • “Professionalizing PHP usage”
  • Based in Europe (4 offices in UK and NL)
  • 65 people, 40 devs/consultants (mostly ZCE)
• Me:
  • CTO at Ibuildings
  • Author at php|architect
  • Geek
  • Blogger
Enterprise PHP
What’s an Enterprise?
             “Any of several ships by that name
           in the Star Trek universe” – Wikipedia




“A business, company or comparable organization”
 Enterprise PHP
PHP usage is changing
•    1998
      •    Personal stuff

•    2003
      •    Simple websites
      •    Content management
      •    Blogs

•    2008
      •    Big websites
      •    Banks
      •    Insurance Companies

    Enterprise PHP
PHP’s Quest so far

                             Enterprise



                                     SME


                                           SOHO



Enterprise PHP
Is PHP ‘enterprise ready’?




Enterprise PHP
Is PHP ‘enterprise ready’?




 Big                           Small
 Enterprise friendly           Lightweight

 enterpriCe                    Cheap

 CS required                   Easy to learn




    Enterprise PHP
A word from my girlfriend


            It's not the   SIZE of the tool...

                 It's how you USE it.




Enterprise PHP
Traditional PHP metaphor

                 PHP is like LEGO bricks




Enterprise PHP
Improved metaphor
                       PHP is no longer a toy
                 Let’s use the metaphor of actual bricks




Enterprise PHP
About Bricks


•    Extreme Simplicity
•    Easy to learn
•    Versatile
•    Cheap




    Enterprise PHP
Enterprise Development
                 In 10 steps




Enterprise PHP
Step 1 – The Team
     “I have read about your plans to build a new
         skyscraper and I am applying for a job.

I have a lot of experience with Bricks. I taught myself
   how to use them and have been maintaining our
           family shed for a few years now.”




 Enterprise PHP
Step 1 – The Team
• Be a Software Engineer
• Train your skills
• Study OO principles
• Consider Zend Certification



 Enterprise PHP
Step 2 - Requirements
• What does the customer want?
• What will visitors want?
• What does the customer really need?




 Enterprise PHP
Step 2 - Requirements
Functional Design
  •   Requirements Definition
  •   Interaction Design / Wireframes
  •   Flow Diagrams
  •   Tip: Axure




 Enterprise PHP
Step 3 - Architecture
Don’t just start stacking bricks




                             Create an architecture first

  Enterprise PHP
Step 3 - Architecture
Technical Design
  •   Modeling
      • Class Diagrams
      • ER Diagrams (data model)
      • Collaboration Diagrams
      • Use Cases etc.
  •   Tools:
      • UML
      • Whiteboards



  Enterprise PHP
Step 3 - Architecture
High Level Architectures:

   •   MVC (Model, View, Controller)
   •   SOA (Service Oriented Architecture)
   •   Multi-tier development (Frontend, Application, BL, Data)
   •   CBD (Component Based Development)




  Enterprise PHP
Step 4 - Tools
You don’t need tools…



                        But they make you productive




  Enterprise PHP
Step 4 - Tools
Development:
   •   Eclipse PDT
   •   Zend Studio
   •   PhpEd
   •   Vim
   •   Komodo

IDE’s versus Editors
   •   Debugging & Profiling
   •   Syntax Check
   •   Cross-Referencing / Navigation

  Enterprise PHP
Step 4 - Tools
Source Control
  •   CVS / SVN / MS VSS
  •   Bitkeeper / GIT




Documentation
  •   phpDocumentor
       http://phpdoc.org

  •   PHPXRef

   
        http://phpxref.sourceforge.net

  •   Wiki
   
   
        http://en.wikipedia.org/wiki/List_of_wiki_software




 Enterprise PHP
Step 5 - Foundation
Start stacking bricks?
   •   How many bricks does it take?
   •   What about stability?




                                   Start with a foundation


  Enterprise PHP
Step 5 - Foundation
Use a framework
  •   Provides guidelines (frame)
  •   Off the shelf components

Examples
  •   Zend Framework – http://framework.zend.com
  •   ezComponents – http://ez.no/ezcomponents
  •   Symfony – http://www.symfony-project.org
  •   ATK – http://www.atk-framework.com




 Enterprise PHP
Step 5 - Foundation
The “Not Invented Here” Syndrome:


  •   “The existing frameworks are no good.
      
 
 I can do this better.”
  •   “This framework is no good.
      
 
 It can do A through Y but I need Z.”
  •   “This framework is too big.
      
 
 It provides A-Z but we only need A and B.”
  •   “I know there's a good framework.
      
 
 But I would like to learn.”



 Enterprise PHP
Step 6 - Design Patterns

                     Requirement 1056.4:

           We need to be able to look outside,
           but we can't make holes in the wall
             (rain should be kept outside).

                 When it's sunny, a hole is ok.


Enterprise PHP
Step 6 - Design Patterns
• A ‘window’ is a concept
  •   Best practice way of solving a particular problem

• In IT, we call this a ‘design pattern’
• Popular patterns in PHP:
  •   MVC, Factory, Singleton, Registry, Decorator

• Good read:
  •   php|architect's Guide to PHP Design Patterns
      
- Jason E. Sweat



 Enterprise PHP
Step 7 - Testing




  Is your software tested after it has gone live?
Enterprise PHP
Step 7 - Testing
Various types of testing:
   •   Developer testing
   •   Functional testing
   •   Environment testing
   •   Performance testing
   •   Usability testing




  Enterprise PHP
Step 7 - Testing
                 A common scenario…




Enterprise PHP
Step 7 - Testing
                   The user complains…




                 MWOEHA!
                  BUG!




Enterprise PHP
Step 7 - Testing
             Developer attacks the problem…




                 fix_bug();




Enterprise PHP
Step 7 - Testing
                   Problem Solved!




Enterprise PHP
Step 7 - Testing
• Solution: Unit Tests
   •    Automated testing after each change
   •    Prevents regressions

• Testing for PHP applications:
   •    PHPUnit

 
 
 
     http://www.phpunit.de/ 

   •    SimpleTest
 
 
 
   http://www.lastcraft.com/simple_test.php


• Continuous Integration:
   •CruiseControl

 
       http://cruisecontrol.sourceforge.net/

   •    phpUnderControl
    http://www.phpundercontrol.org/




  Enterprise PHP
Step 7 - Testing
• Test Driven Development
  1. Define functionality
  2. Create testcase
  3. Run test => test fails
  4. Implement functionality
     •   Test succeeds? Done
     •   Test fails? Refactor

  Repeat step 4 until finished




 Enterprise PHP
Step 8 - Optimization

                 Users are reporting:


        quot;I work on the 197th floor. Every day I
       have to walk the stairs for 2 hours, then I
         have only 4 hours left to do my job.quot;




Enterprise PHP
Step 8 - Optimization
                  Solution: Elevator




Enterprise PHP
Step 8 - Optimization
In PHP, this ‘elevator’ is called an ‘accelerator’

   •   This is how PHP works (pseudo-ish code):
       read index.php;                  // enter the building
       compile index.php;                // go to floor 197
       echo “Hello World”;               // get the job done


   •   An accelerator improves the first 2 steps


   •   Accelerators for PHP:
       •   APC

 
 
 
       http://pecl.php.net/package/APC
       •   eAccelerator
 
   http://eaccelerator.net/
       •   Zend Platform

   http://www.zend.com/products/zend_platform


  Enterprise PHP
Step 8 - Optimization

                    Users complain:


          “Every time I want coffee I have to go
              to the top floor to get some.”




Enterprise PHP
Step 8 - Optimization
• Solution:
   •    Create small coffee corners on every floor so people don’t
        have to go to the main restaurant every time.

• In PHP we call this caching
   •    Don’t query the database everytime you need data
   •    Use locally stored copy (file or memory)

• PHP Caching solutions:
   •Zend_Cache
 
          http://framework.zend.com

   •    Zend Platform
 
   http://www.zend.com/products/zend_platform

   •    Memcached
 
 
     http://danga.com/memcached/



  Enterprise PHP
Step 9 - Deployment
•    Lifecycle:
     •    Develop
     •    Test
     •    Deploy to acceptance test environment
     •    Deploy to live


•    Use SVN
•    Code is just a part, don't forget the database
•    Create a 'Deployment & Release Profile'

    Enterprise PHP
Step 9 - Deployment
                    System Architecture


                       PHP
                                 MySQL
                     Apache
                             Linux


    From a simple single machine LAMP stack…
Enterprise PHP
Step 9 - Deployment




   … to a High Availability, Scalable Architecture
Enterprise PHP
Step 10 - Operations

Monitoring:


  •   Logfiles
  •   Monitor infrastructure (tools such as Nagios)
  •   Monitor application (tools such as Zend Platform)
  •   Monitor business (is the money still pouring in?)




 Enterprise PHP
Step 10 - Operations
Debugging

  •   Ideal:

      “I had error x when I selected y after I clicked z”

  •   Reality:

      “It doesn't work!”
      “What exactly doesn't work, and what did you do?”
      “It just ******** didn't work, FIX IT.”



 Enterprise PHP
Step 10 - Operations

Solutions:
   •   A ‘root cause’
       analysis tool
   •   Logging
   •   Context Capture




  Enterprise PHP
Step 10 - Operations

Change management:


  •   Ticket system
  •   Stick to your deployment - use the DRP
  •   DON'T TOUCH THE LIVE ENVIRONMENT. EVAH!




 Enterprise PHP
The Big Picture
                   (We’re almost done)




Enterprise PHP
The Big Picture
• No ‘cowboy coding’, but structured steps
  •   Higher quality
  •   Software will be easier to maintain (and cheaper)

• Development methodology
  •   Waterfall
  •   Agile (DSDM, XP, Scrum)

• Software Development Life Cycle (SDLC)
  •   Adapt from existing methods, learn from experts
  •   Document it properly
  •   Make it the cornerstone of your development efforts

 Enterprise PHP
More things to think about

• Planning
• Coding
• Implementation
• Security


 Enterprise PHP
Shameless Plug
Book about this all:
   •   php|architect’s Guide to
       Enterprise PHP Development
   •   ISBN: 978-0-9738621-8-8
   •   Order at phparch.com
       or amazon.com
   •   http://www.enterprisephp.nl




  Enterprise PHP
Questions?
                    ivo@ibuildings.com
                 http://www.ibuildings.com
                   http://www.jansch.nl

Enterprise PHP

Mais conteúdo relacionado

Mais procurados

Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Ivo Jansch
 
Improving WordPress Performance: Xdebug and PHP profiling
Improving WordPress Performance: Xdebug and PHP profilingImproving WordPress Performance: Xdebug and PHP profiling
Improving WordPress Performance: Xdebug and PHP profilingSeravo
 
Laravel Dusk
Laravel DuskLaravel Dusk
Laravel Duskkingvish
 
Sync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpnSync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpnLorenzo Barbieri
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08kingsfleet
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile DevelopmentGabriele Lana
 
Behavior Driven Development with Drupal
Behavior Driven Development with DrupalBehavior Driven Development with Drupal
Behavior Driven Development with DrupalAlexandru Badiu
 

Mais procurados (11)

Symfony for non-techies
Symfony for non-techiesSymfony for non-techies
Symfony for non-techies
 
php_tizag_tutorial
php_tizag_tutorialphp_tizag_tutorial
php_tizag_tutorial
 
Phpbasics
PhpbasicsPhpbasics
Phpbasics
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
 
Php simple
Php simplePhp simple
Php simple
 
Improving WordPress Performance: Xdebug and PHP profiling
Improving WordPress Performance: Xdebug and PHP profilingImproving WordPress Performance: Xdebug and PHP profiling
Improving WordPress Performance: Xdebug and PHP profiling
 
Laravel Dusk
Laravel DuskLaravel Dusk
Laravel Dusk
 
Sync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpnSync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpn
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
 
Behavior Driven Development with Drupal
Behavior Driven Development with DrupalBehavior Driven Development with Drupal
Behavior Driven Development with Drupal
 

Destaque

PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 
Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)Anton Babenko
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsAdam Culp
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with PhingMichiel Rook
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Corley S.r.l.
 
Continuous Integration and PHP
Continuous Integration and PHPContinuous Integration and PHP
Continuous Integration and PHPArno Schneider
 
Deploy PHP Apps on AWS Beanstalk & Deploy with Git
Deploy PHP Apps on AWS Beanstalk & Deploy with GitDeploy PHP Apps on AWS Beanstalk & Deploy with Git
Deploy PHP Apps on AWS Beanstalk & Deploy with GitAmazon Web Services
 
写给技术人员的产品指南
写给技术人员的产品指南写给技术人员的产品指南
写给技术人员的产品指南easychen
 
Extensionen, Kontagionen und die Grenzen von Bildungsprozessen
Extensionen, Kontagionen und die Grenzen von BildungsprozessenExtensionen, Kontagionen und die Grenzen von Bildungsprozessen
Extensionen, Kontagionen und die Grenzen von BildungsprozessenBenjamin Jörissen
 
Präsentationsstrategien für (pädagogische) Projekte im Social Web
Präsentationsstrategien für (pädagogische) Projekte im Social WebPräsentationsstrategien für (pädagogische) Projekte im Social Web
Präsentationsstrategien für (pädagogische) Projekte im Social WebBenjamin Jörissen
 
心安平安
心安平安心安平安
心安平安Cola Cat
 
Integrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIntegrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIvo Jansch
 
Practical aspects of using Microsoft technologes in Belgorod Information Fund
Practical aspects of using Microsoft technologes in Belgorod Information FundPractical aspects of using Microsoft technologes in Belgorod Information Fund
Practical aspects of using Microsoft technologes in Belgorod Information FundExey Panteleev
 
为什么你需要了解应用云
为什么你需要了解应用云为什么你需要了解应用云
为什么你需要了解应用云easychen
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of JackrabbitJukka Zitting
 
Justgiving payment report manager instructions
Justgiving payment report manager instructionsJustgiving payment report manager instructions
Justgiving payment report manager instructionsJonathan Waddingham
 
Blend it up - leancamp london presentation
Blend it up - leancamp london presentationBlend it up - leancamp london presentation
Blend it up - leancamp london presentationAntonio Terreno
 
PfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio OverviewPfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio OverviewIvo Jansch
 

Destaque (20)

PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 
Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with Jenkins
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with Phing
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
 
Continuous Integration and PHP
Continuous Integration and PHPContinuous Integration and PHP
Continuous Integration and PHP
 
Deploy PHP Apps on AWS Beanstalk & Deploy with Git
Deploy PHP Apps on AWS Beanstalk & Deploy with GitDeploy PHP Apps on AWS Beanstalk & Deploy with Git
Deploy PHP Apps on AWS Beanstalk & Deploy with Git
 
写给技术人员的产品指南
写给技术人员的产品指南写给技术人员的产品指南
写给技术人员的产品指南
 
Extensionen, Kontagionen und die Grenzen von Bildungsprozessen
Extensionen, Kontagionen und die Grenzen von BildungsprozessenExtensionen, Kontagionen und die Grenzen von Bildungsprozessen
Extensionen, Kontagionen und die Grenzen von Bildungsprozessen
 
Präsentationsstrategien für (pädagogische) Projekte im Social Web
Präsentationsstrategien für (pädagogische) Projekte im Social WebPräsentationsstrategien für (pädagogische) Projekte im Social Web
Präsentationsstrategien für (pädagogische) Projekte im Social Web
 
心安平安
心安平安心安平安
心安平安
 
Integrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIntegrating PHP With System-i using Web Services
Integrating PHP With System-i using Web Services
 
Practical aspects of using Microsoft technologes in Belgorod Information Fund
Practical aspects of using Microsoft technologes in Belgorod Information FundPractical aspects of using Microsoft technologes in Belgorod Information Fund
Practical aspects of using Microsoft technologes in Belgorod Information Fund
 
Good Luck
Good LuckGood Luck
Good Luck
 
为什么你需要了解应用云
为什么你需要了解应用云为什么你需要了解应用云
为什么你需要了解应用云
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of Jackrabbit
 
Justgiving payment report manager instructions
Justgiving payment report manager instructionsJustgiving payment report manager instructions
Justgiving payment report manager instructions
 
Blend it up - leancamp london presentation
Blend it up - leancamp london presentationBlend it up - leancamp london presentation
Blend it up - leancamp london presentation
 
PfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio OverviewPfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio Overview
 

Semelhante a Enterprise PHP Development - ZendCon 2008

Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...Combell NV
 
Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9PrinceGuru MS
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Ivo Jansch
 
The Power Of Refactoring (PHPNW)
The Power Of Refactoring (PHPNW)The Power Of Refactoring (PHPNW)
The Power Of Refactoring (PHPNW)Stefan Koopmanschap
 
Advanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan BroerseAdvanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan Broersedpc
 
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI serverPyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI serverPloneFoundation
 
Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)Stefan Koopmanschap
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinneydpc
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPIoannis Baltopoulos
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for TestersAdam Goucher
 
Jun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By ExampleJun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By Example360|Conferences
 
Migrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend WebinarMigrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend WebinarIvo Jansch
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHPJonathan Klein
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorialoscon2007
 
Continuous Integration Step-by-step
Continuous Integration Step-by-stepContinuous Integration Step-by-step
Continuous Integration Step-by-stepMichelangelo van Dam
 
symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...
symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...
symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...Fabien Potencier
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 

Semelhante a Enterprise PHP Development - ZendCon 2008 (20)

Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...
 
Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Becoming A Php Ninja
Becoming A Php NinjaBecoming A Php Ninja
Becoming A Php Ninja
 
The Power Of Refactoring (PHPNW)
The Power Of Refactoring (PHPNW)The Power Of Refactoring (PHPNW)
The Power Of Refactoring (PHPNW)
 
Advanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan BroerseAdvanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan Broerse
 
The Power of Refactoring
The Power of RefactoringThe Power of Refactoring
The Power of Refactoring
 
Test
TestTest
Test
 
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI serverPyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
 
Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinney
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEP
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
 
Jun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By ExampleJun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By Example
 
Migrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend WebinarMigrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend Webinar
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHP
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorial
 
Continuous Integration Step-by-step
Continuous Integration Step-by-stepContinuous Integration Step-by-step
Continuous Integration Step-by-step
 
symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...
symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...
symfony: Simplify your professional web development with PHP (IPC Frankfurt 2...
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 

Mais de Ivo Jansch

Own Your Apps
Own Your Apps Own Your Apps
Own Your Apps Ivo Jansch
 
PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)Ivo Jansch
 
Mobile for PHP developers
Mobile for PHP developersMobile for PHP developers
Mobile for PHP developersIvo Jansch
 
Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Ivo Jansch
 
The Business Case For Telecommuting
The Business Case For TelecommutingThe Business Case For Telecommuting
The Business Case For TelecommutingIvo Jansch
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The CloudIvo Jansch
 
PHP in a mobile ecosystem
PHP in a mobile ecosystem PHP in a mobile ecosystem
PHP in a mobile ecosystem Ivo Jansch
 
27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)Ivo Jansch
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Ivo Jansch
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)Ivo Jansch
 
PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)Ivo Jansch
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and StrategyIvo Jansch
 
PHP and the Cloud
PHP and the CloudPHP and the Cloud
PHP and the CloudIvo Jansch
 
PHP in the Real World
PHP in the Real WorldPHP in the Real World
PHP in the Real WorldIvo Jansch
 
Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Ivo Jansch
 
Hello Enterprise, my name is PHP
Hello Enterprise, my name is PHPHello Enterprise, my name is PHP
Hello Enterprise, my name is PHPIvo Jansch
 
Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Ivo Jansch
 
Maatwerk Software
Maatwerk SoftwareMaatwerk Software
Maatwerk SoftwareIvo Jansch
 
Introductie Web 2.0
Introductie Web 2.0Introductie Web 2.0
Introductie Web 2.0Ivo Jansch
 
Wat is Open Source?
Wat is Open Source?Wat is Open Source?
Wat is Open Source?Ivo Jansch
 

Mais de Ivo Jansch (20)

Own Your Apps
Own Your Apps Own Your Apps
Own Your Apps
 
PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)
 
Mobile for PHP developers
Mobile for PHP developersMobile for PHP developers
Mobile for PHP developers
 
Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)
 
The Business Case For Telecommuting
The Business Case For TelecommutingThe Business Case For Telecommuting
The Business Case For Telecommuting
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The Cloud
 
PHP in a mobile ecosystem
PHP in a mobile ecosystem PHP in a mobile ecosystem
PHP in a mobile ecosystem
 
27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)
 
PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and Strategy
 
PHP and the Cloud
PHP and the CloudPHP and the Cloud
PHP and the Cloud
 
PHP in the Real World
PHP in the Real WorldPHP in the Real World
PHP in the Real World
 
Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)
 
Hello Enterprise, my name is PHP
Hello Enterprise, my name is PHPHello Enterprise, my name is PHP
Hello Enterprise, my name is PHP
 
Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)
 
Maatwerk Software
Maatwerk SoftwareMaatwerk Software
Maatwerk Software
 
Introductie Web 2.0
Introductie Web 2.0Introductie Web 2.0
Introductie Web 2.0
 
Wat is Open Source?
Wat is Open Source?Wat is Open Source?
Wat is Open Source?
 

Último

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
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
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 

Último (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
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
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
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...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

Enterprise PHP Development - ZendCon 2008

  • 1. Enterprise PHP Development Ivo Jansch - ivo@ibuildings.com ZendCon 2008 Enterprise PHP
  • 2. About me • Ibuildings: • PHP services (dev, training, consulting) • “Professionalizing PHP usage” • Based in Europe (4 offices in UK and NL) • 65 people, 40 devs/consultants (mostly ZCE) • Me: • CTO at Ibuildings • Author at php|architect • Geek • Blogger Enterprise PHP
  • 3. What’s an Enterprise? “Any of several ships by that name in the Star Trek universe” – Wikipedia “A business, company or comparable organization” Enterprise PHP
  • 4. PHP usage is changing • 1998 • Personal stuff • 2003 • Simple websites • Content management • Blogs • 2008 • Big websites • Banks • Insurance Companies Enterprise PHP
  • 5. PHP’s Quest so far Enterprise SME SOHO Enterprise PHP
  • 6. Is PHP ‘enterprise ready’? Enterprise PHP
  • 7. Is PHP ‘enterprise ready’?  Big  Small  Enterprise friendly  Lightweight  enterpriCe  Cheap  CS required  Easy to learn Enterprise PHP
  • 8. A word from my girlfriend It's not the SIZE of the tool... It's how you USE it. Enterprise PHP
  • 9. Traditional PHP metaphor PHP is like LEGO bricks Enterprise PHP
  • 10. Improved metaphor PHP is no longer a toy Let’s use the metaphor of actual bricks Enterprise PHP
  • 11. About Bricks • Extreme Simplicity • Easy to learn • Versatile • Cheap Enterprise PHP
  • 12. Enterprise Development In 10 steps Enterprise PHP
  • 13. Step 1 – The Team “I have read about your plans to build a new skyscraper and I am applying for a job. I have a lot of experience with Bricks. I taught myself how to use them and have been maintaining our family shed for a few years now.” Enterprise PHP
  • 14. Step 1 – The Team • Be a Software Engineer • Train your skills • Study OO principles • Consider Zend Certification Enterprise PHP
  • 15. Step 2 - Requirements • What does the customer want? • What will visitors want? • What does the customer really need? Enterprise PHP
  • 16. Step 2 - Requirements Functional Design • Requirements Definition • Interaction Design / Wireframes • Flow Diagrams • Tip: Axure Enterprise PHP
  • 17. Step 3 - Architecture Don’t just start stacking bricks Create an architecture first Enterprise PHP
  • 18. Step 3 - Architecture Technical Design • Modeling • Class Diagrams • ER Diagrams (data model) • Collaboration Diagrams • Use Cases etc. • Tools: • UML • Whiteboards Enterprise PHP
  • 19. Step 3 - Architecture High Level Architectures: • MVC (Model, View, Controller) • SOA (Service Oriented Architecture) • Multi-tier development (Frontend, Application, BL, Data) • CBD (Component Based Development) Enterprise PHP
  • 20. Step 4 - Tools You don’t need tools… But they make you productive Enterprise PHP
  • 21. Step 4 - Tools Development: • Eclipse PDT • Zend Studio • PhpEd • Vim • Komodo IDE’s versus Editors • Debugging & Profiling • Syntax Check • Cross-Referencing / Navigation Enterprise PHP
  • 22. Step 4 - Tools Source Control • CVS / SVN / MS VSS • Bitkeeper / GIT Documentation • phpDocumentor http://phpdoc.org • PHPXRef http://phpxref.sourceforge.net • Wiki http://en.wikipedia.org/wiki/List_of_wiki_software Enterprise PHP
  • 23. Step 5 - Foundation Start stacking bricks? • How many bricks does it take? • What about stability? Start with a foundation Enterprise PHP
  • 24. Step 5 - Foundation Use a framework • Provides guidelines (frame) • Off the shelf components Examples • Zend Framework – http://framework.zend.com • ezComponents – http://ez.no/ezcomponents • Symfony – http://www.symfony-project.org • ATK – http://www.atk-framework.com Enterprise PHP
  • 25. Step 5 - Foundation The “Not Invented Here” Syndrome: • “The existing frameworks are no good. I can do this better.” • “This framework is no good. It can do A through Y but I need Z.” • “This framework is too big. It provides A-Z but we only need A and B.” • “I know there's a good framework. But I would like to learn.” Enterprise PHP
  • 26. Step 6 - Design Patterns Requirement 1056.4: We need to be able to look outside, but we can't make holes in the wall (rain should be kept outside). When it's sunny, a hole is ok. Enterprise PHP
  • 27. Step 6 - Design Patterns • A ‘window’ is a concept • Best practice way of solving a particular problem • In IT, we call this a ‘design pattern’ • Popular patterns in PHP: • MVC, Factory, Singleton, Registry, Decorator • Good read: • php|architect's Guide to PHP Design Patterns - Jason E. Sweat Enterprise PHP
  • 28. Step 7 - Testing Is your software tested after it has gone live? Enterprise PHP
  • 29. Step 7 - Testing Various types of testing: • Developer testing • Functional testing • Environment testing • Performance testing • Usability testing Enterprise PHP
  • 30. Step 7 - Testing A common scenario… Enterprise PHP
  • 31. Step 7 - Testing The user complains… MWOEHA! BUG! Enterprise PHP
  • 32. Step 7 - Testing Developer attacks the problem… fix_bug(); Enterprise PHP
  • 33. Step 7 - Testing Problem Solved! Enterprise PHP
  • 34. Step 7 - Testing • Solution: Unit Tests • Automated testing after each change • Prevents regressions • Testing for PHP applications: • PHPUnit http://www.phpunit.de/ • SimpleTest http://www.lastcraft.com/simple_test.php • Continuous Integration: •CruiseControl http://cruisecontrol.sourceforge.net/ • phpUnderControl http://www.phpundercontrol.org/ Enterprise PHP
  • 35. Step 7 - Testing • Test Driven Development 1. Define functionality 2. Create testcase 3. Run test => test fails 4. Implement functionality • Test succeeds? Done • Test fails? Refactor Repeat step 4 until finished Enterprise PHP
  • 36. Step 8 - Optimization Users are reporting: quot;I work on the 197th floor. Every day I have to walk the stairs for 2 hours, then I have only 4 hours left to do my job.quot; Enterprise PHP
  • 37. Step 8 - Optimization Solution: Elevator Enterprise PHP
  • 38. Step 8 - Optimization In PHP, this ‘elevator’ is called an ‘accelerator’ • This is how PHP works (pseudo-ish code): read index.php; // enter the building compile index.php; // go to floor 197 echo “Hello World”; // get the job done • An accelerator improves the first 2 steps • Accelerators for PHP: • APC http://pecl.php.net/package/APC • eAccelerator http://eaccelerator.net/ • Zend Platform http://www.zend.com/products/zend_platform Enterprise PHP
  • 39. Step 8 - Optimization Users complain: “Every time I want coffee I have to go to the top floor to get some.” Enterprise PHP
  • 40. Step 8 - Optimization • Solution: • Create small coffee corners on every floor so people don’t have to go to the main restaurant every time. • In PHP we call this caching • Don’t query the database everytime you need data • Use locally stored copy (file or memory) • PHP Caching solutions: •Zend_Cache http://framework.zend.com • Zend Platform http://www.zend.com/products/zend_platform • Memcached http://danga.com/memcached/ Enterprise PHP
  • 41. Step 9 - Deployment • Lifecycle: • Develop • Test • Deploy to acceptance test environment • Deploy to live • Use SVN • Code is just a part, don't forget the database • Create a 'Deployment & Release Profile' Enterprise PHP
  • 42. Step 9 - Deployment System Architecture PHP MySQL Apache Linux From a simple single machine LAMP stack… Enterprise PHP
  • 43. Step 9 - Deployment … to a High Availability, Scalable Architecture Enterprise PHP
  • 44. Step 10 - Operations Monitoring: • Logfiles • Monitor infrastructure (tools such as Nagios) • Monitor application (tools such as Zend Platform) • Monitor business (is the money still pouring in?) Enterprise PHP
  • 45. Step 10 - Operations Debugging • Ideal: “I had error x when I selected y after I clicked z” • Reality: “It doesn't work!” “What exactly doesn't work, and what did you do?” “It just ******** didn't work, FIX IT.” Enterprise PHP
  • 46. Step 10 - Operations Solutions: • A ‘root cause’ analysis tool • Logging • Context Capture Enterprise PHP
  • 47. Step 10 - Operations Change management: • Ticket system • Stick to your deployment - use the DRP • DON'T TOUCH THE LIVE ENVIRONMENT. EVAH! Enterprise PHP
  • 48. The Big Picture (We’re almost done) Enterprise PHP
  • 49. The Big Picture • No ‘cowboy coding’, but structured steps • Higher quality • Software will be easier to maintain (and cheaper) • Development methodology • Waterfall • Agile (DSDM, XP, Scrum) • Software Development Life Cycle (SDLC) • Adapt from existing methods, learn from experts • Document it properly • Make it the cornerstone of your development efforts Enterprise PHP
  • 50. More things to think about • Planning • Coding • Implementation • Security Enterprise PHP
  • 51. Shameless Plug Book about this all: • php|architect’s Guide to Enterprise PHP Development • ISBN: 978-0-9738621-8-8 • Order at phparch.com or amazon.com • http://www.enterprisephp.nl Enterprise PHP
  • 52. Questions? ivo@ibuildings.com http://www.ibuildings.com http://www.jansch.nl Enterprise PHP