A 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.
5. How many of us here are:
• Management / Decision makers
• Project Managers
• Developers – PHP
• Developers – Other (.NET/RoR/Python/Java/…)
• Student / Hobbyist
10. 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.
11.
12. “PHP is for hobbyists”
• Low learning curve
• Proper software engineering => proper quality
“PHP is insecure”
• PHP is a language; it’s the programmer that implements
security
“PHP is not a real language”
• It’s a dynamic scripting language; but a powerful one
13. “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
15. Customizability
• Adherence to business-specific rules
• Adaption of changing business environment
• Change of direction
Scalability
• Need to scale as business grows
• Change in infrastructure
16. Security
• Security is priority #1
Integration
• Needs to work seamlessly with existing solutions
• Should be open for collaboration
Performance
• Response time
• Load time
20. 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
26. 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
28. 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)
29. Create a test to expose each bug
Keep the test, and run it often
Tool:
• xdebug (http://www.xdebug.org)
• Tracing
• Remote Debugging
30. Always automate deployment
Use 3 Systems
• Development
• Integration/Staging
• Live
Consider virtual machines / cloud hosting
31. 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)
32. 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
33. The Negatives
• PHP does not always have all of the functionality needed
• Java development/implementation is more difficult than many
situations 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-based
deployment
36. 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