Scaling PHP Applications with Zend Platform


Published on

An overview of Zend Platform - Zend\'s enterprise grade runtime environment for PHP, and how it helps users scale their PHP applications. The presentation overviews the main features of Zend Platform: PHP Intelligence, Performance, Session Clustering and Job Queues.

Published in: Technology, Business
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Scaling PHP Applications with Zend Platform

    2. 2. <ul><li>Programming in PHP since the days of 4.2.1 </li></ul><ul><li>Working for Zend for the last 3½ years </li></ul><ul><ul><li>Professional Services, Product Management </li></ul></ul><ul><li>If you have a hard time with my name: </li></ul><ul><ul><li>German: Shachar </li></ul></ul><ul><ul><li>Spanish: Shajar </li></ul></ul><ul><ul><li>Russian: Шахар </li></ul></ul><ul><ul><li>Arabic: ﺷﺨﺮ </li></ul></ul><ul><ul><li>Hebrew: שָחַר </li></ul></ul>Who am I?
    3. 3. Who are You? <ul><li>? </li></ul>
    4. 4. <ul><li>Some Introductions: </li></ul><ul><ul><li>“ Scaling” ? </li></ul></ul><ul><ul><li>Introducing the Zend production stack </li></ul></ul><ul><li>Scaling PHP Applications with Zend Platform: </li></ul><ul><ul><li>White-box PHP application monitoring: PHP Intelligence </li></ul></ul><ul><ul><li>Comprehensive performance features </li></ul></ul><ul><ul><li>Parallel execution in PHP: Job Queues </li></ul></ul><ul><ul><li>Enabling session scalability: Session Clustering </li></ul></ul>What are we talking about?
    5. 5. What is “Scalability” ? <ul><li>“ In telecommunications and software engineering, scalability is a desirable property of a system, a network, or </li></ul><ul><li>a process, which indicates its ability </li></ul><ul><li>to either handle growing amounts of work in a graceful manner, or to be readily enlarged” </li></ul><ul><ul><ul><ul><ul><ul><ul><li>André B. Bondi, 'Characteristics of scalability and their impact on performance' </li></ul></ul></ul></ul></ul></ul></ul>
    6. 6. Scalability means being able to handle the growing traffic...
    7. 7. ...but also the growing infrastructure and codebase
    8. 8. Introducing Zend's Production Stack <ul><li>Zend has some development products: </li></ul><ul><ul><li>Zend Studio, Zend Guard, </li></ul></ul><ul><ul><li>Zend Framework, PDT </li></ul></ul><ul><li>And also some run-time products: </li></ul><ul><ul><li>Zend Core </li></ul></ul><ul><ul><li>Zend Platform </li></ul></ul><ul><ul><li>Zend Engine :-) </li></ul></ul><ul><ul><li>...Together, these make the Zend Production Stack </li></ul></ul>
    9. 9. Introducing Zend's Production Stack <ul><li>Zend Core is Zend's certified and supported distribution of PHP </li></ul><ul><li>Zend Platform is Zend's enterprise-grade runtime environment for PHP applications </li></ul><ul><li>We think of it as a Web Application Server : </li></ul><ul><ul><li>Application-level monitoring </li></ul></ul><ul><ul><li>Performance and scalability features </li></ul></ul><ul><ul><li>Cluster-wide configuration management </li></ul></ul><ul><ul><li>Integrated in a single product, certified, supported </li></ul></ul>
    10. 10. Introducing Zend Platform
    11. 11. PHP Intelligence
    12. 12. Application-level Monitoring <ul><li>Most monitoring systems concentrate on network, hardware and OS issues </li></ul><ul><li>Zend Platform's PHP Intelligence monitors the execution of PHP scripts in your application </li></ul><ul><li>A lightweight PHP extension will “listen” for problems like slow executions, errors, and inconsistent memory usage </li></ul><ul><li>Alerts are displayed in a central GUI and can trigger predefined actions </li></ul>
    13. 13. Application-level monitoring
    14. 14. Root-cause analysis <ul><li>When an event is captured, it's context information is also saved </li></ul><ul><ul><li>GET, POST, Cookie, function data, backtrace, etc. </li></ul></ul><ul><li>This information allows the developer to quickly pinpoint the problem </li></ul><ul><li>Integration with Zend Studio allows for instant debugging or profiling </li></ul><ul><li>You can instantly reproduce the HTTP request that triggered the problem </li></ul>
    15. 15. Root-cause analysis
    16. 16. PHP Intelligence – Key benefits <ul><li>Get alerted on PHP issues as they happen throughout your production cluster </li></ul><ul><li>Get alerted on problems which are not captured by error logs (slow executions, excess memory consumption, etc.) </li></ul><ul><li>Dramatically reduce problem resolution time using instant debugging and root-cause analysis </li></ul><ul><li>Allows you to stay on top of the ever-growing codebase complexity </li></ul>
    17. 17. Performance Management
    18. 18. Comprehensive Performance <ul><li>The performance of a web application can be affected by many different factors, for example: </li></ul><ul><ul><li>Network load </li></ul></ul><ul><ul><li>PHP processing time </li></ul></ul><ul><ul><li>Web server load </li></ul></ul><ul><ul><li>Database server load </li></ul></ul><ul><ul><li>Application logic – task execution time </li></ul></ul><ul><li>Improving the performance of a web application requires a combination of different measures </li></ul>
    19. 19. Comprehensive Performance
    20. 20. Comprehensive Performance Code Acceleration and Optimization
    21. 21. Comprehensive Performance Data Caching API
    22. 22. Using the data caching API
    23. 23. Comprehensive Performance Job Queues
    24. 24. Comprehensive Performance Full-Page Caching
    25. 25. Setting up page caching rules
    26. 26. Comprehensive Performance Output Compression
    27. 27. Comprehensive Performance Client-side Cache Utilization
    28. 28. Comprehensive Performance Zend Download Server
    29. 29. Session Clustering
    30. 30. Session Clustering – The Problem <ul><li>One of the key issues when scaling out, is sharing session data between cluster nodes </li></ul><ul><li>Most load balancers will not provide 100% session affinity </li></ul><ul><li>Shared storage tends to become a major bottleneck </li></ul><ul><ul><li>NFS: BAD performance, single point of failure </li></ul></ul><ul><ul><li>Database: better, but still a bottleneck </li></ul></ul><ul><li>Distributes storage is better, but: </li></ul><ul><ul><li>Still doesn't provide fail-over persistence </li></ul></ul><ul><ul><li>Scaling and managing the storage tends to become difficult </li></ul></ul>
    31. 31. Session Clustering - Example
    32. 32. Session Clustering - Example
    33. 33. Session Clustering - Example
    34. 34. Session Clustering - Example
    35. 35. Session Clustering - Example
    36. 36. Session Clustering – Key Benefits <ul><li>Linear scalability: add more web servers and you are done </li></ul><ul><li>Different levels of fail-over persistence: </li></ul><ul><ul><li>Non-persistent memory storage </li></ul></ul><ul><ul><li>Disk-based storage with delayed write or write-through </li></ul></ul><ul><ul><li>High availability mode: Session replication on backup nodes </li></ul></ul><ul><li>Easy to set up and manage </li></ul><ul><li>Good performance compared to alternative solutions </li></ul><ul><li>Transparent to end-users and developers </li></ul>
    37. 37. Job Queues
    38. 38. Job Queue – The Problem <ul><li>PHP's isolated, shared-nothing architecture does not allow for easy parallel execution </li></ul><ul><ul><li>One “job” must finish before the next one is executed </li></ul></ul><ul><ul><li>There is no asynchronous execution </li></ul></ul><ul><ul><li>Background processing of any kind requires a lot of “hacking” </li></ul></ul>
    39. 39. Job Queues - PHP In a Parallel Universe
    40. 40. Job Queues – Key Features <ul><li>Jobs are PHP scripts executed in the background </li></ul><ul><li>Jobs can be scheduled and managed through either: </li></ul><ul><ul><li>An API from within your PHP application </li></ul></ul><ul><ul><li>From a centralized web GUI </li></ul></ul><ul><li>Allows for elaborate scheduling rules </li></ul><ul><li>Provides job failure handling </li></ul><ul><li>Provides monitoring and execution statistics </li></ul><ul><li>Common Uses: order processing, transaction processing, mail submission, report generation, etc. </li></ul>
    41. 41. Scheduling Jobs – From API or GUI
    42. 42. Job Queues - Example
    43. 43. Job Queues - Example
    44. 44. Job Queues - Example
    45. 45. Job Queues - Example
    46. 46. Job Queues - Example
    47. 47. Benchmark: Offloading e-mail submission Req / Sec # of subscribers Before Job Queue Offloading After Job Queue Offloading A quick benchmark of the changes above shows a dramatic improvement in the application's responsiveness, especially when the amount of subscribers grow.
    48. 48. What Else?
    49. 49. What Else? <ul><li>Unified management console </li></ul><ul><li>Clustered configuration management </li></ul><ul><li>Integration between features and with other products </li></ul><ul><li>Installation, configuration and support services </li></ul>
    50. 50. Questions?
    51. 51. Thank You! <ul><li>Have additional questions? </li></ul><ul><ul><li>Look for me at the Zend booth ;) </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>This presentation will be available later today at </li></ul>