Enterprise PHP Development (Dutch PHP Conference 2008)

3,119 views

Published on

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

Published in: Business
1 Comment
2 Likes
Statistics
Notes
  • when you provide link to download above PPT?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,119
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Enterprise PHP Development (Dutch PHP Conference 2008)

  1. 1. Enterprise PHP development Ivo Jansch <ivo@ibuildings.com> Dutch PHP Conference, June 14, 2008 Ibuildings - http://www.ibuildings.com
  2. 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” Tuesday, February 26, 2008 2
  3. 3. 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
  4. 4. Is PHP Enterprise ready?   Big   Small   Enterprise friendly   Lightweight   enterpriCe   Cheap   CS required   Easy to learn Tuesday, February 26, 2008 4
  5. 5. A word from my girlfriend It's not the SIZE of the tool... It's how you USE it. Tuesday, February 26, 2008 5
  6. 6. PHP is changing... •  1998   Personal stuff •  2003   Simple websites   Content management   Blogs •  2008   Big websites   Banks   Insurance Companies   ... Tuesday, February 26, 2008 6
  7. 7. PHP is changing... •  Traditional metaphor   PHP is like Lego bricks   Bricks allowing you to build anything Tuesday, February 26, 2008 7
  8. 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 Tuesday, February 26, 2008 8
  9. 9. About Bricks •  Extreme simplicity •  Easy to learn •  Versatile •  Cheap ... so building a skyscraper must be peanuts, right? Tuesday, February 26, 2008 9
  10. 10. Enterprise development in 10 steps Ibuildings - http://www.ibuildings.com
  11. 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.” Tuesday, February 26, 2008 11
  12. 12. Step 1 – The Team •  Be a software engineer •  Train your skills •  Study OO principles •  Consider Zend Certification Tuesday, February 26, 2008 12
  13. 13. Step 2 - Requirements •  What does the customer need? •  What do visitors want? Tuesday, February 26, 2008 13
  14. 14. Step 2 - Requirements •  Functional Design   Requirements definition   Interaction Design / Wireframes   Flow diagrams Tuesday, February 26, 2008 14
  15. 15. Step 3 - Architecture •  Don’t just start stacking bricks •  Create an architecture first Tuesday, February 26, 2008 15
  16. 16. 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
  17. 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)‫‏‬ Tuesday, February 26, 2008 17
  18. 18. Step 4 - Tools •  You don’t need tools... •  But they make you productive Tuesday, February 26, 2008 18
  19. 19. 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
  20. 20. Step 4 - Tools •  Source Control   CVS / SVN   Bitkeeper / GIT   Branching   Tagging Tuesday, February 26, 2008 20
  21. 21. Step 5 - Foundation •  Start stacking bricks?   How many bricks does it take..   What about stability? •  Start with a foundation Tuesday, February 26, 2008 21
  22. 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 Tuesday, February 26, 2008 22
  23. 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.” Tuesday, February 26, 2008 23
  24. 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. Tuesday, February 26, 2008 24
  25. 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 Tuesday, February 26, 2008 25
  26. 26. Step 7 - Testing •  Is your software tested after it has gone live? Tuesday, February 26, 2008 26
  27. 27. Step 7 - Testing •  Various types of testing   Developer testing   Functional testing   Environment testing   Performance testing   Usability testing Tuesday, February 26, 2008 27
  28. 28. Step 7 - Testing •  Common scenario Tuesday, February 26, 2008 28
  29. 29. Step 7 - Testing •  User complains... MWOEHA! BUG! Tuesday, February 26, 2008 29
  30. 30. Step 7 - Testing •  Developer attacks the problem fix_bug(); Tuesday, February 26, 2008 30
  31. 31. Step 7 - Testing •  Problem solved! Tuesday, February 26, 2008 31
  32. 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/ Tuesday, February 26, 2008 32
  33. 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 Tuesday, February 26, 2008 33
  34. 34. 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
  35. 35. Step 8 - Optimization •  Solution: Elevator Tuesday, February 26, 2008 35
  36. 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 Tuesday, February 26, 2008 36
  37. 37. 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
  38. 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 Tuesday, February 26, 2008 http://danga.com/memcached/ 38
  39. 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' Tuesday, February 26, 2008 39
  40. 40. Step 9 - Deployment •  System Architecture PHP MySQL Apache Linux From a simple LAMP stack on a single machine... Tuesday, February 26, 2008 40
  41. 41. Step 9 - Deployment •  System Architecture ... to a High Availability, Horizontally Scalable architecture Tuesday, February 26, 2008 41
  42. 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?) Tuesday, February 26, 2008 42
  43. 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.” Tuesday, February 26, 2008 43
  44. 44. Step 10 - Operations •  Solution   A 'root cause analysis' tool Tuesday, February 26, 2008 44
  45. 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. Tuesday, February 26, 2008 45
  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 46
  47. 47. Questions? http://www.jansch.nl http://www.enterprisephp.nl http://www.ibuildings.com ivo@ibuildings.com Ibuildings - http://www.ibuildings.com

×