Enterprise PHP (PHP London Conference 2008)

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    28 Favorites & 2 Groups

    Enterprise PHP (PHP London Conference 2008) - Presentation Transcript

    1. Enterprise PHP development Ivo Jansch <ivo@ibuildings.com> PHPLondon Conference, February 29, 2008
    2. About me
      • CTO at Ibuildings
        • Development using PHP (websites, applications)
        • Big projects (high traffic, multi-tier, clusters, high availability, large teams)
        • Consultancy (training, audits)
        • Partner of Zend Technologies
        • 9 years in NL, 3 months in UK
      • Geek!
        • Author of several Open Source projects
        • Interested in PHP, Web 2.0, Science
        • Nervous in front of audiences bigger than 5 ;-)
    3. What's an enterprise?
      • Wikipedia:
        • “ Any of several ships by that name in the Star Trek fictional universe”
        • “ A business, company, or comparable organization”
    4. Is PHP Enterprise ready?
      • CIO Magazine:
      • “ PHP works well for prototyping because it is easy to get a site up and running. Use PHP to design the site [...] but when it comes time for development, tell the team you want the result to look and act like this PHP site...but in Java”
      • (Or: “great, this is exactly what I need! now do it again, at twice the cost!”)
      • http://www.cio.com/article/176250 (skip the article, read the comments)
    5. Is PHP Enterprise ready?
      • Small
      • Lightweight
      • Cheap
      • Easy to learn
      • Big
      • Enterprise friendly
      • enterpriCe
      • CS required
    6. A word from my girlfriend
      • It's not the SIZE of the tool...
      • It's how you USE it.
    7. PHP is changing...
      • 1998
        • Personal stuff
      • 2003
        • Simple websites
        • Content management
        • Blogs
      • 2008
        • Big websites
        • Banks
        • Insurance Companies
        • ...
    8. PHP is changing...
      • Traditional metaphor
        • PHP is like Lego bricks
        • Bricks allowing you to build anything
    9. PHP is changing...
      • PHP is no longer a toy
        • Let’s use the metaphor of actual bricks
        • Because we’re building actual buildings now
    10. About Bricks
      • Extreme simplicity
      • Easy to learn
      • Versatile
      • Cheap
      • ... so building a skyscraper must be peanuts, right?
    11. Enterprise development in 10 steps
    12. Step 1 – The Team
      • “Dear Mr. Businessman,
      • 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.”
    13. Step 1 – The Team
      • Be a software engineer
      • Train your skills
      • Study OO principles
      • Consider Zend Certification
    14. Step 2 - Requirements
      • What does the customer need?
      • What do visitors want?
    15. Step 2 - Requirements
      • Functional Design
        • Requirements definition
        • Interaction Design / Wireframes
        • Flow diagrams
    16. Step 3 - Architecture
      • Don’t just start stacking bricks
      • Create an architecture first
    17. Step 3 - Architecture
      • Technical Design
        • Modelling
          • Class diagrams
          • ER diagram (data model)
          • Colaboration diagrams
          • Use cases
          • etc.
        • Tools: UML, whiteboards
    18. Step 3 - Architecture
      • High Level Architectures:
        • MVC (Model View Controller)
        • SOA (Service Oriented Architecture)
        • Multi-tier development (Frontend, Application, Data)
        • CBD (Component Based Development)
    19. Step 4 - Tools
      • You don’t need tools...
      • But they make you productive
    20. Step 4 - Tools
      • Development:
        • Eclipse (PDT)
        • PhpED
        • Vim
        • Zend Studio
      • IDE's vs Editors
        • Debugging
        • Profiling
        • Navigation / cross references
        • Inspection
    21. Step 4 - Tools
      • Source Control
        • CVS / SVN
        • Bitkeeper / GIT
        • Branching
        • Tagging
    22. Step 5 - Foundation
      • Start stacking bricks?
        • How many bricks does it take..
        • What about stability?
      • Start with a foundation
    23. Step 5 - Foundation
      • Use a framework
        • Provides guidelines (frame)
        • Off the shelf components
      • Examples
        • Zend Framework http://framework.zend.com
        • CakePHP http://http://www.cakephp.org
        • ezComponents http://ez.no/ezcomponents
        • Symfony http://www.symfony-project.org
        • ATK http://www.achievo.org/atk
    24. 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.”
    25. 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.
    26. 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
    27. Step 7 - Testing
      • Is your software tested after it has gone live?
    28. Step 7 - Testing
      • Various types of testing
        • Developer testing
        • Functional testing
        • Environment testing
        • Performance testing
        • Usability testing
    29. Step 7 - Testing
      • Common scenario
    30. Step 7 - Testing
      • User complains...
      MWOEHA! BUG!
    31. Step 7 - Testing
      • Developer attacks the problem
      fix_bug();
    32. Step 7 - Testing
      • Problem solved!
    33. 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:
        • Xinc http://code.google.com/p/xinc/
    34. 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
    35. 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;
    36. Step 8 - Optimization
      • Solution: Elevator
    37. 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:
          • eAccelerator http://eaccelerator.net/
          • APC http://pecl.php.net/package/APC
          • Zend Platform http://www.zend.com/products/zend_platform
    38. Step 8 - Optimization
      • Users complain:
      • “Every time I need coffee I have to go
      • to the top floor to get some.”
    39. 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
        • Smarty http://smarty.php.net
        • Zend Platform http://www.zend.com/products/zend_platform
        • Memcached http://danga.com/memcached/
    40. 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'
    41. Step 9 - Deployment
      • System Architecture
      PHP Apache Linux MySQL From a simple LAMP stack on a single machine...
    42. Step 9 - Deployment
      • System Architecture
      ... to a High Availability, Horizontally Scalable architecture
    43. 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?)
    44. 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.”
    45. Step 10 - Operations
      • Solution
        • A 'root cause analysis' tool
    46. Step 10 - Operations
      • Change management
        • Ticket system
        • Stick to your deployment - use the DRP
        • DON'T TOUCH THE LIVE ENVIRONMENT.
        • But I absolutely have to...
        • DON'T!
        • but...
        • NO! I MEAN IT! :-)
    47. 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
    48. More things to think about?
      • Development
      • Implementation
      • Documentation
      • Security
    49. Before I finish
      • Dutch PHP Conference 2008
        • http://www.phpconference.nl
        • Call for Ideas
          • see your favorite guru
          • hear your favorite topic
      • Buy my book
        • “php|architect's Enterprise PHP Development”
        • Should be available in a few months
      • Talk to us
        • Visit our booth
        • We are still hiring
        • We have stuff to sell you ;-)
    50. Questions? http://www.ibuildings.com http://www.jansch.nl [email_address]

    + Ivo JanschIvo Jansch, 2 years ago

    custom

    8888 views, 28 favs, 18 embeds more stats

    My presentation on 'Enterprise PHP' at the PHP Lond more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 8888
      • 8593 on SlideShare
      • 295 from embeds
    • Comments 0
    • Favorites 28
    • Downloads 0
    Most viewed embeds
    • 104 views on http://www.coderholic.com
    • 81 views on http://web20vn.com
    • 45 views on http://www.blogdopedro.net
    • 17 views on http://amiworks.co.in
    • 13 views on http://warunglobak.blogspot.com

    more

    All embeds
    • 104 views on http://www.coderholic.com
    • 81 views on http://web20vn.com
    • 45 views on http://www.blogdopedro.net
    • 17 views on http://amiworks.co.in
    • 13 views on http://warunglobak.blogspot.com
    • 10 views on http://phpmalayalam.blogspot.com
    • 9 views on http://fearsomegrue.blogspot.com
    • 2 views on http://www.dowling.me.uk
    • 2 views on http://myvirtualagency.com
    • 2 views on http://haind.byethost10.com
    • 2 views on http://zeta
    • 2 views on http://www.khongtuoc.co.cc
    • 1 views on http://www.nexen.net
    • 1 views on http://www.floorrobots.com
    • 1 views on http://moleculemanufacturing.com
    • 1 views on http://www.web20vn.com
    • 1 views on http://applysocialsecuritydisability.com
    • 1 views on http://handsfreephoneaccessories.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events