Synthetic and Real User Monitoring
Two complementary techniques
Presentation
I'm Anthony BARRE
- I'm a full stack developer at Fasterize
- twitter : @AnthoBarre
- Fasterize is an all-in-one website accelerator.
- It is an automated web performance optimization service (SAAS) used by many high traffic websites.
Fasterized websites are already SPDY and SSL enabled and take fully part of the next gen web.
Monitoring
Why care about website performance ?
Two predominant end-user monitoring techniques :
- Active monitoring
- Passive monitoring
Website performance has a direct impact on every metric you care about.
- Traffic
- Conversions
- Revenue
- Customer satisfaction
- Return visits
Synthetic
Active monitoring
- Simulated health-checks of the system and its parts
- Scripted scenarii through an application
- "Creation" of a single or set of events and/or actions
- Consistent “clean room” baseline
- Nothing to install
synthetic
How it works
The testing is run on servers in datacenters using a throttled connection to try and mimic the conditions an average user might experience. Pages are loaded in real web browser and performance metrics collected.
synthetic
Rich data collected
Filmstrip
Indicators based on the rendering
Waterfall, HTTP Header
Indicators based on the loading (network)
synthetic
Speed Index
It works by measuring how much of the above-the-fold content is visually complete over time until it is 100% complete.
Smaller score is better. Best correlation to the user exeperience (render time)
synthetic
Performance budget / CI integration
The purpose of a performance budget is to make sure you focus on performance throughout a project.
- Milestone timings
- Speed Index
- Quantity based metrics
- Rule based metrics
Integration :
API for webpagetest (node library) | grunt-perfbudget
synthetic
Competitive Benchmark
Answers the question : how fast should I be ?
synthetic
Highlight third party SPOF
How bad is the UX if a third party is down ?
RUM
Passive Monitoring
- Listening to actual traffic coming on the website
- Always on
- Every user, every browser, every network, anywhere in the world
- Ability to capture human behavior/events with performance data
RUM
How it works
A javascript is injected on each page and reports on the page load data for every request that is made for each page. There’s no need to pre-define your important use cases.
RUM
Navigation Timing
RUM tools leverage the Navigation Timing.
RUM
Navigation Timing
The Navigation Timing is not implemented by Safari (IOS < 9) and IE <= 8
RUM
Resource Timing
The Resource Timing API allows you to collect complete timing information related to resources in a document.
RUM
Resource Timing
Resources fetched from a third-party must provide an additional HTTP header (Timing-Allow-Origin: *) to allow the site to gather detailed network timing data.
RUM
Business data
The script can capture conversion rate and other business data.
RUM / Synthetic
Summary
“Synthetic monitoring shows you how you relate to your competitors, RUM shows you how you relate to your customers.” – Buddy Brewer (Soasta)
RUM
- Primary source of trust
- User behavior / conversion
- Complete coverage
SYNTHETIC
- Diagnostics
- Page construction
- Preproduction - competitive benchmarking
Pitfalls
Data are hardly comparable between tools
WPT : take the median (of the SpeedIndex) of 10 runs
RUM : remove all the noise that comes with the measure
Pitfalls
Data are hardly comparable between tools
Steve Souders compared the data from a RUM tool and Webpagetest on his website.
Chrome 23
Firefox 16
IE 9
Synthetic First View (secs)
4.64
4.18
4.56
Synthetic Repeat View (secs)
2.08
2.42
1.86
Synthetic 50/50 (secs)
3.36
3.30
3.21
RUM (secs)
9.94
8.59
6.67
RUM data points
94
603
89
Conclusion : be cautious about only showing your synthetic page load times – the real user experience is likely quite a bit slower.
Note : At the end of the day the two sources of numbers are different and have very different purposes. Neither of them is wrong or right – they are just different tools.
Analytics
There is not one number
Analytics
Choose the right number(s) for the right audience
Frequent Asked Questions
What impact does website performance have on your actual business ?
Correlation Business / performance
Test A/B are better than test before / after.
Fasterize will optimize only pages of a given population.
Analyse an impact on business with enough data (months may be required)
Frequent Asked Questions
What impact does website performance have on your actual business ?
Bottom of the funnel
However, there is much less impact to conversion when “checkout” pages degrade.
Top of the funnel
For a typical eCommerce site, conversion rate drops by up to 50% when “browse” pages increase from 1 to 6 seconds
Frequent Asked Questions
How are third parties impacting my site ?
Frequent Asked Questions
Should I optimize my site for mobile ?
Frequent Asked Questions
Should I optimize my site for mobile ?
Unresponsive website
Responsive website
on the abscissa : the width of the screen
on the ordinate : the size of the page in Kb
Frequent Asked Questions
How can I determine the effectiveness of my CDN provider ?
Frequent Asked Questions
Is it applicable for single page app ?
No, RUM and Synthetic can measure only the first page load and can not measure secondary loads via AJAX.
Frequent Asked Questions
When does the page become usable ?
You should consider the User Timing API.
Modern synthetic and Rum tools can collect those metrics.
window.performance.mark('mark_fully_loaded');
window.performance.measure('measure_load_from_dom', 'domComplete', 'mark_fully_loaded');
var items = window.performance.getEntriesByType('measure');
Synthetic and Real User Monitoring
Questions ?
0
Synthetic and Real User Monitoring
Two complementary techniques