Enterprise PHP development Ivo Jansch <ivo@ibuildings.nl> PHP For Business Seminar, July 2nd 2007
About me <ul><li>CTO at Ibuildings.nl </li></ul><ul><ul><li>Development using PHP (websites, applications) </li></ul></ul>...
About PHP <ul><li>Traditional metaphor </li></ul><ul><ul><li>PHP is like Lego bricks </li></ul></ul><ul><ul><li>Bricks all...
About PHP <ul><li>PHP is no longer a toy </li></ul><ul><ul><li>Let’s use the metaphor of actual bricks  </li></ul></ul><ul...
About Bricks <ul><li>Extreme simplicity </li></ul><ul><li>Easy to learn </li></ul><ul><li>Versatile </li></ul><ul><li>Chea...
7 important steps
Step 1 - Recruitment <ul><li>“ Dear Mr. Businessman, </li></ul><ul><li>I have read about your plans to build a new skyscra...
Step 1 - Recruitment <ul><li>Hire software engineers </li></ul><ul><ul><li>Computer Science background </li></ul></ul><ul>...
Step 2 - Architecture <ul><li>Don’t just start stacking bricks </li></ul><ul><li>Create an architecture first </li></ul>
Step 2 - Architecture <ul><li>Functional Design </li></ul><ul><ul><li>Requirements definition </li></ul></ul><ul><li>Techn...
Step 3 - Tools <ul><li>You don’t need tools... </li></ul><ul><li>But they make you productive </li></ul>
Step 3 - Tools <ul><li>Tools for developers: </li></ul><ul><ul><li>Eclipse (PHP-IDE) </li></ul></ul><ul><ul><li>Vim </li><...
Step 4 - Foundation <ul><li>Start stacking bricks? </li></ul><ul><ul><li>How many bricks does it take.. </li></ul></ul><ul...
Step 4 - Foundation <ul><li>Use a framework </li></ul><ul><ul><li>Stable basis </li></ul></ul><ul><ul><li>Provides guideli...
Step 5 – Design Patterns <ul><li>Requirement 1056.4: </li></ul><ul><li>W e need to be able to look outside, but we  </li><...
Step 5 – Design Patterns <ul><li>A ‘window’ is a concept </li></ul><ul><ul><li>Best practice way of solving a particular p...
Step 6 - Testing <ul><li>Is your software only tested once it’s built? </li></ul>
Step 6 - Testing <ul><li>Consider Test Driven Development </li></ul>
Step 6 - Testing <ul><li>Testing for PHP applications: </li></ul><ul><ul><li>PHPUnit http://www.phpunit.de/   </li></ul></...
Step 7 - Optimization <ul><li>Users are reporting: </li></ul><ul><li>&quot;I work on the 197th floor. Every day I  </li></...
Step 7 - Optimization <ul><li>Solution: Elevator </li></ul>
Step 7 - Optimization <ul><li>In PHP, this ‘elevator’ is called an ‘accelerator’ </li></ul><ul><ul><li>This is how PHP wor...
Step 7 - Optimization <ul><li>Users complain: </li></ul><ul><li>“ Every time I need coffee I have to go  </li></ul><ul><li...
Step 7 - Optimization <ul><li>Solution: Create small coffee corners on every floor so people don’t have to go to the main ...
The Big Picture <ul><li>No ‘cowboy coding’, but structured steps </li></ul><ul><ul><li>Higher quality  </li></ul></ul><ul>...
More things to think about? <ul><li>Debugging </li></ul><ul><li>Security </li></ul><ul><li>Deployment </li></ul><ul><li>Ma...
Questions? http://www.ibuildings.nl http://www.achievo.org/blog [email_address]
Upcoming SlideShare
Loading in …5
×

Enterprise PHP (Zend UK Business Conference)

3,066 views

Published on

