Ibuildings - http://www.ibuildings.com
Enterprise PHP development
Ivo Jansch <ivo@ibuildings.com>
Dutch PHP Conference, Ju...
Tuesday, February 26, 2008 2
What's an enterprise?
•  Wikipedia:
  “Any of several ships by that name in the Star Trek
fi...
Tuesday, February 26, 2008 3
Is PHP Enterprise ready?
•  CIO Magazine:
“PHPworkswellforprototypingbecauseitiseasytogetasit...
Tuesday, February 26, 2008 4
Is PHP Enterprise ready?
 Small
 Lightweight
 Cheap
 Easy to learn
 Big
 Enterprise fri...
Tuesday, February 26, 2008 5
A word from my girlfriend
It's not the
SIZE
of the tool...
It's how you USE it.
Tuesday, February 26, 2008 6
PHP is changing...
•  1998
  Personal stuff
•  2003
  Simple websites
  Content management...
Tuesday, February 26, 2008 7
PHP is changing...
•  Traditional metaphor
  PHP is like Lego bricks
  Bricks allowing you ...
Tuesday, February 26, 2008 8
PHP is changing...
•  PHP is no longer a toy
  Let’s use the metaphor of actual bricks
  Be...
Tuesday, February 26, 2008 9
About Bricks
•  Extreme simplicity
•  Easy to learn
•  Versatile
•  Cheap
... so building a s...
Ibuildings - http://www.ibuildings.com
Enterprise development in 10 steps
Tuesday, February 26, 2008 11
Step 1 – The Team
“Dear Mr. Businessman,
I have read about your plans to build a new
skyscra...
Tuesday, February 26, 2008 12
Step 1 – The Team
•  Be a software engineer
•  Train your skills
•  Study OO principles
•  C...
Tuesday, February 26, 2008 13
Step 2 - Requirements
•  What does the customer need?
•  What do visitors want?
Tuesday, February 26, 2008 14
Step 2 - Requirements
•  Functional Design
  Requirements definition
  Interaction Design ...
Tuesday, February 26, 2008 15
Step 3 - Architecture
•  Don’t just start stacking bricks
•  Create an architecture first
Tuesday, February 26, 2008 16
Step 3 - Architecture
•  Technical Design
  Modelling
•  Class diagrams
•  ER diagram (data...
Tuesday, February 26, 2008 17
Step 3 - Architecture
•  High Level Architectures:
  MVC (Model View Controller)
  SOA (Se...
Tuesday, February 26, 2008 18
Step 4 - Tools
•  You don’t need tools...
•  But they make you productive
Tuesday, February 26, 2008 19
Step 4 - Tools
•  Development:
  Eclipse (PDT)‫‏‬
  PhpED
  Vim
  Zend Studio
  Komodo
...
Tuesday, February 26, 2008 20
Step 4 - Tools
•  Source Control
  CVS / SVN
  Bitkeeper / GIT
  Branching
  Tagging
Tuesday, February 26, 2008 21
Step 5 - Foundation
•  Start stacking bricks?
  How many bricks does it take..
  What abou...
Tuesday, February 26, 2008 22
Step 5 - Foundation
•  Use a framework
  Provides guidelines (frame)‫‏‬
  Off the shelf co...
Tuesday, February 26, 2008 23
Step 5 - Foundation
•  The “Not Invented Here” Syndrome
  “The existing frameworks are no g...
Tuesday, February 26, 2008 24
Step 6 – Design Patterns
Requirement 1056.4:
We need to be able to look outside, but we
can'...
Tuesday, February 26, 2008 25
Step 6 – Design Patterns
•  A ‘window’ is a concept
  Best practice way of solving a partic...
Tuesday, February 26, 2008 26
Step 7 - Testing
•  Is your software tested after it has gone live?
Tuesday, February 26, 2008 27
Step 7 - Testing
•  Various types of testing
  Developer testing
  Functional testing
  E...
Tuesday, February 26, 2008 28
Step 7 - Testing
•  Common scenario
Tuesday, February 26, 2008 29
Step 7 - Testing
•  User complains...
MWOEHA!
BUG!
Tuesday, February 26, 2008 30
Step 7 - Testing
•  Developer attacks the problem
fix_bug();
Tuesday, February 26, 2008 31
Step 7 - Testing
•  Problem solved!
Tuesday, February 26, 2008 32
Step 7 - Testing
•  Solution: Unit Tests
  Automated testing after each change
  Prevents ...
Tuesday, February 26, 2008 33
Step 7 - Testing
•  Test Driven Development
1. Define functionality
2. Create testcase
3. Ru...
Tuesday, February 26, 2008 34
Step 8 - Optimization
Users are reporting:
"I work on the 197th floor. Every day I
have to w...
Tuesday, February 26, 2008 35
Step 8 - Optimization
•  Solution: Elevator
Tuesday, February 26, 2008 36
Step 8 - Optimization
In PHP, this ‘elevator’ is called an ‘accelerator’
  This is how PHP ...
Tuesday, February 26, 2008 37
Step 8 - Optimization
Users complain:
“Every time I need coffee I have to go
to the top floo...
Tuesday, February 26, 2008 38
Step 8 - Optimization
•  Solution: Create small coffee corners on every floor so
people
d
o
...
Tuesday, February 26, 2008 39
Step 9 - Deployment
•  Lifecycle:
  Develop
  Test
  Deploy to acceptance test environmen...
Tuesday, February 26, 2008 40
Step 9 - Deployment
•  System Architecture
PHP
Apache
Linux
MySQL
From a simple LAMP stack o...
Tuesday, February 26, 2008 41
Step 9 - Deployment
•  System Architecture
... to a High Availability, Horizontally Scalable...
Tuesday, February 26, 2008 42
Step 10 - Operations
•  Monitoring
  Logfiles
  Monitor infrastructure (tools such as Nagi...
Tuesday, February 26, 2008 43
Step 10 - Operations
•  Debugging
  Ideal:
“I had error x when I selected y after I clicked...
Tuesday, February 26, 2008 44
Step 10 - Operations
•  Solution
  A 'root cause
analysis' tool
Tuesday, February 26, 2008 45
Step 10 - Operations
•  Change management
  Ticket system
  Stick to your deployment - use...
46
Shameless self-promotion
•  php|architect's
Guide to Enterprise PHP Development
•  PDF: June 12, Print: June 26
•  ISBN...
Ibuildings - http://www.ibuildings.com
Questions?
http://www.jansch.nl
http://www.enterprisephp.nl
http://www.ibuildings.c...
Upcoming SlideShare
Loading in …5
×

Enterprise PHP Development - Ivo Jansch

1,235 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • The presentation is truly out of experience... Really a good one!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
1,235
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
34
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Enterprise PHP Development - Ivo Jansch

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

×