Post on 18-May-2015
Embed Size (px)
DESCRIPTIONA presentation on PHP's position in the enterprise, its past & present, how to get ready for developing for enterprise. Inspired by Ivo Jansch's "PHP in the real wolrd" presentation.Presented at SoftExpo 2010, Dhaka, Bangladesh.
- 1. to be precise: PHP in real world
2. Introduction A look at PHP What is Enterprise Development Lifecycle Enterprise Techniques Take-Aways Open Discussion 3. Who is here? 4. How many of us here are: Management / Decision makers Project Managers Developers PHP Developers Other (.NET/RoR/Python/Java/) Student / Hobbyist 5. Past and Present 6. Made for the web Low learning curve Short time-to-market Huge active community Platform independent (Linux, windows, ) Open source Versatile Backed by Zend, Microsoft, IBM, etc. 7. PHP is for hobbyists Low learning curve Proper software engineering => proper quality PHP is insecure PHP is a language; its the programmer that implements security PHP is not a real language Its a dynamic scripting language; but a powerful one 8. PHP does not scale Most often PHP is not the bottleneck, DB is Language does not scale, architecture does PHP is not ready for Enterprise Already running in mission-critical enterprises More on this later 9. When to consider something enterprise, and why 10. Customizability Adherence to business-specific rules Adaption of changing business environment Change of direction Scalability Need to scale as business grows Change in infrastructure 11. Security Security is priority #1 Integration Needs to work seamlessly with existing solutions Should be open for collaboration Performance Response time Load time 12. How we do it in real life 13. Analysis Design Coding Testing Deployment and Maintenance 14. Scrum Extreme Programming (XP) Kanban OpenAgile 15. Working software is delivered frequently Working software is the principal measure of progress Even late changes in requirements are welcomed Regular adaptation to changing circumstances Customer is a part of the team 16. How to get ready for the enterprise 17. Simple code Caching DRY Debugging Code quality Deployment Security Performance Testing Refactoring 18. This is easier said than done Do the simplest thing that could possibly work. Do not run for complexity, complexity kills! 19. Stick to standards Open source = open knowledge Reuse Experience Use Components Use Frameworks 20. Static Code Analysis Lint (php -l) PHP_CodeSniffer Software Metrics PHPUnit PHP_Depend Output validation Tidy HTML/CSS validation 21. Security is not an afterthought, it should be built within the system Trust no one Handle common issues: XSS, SQL/Code injection, Session fixation, Session hijacking, CSRF 22. Unit Tests Integration Tests Acceptance Tests Testing Tools: PHPUnit (http://www.phpunit.de) Selenium (http://seleniumhq.org) 23. Use a compiler cache (Zend, APC, etc) Cache generated content: Whole pages or fragments (disk, squid, memcache) Database query results (query cache, memcache) External data (memcache, disk) 24. Create a test to expose each bug Keep the test, and run it often Tool: xdebug (http://www.xdebug.org) Tracing Remote Debugging 25. Always automate deployment Use 3 Systems Development Integration/Staging Live Consider virtual machines / cloud hosting 26. Do not guess where to start Profile your code how often are functions called how long does execution take Look for all possible execution path Tool: xdebug (http://www.xdebug.org) 27. Improve the design of software without changing its behavior Not adding new features Cleaning up code Keep refactoring your code constantly Use unit tests to ensure you don't break anything 28. The Negatives PHP does not always have all of the functionality needed Java development/implementation is more difficult than manysituations require The Positives PHP will do most of what you need to do, easier. Java can fill almost any feature void in PHP for a web-baseddeployment 29. Source: Kevin Schroeder (Zend) 30. PHP is a serious language PHP is used in big, real world projects Good life cycle for project matters PHP can be used in conjunction with other technologies When developing software for enterprise: Keep things simple Accept change Test early and often Automate tests and deployment 31. Questions ??