Presentation about professional PHP development I did at the Zend UK Business Conference in London, on july 2nd, 2007 (http://www.zend.com/ukconference/)

Published in: Business, Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,066
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Enterprise PHP (Zend UK Business Conference)

  1. 1. Enterprise PHP development Ivo Jansch <ivo@ibuildings.nl> PHP For Business Seminar, July 2nd 2007
  2. 2. About me <ul><li>CTO at Ibuildings.nl </li></ul><ul><ul><li>Development using PHP (websites, applications) </li></ul></ul><ul><ul><li>Big projects (high traffic, multi-tier, clusters, high availability, large teams) </li></ul></ul><ul><ul><li>Consultancy (how to do big projects) </li></ul></ul><ul><li>Geek! </li></ul><ul><ul><li>Author of several Open Source projects </li></ul></ul><ul><ul><li>Yair: “careful, these are business people, NO GEEKS!” </li></ul></ul>
  3. 3. About PHP <ul><li>Traditional metaphor </li></ul><ul><ul><li>PHP is like Lego bricks </li></ul></ul><ul><ul><li>Bricks allowing you to build anything </li></ul></ul>
  4. 4. About PHP <ul><li>PHP is no longer a toy </li></ul><ul><ul><li>Let’s use the metaphor of actual bricks </li></ul></ul><ul><ul><li>Because we’re building actual buildings now </li></ul></ul>
  5. 5. About Bricks <ul><li>Extreme simplicity </li></ul><ul><li>Easy to learn </li></ul><ul><li>Versatile </li></ul><ul><li>Cheap </li></ul><ul><li>... so building a skyscraper must be peanuts, right? </li></ul>
  6. 6. 7 important steps
  7. 7. Step 1 - Recruitment <ul><li>“ Dear Mr. Businessman, </li></ul><ul><li>I have read about your plans to build a new skyscraper and I am applying for a job. </li></ul><ul><li>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.” </li></ul>
  8. 8. Step 1 - Recruitment <ul><li>Hire software engineers </li></ul><ul><ul><li>Computer Science background </li></ul></ul><ul><ul><li>It’s OK if they didn’t use Bricks </li></ul></ul><ul><ul><li>Train your people </li></ul></ul><ul><ul><li>Consider Zend Certification </li></ul></ul>
  9. 9. Step 2 - Architecture <ul><li>Don’t just start stacking bricks </li></ul><ul><li>Create an architecture first </li></ul>
  10. 10. Step 2 - Architecture <ul><li>Functional Design </li></ul><ul><ul><li>Requirements definition </li></ul></ul><ul><li>Technical Design </li></ul><ul><ul><li>Modelling </li></ul></ul><ul><ul><ul><li>Class diagrams </li></ul></ul></ul><ul><ul><ul><li>ER diagram (data model) </li></ul></ul></ul><ul><ul><ul><li>Colaboration diagrams </li></ul></ul></ul><ul><ul><ul><li>Use cases </li></ul></ul></ul><ul><ul><ul><li>etc. </li></ul></ul></ul><ul><ul><li>Tools: UML, whiteboards </li></ul></ul>
  11. 11. Step 3 - Tools <ul><li>You don’t need tools... </li></ul><ul><li>But they make you productive </li></ul>
  12. 12. Step 3 - Tools <ul><li>Tools for developers: </li></ul><ul><ul><li>Eclipse (PHP-IDE) </li></ul></ul><ul><ul><li>Vim </li></ul></ul><ul><ul><li>Zend Studio </li></ul></ul><ul><li>Source control: </li></ul><ul><ul><li>SVN </li></ul></ul><ul><ul><li>CVS </li></ul></ul>
  13. 13. Step 4 - Foundation <ul><li>Start stacking bricks? </li></ul><ul><ul><li>How many bricks does it take.. </li></ul></ul><ul><ul><li>What about stability? </li></ul></ul><ul><li>Start with a foundation </li></ul>
  14. 14. Step 4 - Foundation <ul><li>Use a framework </li></ul><ul><ul><li>Stable basis </li></ul></ul><ul><ul><li>Provides guidelines (frame) </li></ul></ul><ul><ul><li>Off the shelf components </li></ul></ul><ul><li>Examples </li></ul><ul><ul><li>Zend Framework http://framework.zend.com </li></ul></ul><ul><ul><li>Symfony http://www.symfony-project.org </li></ul></ul><ul><ul><li>ATK http://www.achievo.org/atk </li></ul></ul>
  15. 15. Step 5 – Design Patterns <ul><li>Requirement 1056.4: </li></ul><ul><li>W e need to be able to look outside, but we </li></ul><ul><li>can't make holes in the wall ( rain should be </li></ul><ul><li>kept outside ) . When it's sunny, a hole is ok. </li></ul>
  16. 16. Step 5 – Design Patterns <ul><li>A ‘window’ is a concept </li></ul><ul><ul><li>Best practice way of solving a particular problem </li></ul></ul><ul><ul><li>Standard solution </li></ul></ul><ul><ul><li>Ready-made products available </li></ul></ul><ul><li>In PHP, we call this a ‘design pattern’ </li></ul><ul><ul><li>Ask your geeks about Iterators and Singletons </li></ul></ul>
  17. 17. Step 6 - Testing <ul><li>Is your software only tested once it’s built? </li></ul>
  18. 18. Step 6 - Testing <ul><li>Consider Test Driven Development </li></ul>
  19. 19. Step 6 - Testing <ul><li>Testing for PHP applications: </li></ul><ul><ul><li>PHPUnit http://www.phpunit.de/ </li></ul></ul><ul><ul><li>SimpleTest http://www.lastcraft.com/simple_test.php </li></ul></ul><ul><li>Continuous Integration: </li></ul><ul><ul><li>Xinc http://xinc.entrypoint.biz/ </li></ul></ul>
  20. 20. Step 7 - Optimization <ul><li>Users are reporting: </li></ul><ul><li>&quot;I work on the 197th floor. Every day I </li></ul><ul><li>have to walk the stairs for 2 hours, then I </li></ul><ul><li>have only 4 hours left to do my job.&quot; </li></ul>
  21. 21. Step 7 - Optimization <ul><li>Solution: Elevator </li></ul>
  22. 22. Step 7 - Optimization <ul><li>In PHP, this ‘elevator’ is called an ‘accelerator’ </li></ul><ul><ul><li>This is how PHP works (very non-geek version): </li></ul></ul><ul><ul><ul><li>getToWork(); // php engine does this </li></ul></ul></ul><ul><ul><ul><li>getTheJobDone(); // this is your code </li></ul></ul></ul><ul><ul><li>An accelerator improves the ‘getToWork’ part </li></ul></ul><ul><ul><li>Accelerators for PHP: </li></ul></ul><ul><ul><ul><li>eAccelerator http://eaccelerator.net/ </li></ul></ul></ul><ul><ul><ul><li>APC http://pecl.php.net/package/APC </li></ul></ul></ul><ul><ul><ul><li>Zend Platform http://www.zend.com/products/zend_platform </li></ul></ul></ul>
  23. 23. Step 7 - Optimization <ul><li>Users complain: </li></ul><ul><li>“ Every time I need coffee I have to go </li></ul><ul><li>to the top floor to get some.” </li></ul>
  24. 24. Step 7 - Optimization <ul><li>Solution: Create small coffee corners on every floor so people don’t have to go to the main restaurant every time. </li></ul><ul><li>In PHP we call this caching </li></ul><ul><ul><li>Don’t query the database everytime you need data </li></ul></ul><ul><ul><li>Use locally stored copy (file or memory) </li></ul></ul><ul><li>PHP Caching solutions: </li></ul><ul><ul><li>Smarty http://smarty.php.net </li></ul></ul><ul><ul><li>Zend Platform http://www.zend.com/products/zend_platform </li></ul></ul><ul><ul><li>Memcached http://danga.com/memcached/ </li></ul></ul>
  25. 25. The Big Picture <ul><li>No ‘cowboy coding’, but structured steps </li></ul><ul><ul><li>Higher quality </li></ul></ul><ul><ul><li>Software will be easier to maintain (and cheaper) </li></ul></ul><ul><li>Development methodology </li></ul><ul><ul><li>Waterfall </li></ul></ul><ul><ul><li>Agile (DSDM, XP, Scrum) </li></ul></ul><ul><li>Software Development Life Cycle (SDLC) </li></ul><ul><ul><li>Adapt from existing methods, learn from experts </li></ul></ul><ul><ul><li>Document it properly </li></ul></ul><ul><ul><li>Make it the cornerstone of your development efforts </li></ul></ul><ul><ul><li>“ The Zend Way” </li></ul></ul>
  26. 26. More things to think about? <ul><li>Debugging </li></ul><ul><li>Security </li></ul><ul><li>Deployment </li></ul><ul><li>Maintenance </li></ul><ul><li>Change management </li></ul><ul><li>Monitoring </li></ul><ul><li>Need help? </li></ul><ul><ul><li>http://www.ibuildings.nl [email_address] </li></ul></ul><ul><ul><li>http://www.zend.com </li></ul></ul>
  27. 27. Questions? http://www.ibuildings.nl http://www.achievo.org/blog [email_address]

×