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 ?