Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Success of Blackfire and Continuos PHP performance monitoring at trivago

98 views

Published on

At trivago, we love measuring everything. Collecting metrics and making decisions based on them is natural to our engineers. We follow this workflow also with performance, which is key to succeed in the modern Internet. In this talk, we're going to describe how we integrated Blackfire profiling into the daily workflow of QA Engineers and Software Developers alike. How our own tooling around Blackfire has helped us to keep (and improve) performance over the last year. We will discuss the benefits of enforcing backend performance budgets. Also, we will explain our entire pipeline for PHP continuous monitoring.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Success of Blackfire and Continuos PHP performance monitoring at trivago

  1. 1. Jorge Luis Betancourt Success of Blackfire and Continuous PHP performance monitoring at @jorgelbgm1
  2. 2. @jorgelbgm Who am I Software Engineer / Performance Team Apache Nutch Committer & PMC Member of @TheASF Passionate about Search (Solr/ES), metrics and performance
  3. 3. 55 PLATTFORMS 1TB LOGS /DAY~200ms RESPONSE TIME
  4. 4. @jorgelbgmSource: Google Trends
  5. 5. @jorgelbgmSource: Google Trends
  6. 6. • PHP & Symfony application • Some services in other languages (Java) • HTML/CSS/JS 200 commits per day +100 active A/B tests
  7. 7. Performance Team Observability
  8. 8. @jorgelbgm Providing feedback to the developers as soon as possible about the impact of their changes on the performance of the application. Make trivago faster and spread the culture of performance. Mission
  9. 9. Our team provides support for …
  10. 10. • We’re not a performance company • But … performance is important for our business
  11. 11. @jorgelbgm Blackfire • Performance Management Solution • Easy to install and use • Provides an easy to use UI
  12. 12. @jorgelbgm • Assertions & Tests • Scenarios Scenarios Tests Assertions … over the collected metrics and dimensions Features
  13. 13. A bit of history
  14. 14. @jorgelbgm Low hanging fruits … https://www.slideshare.net/XoanVilas/how-synthetic-monitoring-helps-optimize-web-performance
  15. 15. @jorgelbgm Before Blackfire
  16. 16. Current setup
  17. 17. @jorgelbgm PHP extension that collects resource consumption metrics & keeps track of the call graph (only when the profiling is enabled). Agent to manage communication with the Blackfire servers. Configuration management
  18. 18. @jorgelbgm • Total independence between environments • Allow for changes in credentials/ agent config without restarting the web servers • Keeps configurations on the web server to a minimum
  19. 19. @jorgelbgm Every server on the company can have Blackfire provisioned in a few minutes
  20. 20. Blackfire In our Workflow
  21. 21. @jorgelbgm Bitbucket Integrations • Bitbucket Server • Jenkins • InfluxDB • PR based workflow No official integration No official integration Webhook integration ! " ! ! No official integration
  22. 22. @jorgelbgm Final workflow
  23. 23. @jorgelbgm Developers point of view • Build status of the merge commit • Comment on the Pull Request
  24. 24. @jorgelbgm • Notification in Slack • Send the metrics to InfluxDB More feedback
  25. 25. @jorgelbgm Trigger a build if … Trigger a build when the response time goes above a threshold
  26. 26. Let’s see some examples
  27. 27. @jorgelbgm Some examples Something happened #
  28. 28. @jorgelbgm Call Graph/ Memory Timeline
  29. 29. @jorgelbgm Caching the SEO module The contents of the SEO Module doesn't change often so we should cache the Twig output in memcached. This saves the Twig translation calls, etc.
  30. 30. @jorgelbgm Caching the SEO module (after we deployed)
  31. 31. @jorgelbgm Conclusions
  32. 32. @jorgelbgm • Detect performance bottlenecks before they’re deployed to production. • Enforce a backend performance budget to stop performance degradation over time. • Offer a common platform for PHP developers to discuss performance related issues. • Provides an easy syntax for writing/understanding the tests. Conclusions
  33. 33. @jorgelbgm
  34. 34. @jorgelbgm Analyse ImproveMeasure
  35. 35. @jorgelbgm Do you want to know more? • https://tech.trivago.com/2017/10/27/continuous-performance- monitoring-for-php---the-tale-of-blackfire-at-trivago/ • https://tech.trivago.com/2018/10/12/building-fast-and-reliable-web- applications/
  36. 36. @jorgelbgm Thanks!

×