A presentation at ZendCon 2018 in in Las Vegas, NV, USA by Adam Culp
PHP-1701-A By: Adam Culp Twitter: @adamculp
PHP-1701-A About me ● – OSS Contributor – PHP Certified – Zend Certification Advisory Board – PHP-Fig voting member (IBM i Toolkit) – Consultant at Zend Technologies – Organizer SoFloPHP (South Florida) – Organizer SunshinePHP (Miami) – Long distance (ultra) runner – Photography Enthusiast – 2 Judo Black Belt Instructor
PHP-1701-A About me ● – OSS Contributor – PHP Certified – Zend Certification Advisory Board – PHP-Fig voting member (IBM i Toolkit) – Consultant at Zend Technologies – Organizer SoFloPHP (South Florida) – Organizer SunshinePHP (Miami) – Long distance (ultra) runner – – 3 I am the Photography Enthusiast PHP Ninja!!! Judo Black Belt Instructor
PHP-1701-A ● Fan of iteration – 4 Pretty much everything requires iteration to do well: ● Long distance running ● Judo ● Development ● Evading project managers ● Enterprise Software!
PHP-1701-A ● What is Enterprise Software? – 5 No, not the starship!
PHP-1701-A ● What is Enterprise Software? – 6 PHP vs Java vs Python vs Go?
PHP-1701-A ● What is Enterprise Software? – 7 Active Record versus Data Mapper?
PHP-1701-A ● What is Enterprise Software? – 8 Symfony vs Zend vs Laravel?
PHP-1701-A ● What is Enterprise Software? – 9 “…is computer software used to satisfy the needs of an organization rather than individual users.” - wikipedia
PHP-1701-A ● What is Enterprise Software? – 10 “…describes a collection of computer programs with common business applications, tools for modeling how the entire organization works, and development tools for building applications unique to the organization…” - also wikipedia
PHP-1701-A ● What is Enterprise Software? – 11 “Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data.” - Martin Fowler
PHP-1701-A ● 12 Really? – Organization vs User – Large Companies – Corporate Patterns – Data or Complex Data
PHP-1701-A ● 13 In Other Words: – No small companies – No individual users – No simple/small data
PHP-1701-A ● 14 Really? – Organizations versus users – Large companies – Patterns – Data or Complex Data
PHP-1701-A ● What is Enterprise Software? – 15 License
PHP-1701-A ● 16 License – OSS vs Proprietary (many for each) – No license == no sharing – License == Responsibility
PHP-1701-A ● 17 What is Enterprise Software? – License – Interoperability
PHP-1701-A ● Interoperability – 18 Composer ● 433+ million package downloads…in July 2018 ● 10.25 billion total since 2012 ● More than just left-pad – Play nice with others – Easily add functionality – Caring users/community – PHP-FIG ● (politics aside) ● Passions == arguing
PHP-1701-A ● 19 What is Enterprise Software? – License – Interoperability – Lock-in
PHP-1701-A ● 20 Lock-in – Less lock-in is preferred – What if I want Ginger Ale instead of Koolaid? – Can seem innocent ● “We’re trying to help our users.” ● “Oops, sorry, must continue using this to use that.”
PHP-1701-A ● 21 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors
PHP-1701-A ● 22 Contributors – More eyeballs – More brains – More ideas – More updated – More faster – Role of Git
PHP-1701-A ● 23 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor
PHP-1701-A ● Bus Factor – 24 Will it die without {{so-and-so}}? ● Visionary ● Energy ● Glue
PHP-1701-A ● 25 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation
PHP-1701-A ● 26 Documentation – App is not complete without it – Entry level to advanced – Searchable – Complete – Books, Blogs, Podcasts – Videos
PHP-1701-A ● 27 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support
PHP-1701-A ● Support – Throat to choke ● 28 Who’s to blame – Community – Corporate – More than one
PHP-1701-A ● 29 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security
PHP-1701-A ● 30 Compliance/Security – SOC, OCI, SAS70, PCI, Sarbanes Oxley (SOX), Oh my! – Richardson Maturity Model (REST) – RFCs – CVE issues ● Friends of PHP: https://github.com/FriendsOfPHP/security-advisories ● https://cve.mitre.org/
PHP-1701-A ● 31 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security – Longevity
PHP-1701-A ● 32 Longevity – Experience level – Older == stability … usually ;-) – Waiting for version n.01 – Version 8 being defined
PHP-1701-A ● 33 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security – Longevity – Upgradeable
PHP-1701-A ● 34 Upgradeable – Wizards – Documentation – BC (backward compatible) – Composer
PHP-1701-A ● 35 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security – Longevity – Upgradeable – Roadmap
PHP-1701-A ● 36 Roadmap – Plans for next version – Vision or ideas – Stagnant – Openness
PHP-1701-A ● Other Considerations – 37 Performance
PHP-1701-A ● 38 Other Considerations – Performance – Code Quality
PHP-1701-A ● 39 Other Considerations – Performance – Code Quality – Coding Standards
PHP-1701-A ● 40 Other Considerations – Performance – Code Quality – Coding Standards – IDE Friendly
PHP-1701-A ● 41 Other Considerations – Performance – Code Quality – Coding Standards – IDE Friendly – Tested/Testable
PHP-1701-A ● Future – 42 Remote working
PHP-1701-A ● 43 Future – Remote working – Microservices
PHP-1701-A ● 44 Future – Remote working – Microservices – Containers
PHP-1701-A ● 45 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8)
PHP-1701-A ● 46 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8) – Middleware (SlimPHP, Expressive, etc.)
PHP-1701-A ● 47 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8) – Middleware (SlimPHP, Expressive, etc.) – Serverless
PHP-1701-A ● 48 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8) – Middleware (SlimPHP, Expressive, etc.) – Serverless – Function as a Service (FaaS)
PHP-1701-A ● 49 Summary… “Enterprise” is: – Stability – Dependability – Security – Business Continuity
● Thank you! – Code: https://github.com/adamculp/ Adam Culp http://www.geekyboy.com http://RunGeekRadio.com Twitter @adamculp Questions?
Regardless of claims by trendy developer websites, Enterprise PHP really is a thing: the final frontier. A reality for companies doing business at scale who turn to their developers for selecting frameworks, libraries, and tools that work at the scale they operate. These are the undocumented, and unspoken criteria driving what they trust.
Join us in this talk as Adam Culp walks through lessons learned over a five-year mission, consulting with companies who operate enterprise scale PHP applications. See what was boldly learned about squeezing more power out of PHP’s engines.