Your SlideShare is downloading. ×
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Enterprise PHP Development - Ivo Jansch

1,003

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,003
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
33
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×