• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Enterprise PHP Development (Dutch PHP Conference 2008)
 

Enterprise PHP Development (Dutch PHP Conference 2008)

on

  • 3,701 views

Enterprise PHP presentation. Slightly shorter version of the PHPLondon one (45 minutes instead of 1h)

Enterprise PHP presentation. Slightly shorter version of the PHPLondon one (45 minutes instead of 1h)

Statistics

Views

Total Views
3,701
Views on SlideShare
3,699
Embed Views
2

Actions

Likes
3
Downloads
0
Comments
1

2 Embeds 2

http://s3.amazonaws.com 1
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • when you provide link to download above PPT?
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Enterprise PHP Development (Dutch PHP Conference 2008) Enterprise PHP Development (Dutch PHP Conference 2008) Presentation Transcript

    • Enterprise PHP development Ivo Jansch <ivo@ibuildings.com> Dutch PHP Conference, June 14, 2008 Ibuildings - http://www.ibuildings.com
    • What's an enterprise? •  Wikipedia:   “Any of several ships by that name in the Star Trek fictional universe”   “A business, company, or comparable organization” Tuesday, February 26, 2008 2
    • Is PHP Enterprise ready? •  CIO Magazine: “ H w r s w l f r pooy i g b c ue i i e s t g t a se u a d r n i g Ue P P t d s n P P ok e o r t t p ea s t s ay o e i p n u n . s H o ei n t n g the site [...] but when it comes time for development, tell the team you want t he 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)‫‏‬ Tuesday, February 26, 2008 3
    • Is PHP Enterprise ready?   Big   Small   Enterprise friendly   Lightweight   enterpriCe   Cheap   CS required   Easy to learn Tuesday, February 26, 2008 4
    • A word from my girlfriend It's not the SIZE of the tool... It's how you USE it. Tuesday, February 26, 2008 5
    • PHP is changing... •  1998   Personal stuff •  2003   Simple websites   Content management   Blogs •  2008   Big websites   Banks   Insurance Companies   ... Tuesday, February 26, 2008 6
    • PHP is changing... •  Traditional metaphor   PHP is like Lego bricks   Bricks allowing you to build anything Tuesday, February 26, 2008 7
    • PHP is changing... •  PHP is no longer a toy   Let’s use the metaphor of actual bricks   Because we’re building actual buildings now Tuesday, February 26, 2008 8
    • About Bricks •  Extreme simplicity •  Easy to learn •  Versatile •  Cheap ... so building a skyscraper must be peanuts, right? Tuesday, February 26, 2008 9
    • Enterprise development in 10 steps Ibuildings - http://www.ibuildings.com
    • 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.” Tuesday, February 26, 2008 11
    • Step 1 – The Team •  Be a software engineer •  Train your skills •  Study OO principles •  Consider Zend Certification Tuesday, February 26, 2008 12
    • Step 2 - Requirements •  What does the customer need? •  What do visitors want? Tuesday, February 26, 2008 13
    • Step 2 - Requirements •  Functional Design   Requirements definition   Interaction Design / Wireframes   Flow diagrams Tuesday, February 26, 2008 14
    • Step 3 - Architecture •  Don’t just start stacking bricks •  Create an architecture first Tuesday, February 26, 2008 15
    • Step 3 - Architecture •  Technical Design   Modelling •  Class diagrams •  ER diagram (data model)‫‏‬ •  Colaboration diagrams •  Use cases •  etc.   Tools: UML, whiteboards Tuesday, February 26, 2008 16
    • Step 3 - Architecture •  High Level Architectures:   MVC (Model View Controller)   SOA (Service Oriented Architecture)   Multi-tier development (Frontend, Application, Data)   CBD (Component Based Development)‫‏‬ Tuesday, February 26, 2008 17
    • Step 4 - Tools •  You don’t need tools... •  But they make you productive Tuesday, February 26, 2008 18
    • Step 4 - Tools •  Development:   Eclipse (PDT)‫‏‬   PhpED   Vim   Zend Studio   Komodo •  IDE's vs Editors   Debugging   Profiling   Navigation / cross references   Syntax Checking Tuesday, February 26, 2008 19
    • Step 4 - Tools •  Source Control   CVS / SVN   Bitkeeper / GIT   Branching   Tagging Tuesday, February 26, 2008 20
    • Step 5 - Foundation •  Start stacking bricks?   How many bricks does it take..   What about stability? •  Start with a foundation Tuesday, February 26, 2008 21
    • 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 Tuesday, February 26, 2008 22
    • 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.” Tuesday, February 26, 2008 23
    • 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. Tuesday, February 26, 2008 24
    • 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 Tuesday, February 26, 2008 25
    • Step 7 - Testing •  Is your software tested after it has gone live? Tuesday, February 26, 2008 26
    • Step 7 - Testing •  Various types of testing   Developer testing   Functional testing   Environment testing   Performance testing   Usability testing Tuesday, February 26, 2008 27
    • Step 7 - Testing •  Common scenario Tuesday, February 26, 2008 28
    • Step 7 - Testing •  User complains... MWOEHA! BUG! Tuesday, February 26, 2008 29
    • Step 7 - Testing •  Developer attacks the problem fix_bug(); Tuesday, February 26, 2008 30
    • Step 7 - Testing •  Problem solved! Tuesday, February 26, 2008 31
    • 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 with phpUnderControl   Xinc http://code.google.com/p/xinc/ Tuesday, February 26, 2008 32
    • 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 Tuesday, February 26, 2008 33
    • 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; Tuesday, February 26, 2008 34
    • Step 8 - Optimization •  Solution: Elevator Tuesday, February 26, 2008 35
    • 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 Tuesday, February 26, 2008 36
    • Step 8 - Optimization Users complain: “Every time I need coffee I have to go to the top floor to get some.” Tuesday, February 26, 2008 37
    • Step 8 - Optimization •  Solution: Create small coffee corners on every floor so people d o n’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 Tuesday, February 26, 2008 http://danga.com/memcached/ 38
    • 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' Tuesday, February 26, 2008 39
    • Step 9 - Deployment •  System Architecture PHP MySQL Apache Linux From a simple LAMP stack on a single machine... Tuesday, February 26, 2008 40
    • Step 9 - Deployment •  System Architecture ... to a High Availability, Horizontally Scalable architecture Tuesday, February 26, 2008 41
    • 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?) Tuesday, February 26, 2008 42
    • 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.” Tuesday, February 26, 2008 43
    • Step 10 - Operations •  Solution   A 'root cause analysis' tool Tuesday, February 26, 2008 44
    • 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! IF YOU TOUCH IT, YOU WILL LOSE ALL GURU POINTS. Tuesday, February 26, 2008 45
    • Shameless self-promotion •  php|architect's Guide to Enterprise PHP Development •  PDF: June 12, Print: June 26 •  ISBN: 978-0-9738621-8-8 •  Order via http://phparch.com •  http://www.enterprisephp.nl 46
    • Questions? http://www.jansch.nl http://www.enterprisephp.nl http://www.ibuildings.com ivo@ibuildings.com Ibuildings - http://www.ibuildings.com