121

Click here to load reader

Metrics, metrics everywhere (but where the heck do you start?)

Embed Size (px)

Citation preview

Page 1: Metrics, metrics everywhere (but where the heck do you start?)

Metrics, metrics everywhere(but where the heck do you start?)Tammy Everts & Cliff CrockerVelocity New York 2015

Page 2: Metrics, metrics everywhere (but where the heck do you start?)

@tameverts @cliffcrocker

#velocityconf

Page 3: Metrics, metrics everywhere (but where the heck do you start?)
Page 4: Metrics, metrics everywhere (but where the heck do you start?)

Who cares about performance today?How do I measure performance?

How fast am I?How fast should I be?How do I get there?

Page 5: Metrics, metrics everywhere (but where the heck do you start?)
Page 6: Metrics, metrics everywhere (but where the heck do you start?)

The myth of a single metric

Page 7: Metrics, metrics everywhere (but where the heck do you start?)
Page 8: Metrics, metrics everywhere (but where the heck do you start?)

Start render DNS TCP TTFB

DOM loading DOM ready Page load Fully loaded

User timing Resource timing Requests Bytes in

Speed Index Pagespeed score 1s = $$ DOM elements

DOM size Visually complete Redirect SSL negotiation

Page 9: Metrics, metrics everywhere (but where the heck do you start?)

Who cares about performance?

Page 10: Metrics, metrics everywhere (but where the heck do you start?)

“47% of consumers expect a web page to load in 2 seconds or less.”

Akamai, 2009

Page 11: Metrics, metrics everywhere (but where the heck do you start?)
Page 12: Metrics, metrics everywhere (but where the heck do you start?)

1s = $27M DNS144ms

Start render1.59s

Hero image render2.01s

Page 13: Metrics, metrics everywhere (but where the heck do you start?)

How do I measure performance?

Page 14: Metrics, metrics everywhere (but where the heck do you start?)
Page 15: Metrics, metrics everywhere (but where the heck do you start?)
Page 16: Metrics, metrics everywhere (but where the heck do you start?)
Page 17: Metrics, metrics everywhere (but where the heck do you start?)

Andr

oid

devi

ce fr

agm

enta

tion

Ope

nSig

nal,

Augu

st 2

015

Page 18: Metrics, metrics everywhere (but where the heck do you start?)

How do we measure UX for mobile?

Page 20: Metrics, metrics everywhere (but where the heck do you start?)

RUM versus plus synthetic

Page 21: Metrics, metrics everywhere (but where the heck do you start?)

Real User Monitoring 101

Page 22: Metrics, metrics everywhere (but where the heck do you start?)

Technology for collecting performance metrics directly from the end user’s browser

Involves instrumenting your site via JavaScript

Measurements are fired across the network to a collection point through a small request object

(beacon)

Page 23: Metrics, metrics everywhere (but where the heck do you start?)

What makes RUM great

Always on Every user, every browser, everywhere Able to capture human behavior/events Only getting better

Page 24: Metrics, metrics everywhere (but where the heck do you start?)

Questions your RUM data can answer

Page 25: Metrics, metrics everywhere (but where the heck do you start?)

What are my users’ environments?

Page 26: Metrics, metrics everywhere (but where the heck do you start?)

How do visitors move through my site?

Page 27: Metrics, metrics everywhere (but where the heck do you start?)

How are my third-party scripts

performing in real time?

Page 28: Metrics, metrics everywhere (but where the heck do you start?)

What impact does performance have

on my business?

Page 29: Metrics, metrics everywhere (but where the heck do you start?)

Synthetic Monitoring 101

Page 30: Metrics, metrics everywhere (but where the heck do you start?)

Uses automated agents (bots) to measure your website from different physical locations

A set “path” or URL is defined

Tests are run either ad hoc or scheduled, and data is collected

Page 31: Metrics, metrics everywhere (but where the heck do you start?)

What makes synthetic monitoring great Rich data collected (waterfall, video,

filmstrip, HTTP headers) Consistent “clean room” baseline Nothing to install Doesn’t require users / ability to

measure pre-production and competition

Page 32: Metrics, metrics everywhere (but where the heck do you start?)

Questions your synthetic data can answer

Page 33: Metrics, metrics everywhere (but where the heck do you start?)

How do I compare to the competition?

Page 34: Metrics, metrics everywhere (but where the heck do you start?)

How does the design of my pages affect

performance?

Page 35: Metrics, metrics everywhere (but where the heck do you start?)

How does the newest version of my site compare to previous versions?

Page 36: Metrics, metrics everywhere (but where the heck do you start?)

How well am I sticking to my performance budget?

Page 37: Metrics, metrics everywhere (but where the heck do you start?)

What if my third parties fail?

Original: 3.5s

SPOF: 22.7s

Page 38: Metrics, metrics everywhere (but where the heck do you start?)
Page 39: Metrics, metrics everywhere (but where the heck do you start?)

39© 2014 SOASTA CONFIDENTIAL - All rights reserved.

Common things we hear about RUM & synthetic

Why are these numbers so different?I don’t trust your data. Your numbers are wrong.How are you calculating page load time?I can’t share two sets of numbers with the business.

Page 40: Metrics, metrics everywhere (but where the heck do you start?)

“But it loads so much faster for me!?!”

2015 Macbook ProWarm browser cache

FIOS

X86 – Windows 7 VMCompletely cold cache/DNS

Throttled bandwidth

Page 41: Metrics, metrics everywhere (but where the heck do you start?)

boomerang.js

Episodes

Page 42: Metrics, metrics everywhere (but where the heck do you start?)

W3C Performance Working Group

Page 43: Metrics, metrics everywhere (but where the heck do you start?)
Page 44: Metrics, metrics everywhere (but where the heck do you start?)
Page 45: Metrics, metrics everywhere (but where the heck do you start?)

How fast am I?

Page 46: Metrics, metrics everywhere (but where the heck do you start?)

http://soasta.io/perftimings

Page 47: Metrics, metrics everywhere (but where the heck do you start?)

NavigationTiming API

Page 48: Metrics, metrics everywhere (but where the heck do you start?)

Browser support for NavigationTiming

http://caniuse.com/#feat=nav-timing

Page 49: Metrics, metrics everywhere (but where the heck do you start?)

49© 2014 SOASTA CONFIDENTIAL - All rights reserved.

Role-specific use cases

Network operationsFront-end developerMarketing and site operationsDesignerC-level

Page 50: Metrics, metrics everywhere (but where the heck do you start?)

Use case: Measure network performance

Page 51: Metrics, metrics everywhere (but where the heck do you start?)

I need visibility into… issues with authoritative DNS servers impact of denial of service attacks

on end users efficiency of connection re-use tier 1 connectivity issues (load balancer,

web server)

Page 52: Metrics, metrics everywhere (but where the heck do you start?)

Start render DNS TCP TTFB

DOM loading DOM ready Page load Fully loaded

User timing Resource timing Requests Bytes in

Speed Index Pagespeed score 1s = $$ DOM elements

DOM size Visually complete Redirect SSL negotiation

Page 53: Metrics, metrics everywhere (but where the heck do you start?)

Measuring DNS and TCP

function getPerf() { var timing = window.performance.timing; return {

dns: timing.domainLookupEnd - timing.domainLookupStart};

connect: timing.connectEnd - timing.connectStart};}

Page 54: Metrics, metrics everywhere (but where the heck do you start?)

What’s with all those zeros! Connection reuse DNS caching Prefetching

Page 55: Metrics, metrics everywhere (but where the heck do you start?)

Focus on higher percentiles

85th percentile

Median (50th)

Page 56: Metrics, metrics everywhere (but where the heck do you start?)

Use case: Measure front-end browser events

Page 57: Metrics, metrics everywhere (but where the heck do you start?)

How do I… understand the impact of back-end

versus front-end on page speed? investigate how DOM complexity affects

performance? measure a “fully loaded” page?

Page 58: Metrics, metrics everywhere (but where the heck do you start?)

Start render DNS TCP TTFB

DOM load event DOM ready Page load Fully loaded

User timing Resource timing Requests Bytes in

Speed Index Pagespeed score 1s = $$ DOM elements

DOM size Visually complete Redirect SSL negotiation

Page 59: Metrics, metrics everywhere (but where the heck do you start?)

Isolate front-end vs. back-end

Page 60: Metrics, metrics everywhere (but where the heck do you start?)

Isolate front-end vs. back-end

function getPerf() { var timing = window.performance.timing; return {

ttfb: timing.responseStart - timing.connectEnd};basePage: timing.responseEnd - timing.responseStart};frontEnd: timing.loadEventStart -

timing.responseEnd};}

Page 61: Metrics, metrics everywhere (but where the heck do you start?)
Page 62: Metrics, metrics everywhere (but where the heck do you start?)

Front-end

Back-end

Page 63: Metrics, metrics everywhere (but where the heck do you start?)

Measuring the critical rendering path

Page 64: Metrics, metrics everywhere (but where the heck do you start?)

Investigate DOM eventsfunction getPerf() { var timing = window.performance.timing; return {

DLoading: timing.domLoading – timing.navigationStart};

DInt: timing.domInteractive – timing.navigationStart};

DContLoaded: timing.domContentLoadedEventEnd – timing.navigationStart;

DContLoadTime: timing.domContentLoadedEventEnd – timing.domContentLoadedEventStart};

DComplete: timing.domComplete - timing.navigationStart};

PLoad: timing.loadEventStart - timing.navigationStart};}

Page 65: Metrics, metrics everywhere (but where the heck do you start?)

Understanding critical rendering path DOM Loading – browser begins parsing initial

bytes of the document DOM Interactive – doc parsed, DOM has been

constructed DOM Content Loaded – No blocking style sheets DOM Complete – All processing complete, all

assets downloadedhttps://developers.google.com/web/fundamentals/performance/critical-rendering-path

Page 66: Metrics, metrics everywhere (but where the heck do you start?)

2618 DOM nodes

86 DOM nodes

Visualizing DOM complexity

Page 67: Metrics, metrics everywhere (but where the heck do you start?)

Use case: Measure object-level performance

Page 68: Metrics, metrics everywhere (but where the heck do you start?)

I need to understand… how third-party content affects my

performance how long a group of assets takes to

download how assets served by a CDN are

performing

Page 69: Metrics, metrics everywhere (but where the heck do you start?)

Start render DNS TCP TTFB

DOM loading DOM ready Page load Fully loaded

User timing Resource timing Requests Bytes in

Speed Index Pagespeed score 1s = $$ DOM elements

DOM size Visually complete Redirect SSL negotiation

Page 70: Metrics, metrics everywhere (but where the heck do you start?)

ResourceTiming interface

Page 71: Metrics, metrics everywhere (but where the heck do you start?)

Browser support for Resource Timing

http://caniuse.com/#feat=resource-timing

Page 72: Metrics, metrics everywhere (but where the heck do you start?)

Cross-Origin Resource Sharing (CORS)

Start/End time only unless Timing-Allow-Origin HTTP Response Header defined

Timing-Allow-Origin = "Timing-Allow-Origin" ":" origin-list-or-null | "*"

Page 73: Metrics, metrics everywhere (but where the heck do you start?)

ResourceTimingvar rUrl = ‘http://www.akamai.com/images/img/cliff-crocker-dualtone-150x150.png’;var me = performance.getEntriesByName(rUrl)[0];var timings = { loadTime: me.duration, dns: me.domainLookupEnd - me.domainLookupStart, tcp: me.connectEnd - me.connectStart, waiting: me.responseStart - me.requestStart, fetch: me.responseEnd - me.responseStart}

Measuring a single resource

Page 74: Metrics, metrics everywhere (but where the heck do you start?)

Other uses for ResourceTiming Slowest resources Time to first image (download) Response time by domain Time a group of assets Response time by initiator type (element type) Cache-hit ratio for resources

For examples see: https://github.com/lognormal/beyond-page-metrics

Page 75: Metrics, metrics everywhere (but where the heck do you start?)

Using Resource Groups

PLT impact not due resource groups

PLT impact correlates with improvement from image domains

Page 76: Metrics, metrics everywhere (but where the heck do you start?)

Use case: Measure the user experience

Page 77: Metrics, metrics everywhere (but where the heck do you start?)

I just need to understand… when users perceive the page to

be ready how long until my page begins

to render when content above the fold is visible

Page 78: Metrics, metrics everywhere (but where the heck do you start?)

Start render DNS TCP TTFB

DOM loading DOM ready Page load Fully loaded

User timing Resource timing Requests Bytes in

Speed Index Pagespeed score 1s = $$ DOM elements

DOM size Visually complete Redirect SSL negotiation

Page 79: Metrics, metrics everywhere (but where the heck do you start?)

The fallacy of “First Paint” in the wild Support for First Paint is not standardized between browsers Metric can be misleading (i.e. painting a white screen)

Page 80: Metrics, metrics everywhere (but where the heck do you start?)

First Paint is not equal to Start Render!Chrome – “First Paint” True Start Render

Page 81: Metrics, metrics everywhere (but where the heck do you start?)

Start Render and filmstrips

Page 82: Metrics, metrics everywhere (but where the heck do you start?)

UserTiming Interface Allows developers to measure performance of

their applications through high-precision timestamps

Consists of “marks” and “measures” PerformanceMark: Timestamp PerformanceMeasure: Duration between

two given marks

Page 83: Metrics, metrics everywhere (but where the heck do you start?)

Browser support for UserTiming

http://caniuse.com/#feat=user-timing

Page 84: Metrics, metrics everywhere (but where the heck do you start?)

Measure duration between two marksperformance.mark(“startTask”);

//Some stuff you want to measure happens here

performance.mark(“stopTask”);

//Measure the duration between the two marks

performance.measure(“taskDuration”,“startTask”,“stopTask”);

Page 85: Metrics, metrics everywhere (but where the heck do you start?)

How long does it take to display

the main product image on my site?

Page 86: Metrics, metrics everywhere (but where the heck do you start?)

Record when an img loads

<img src=“image1.gif” onload=“performance.mark(‘image1’)”>

For more interesting examples, see:

Measure hero image delayhttp://www.stevesouders.com/blog/2015/05/12/hero-image-custom-metrics/

Measure aggregate times to get an “above fold time”http://blog.patrickmeenan.com/2013/07/measuring-performance-of-user-experience.html

Page 87: Metrics, metrics everywhere (but where the heck do you start?)
Page 88: Metrics, metrics everywhere (but where the heck do you start?)

Adoption of UserTiming

for top 25 shopping sites

(Global)

Nope

User Timing

Sales

Page 89: Metrics, metrics everywhere (but where the heck do you start?)

http://soasta.io/perftimings

Page 90: Metrics, metrics everywhere (but where the heck do you start?)

How do I measure performance when the onload event loses relevance?

Use case: Measure performance of SPAs

Page 92: Metrics, metrics everywhere (but where the heck do you start?)

What is a SPA?• Single Page Application• HTML loads once• Fluid user experience• Can be great for performance• Hard to measure

Page 93: Metrics, metrics everywhere (but where the heck do you start?)

onload event

visible resources

Page 94: Metrics, metrics everywhere (but where the heck do you start?)

Measuring SPAs• Accept the fact that onload no longer matters• Tie into routing events of SPA framework• Measure downloads during soft refreshes• (support in boomerang.js for Angular and other

SPA frameworks)

Page 95: Metrics, metrics everywhere (but where the heck do you start?)

How fast should I be?

Page 96: Metrics, metrics everywhere (but where the heck do you start?)

Use case: Measure business impact

Page 97: Metrics, metrics everywhere (but where the heck do you start?)

I need to understand… how performance affects business KPIs how our site compares to our

competitors

Page 98: Metrics, metrics everywhere (but where the heck do you start?)

Start render DNS TCP TTFB

DOM loading DOM ready Page load Fully loaded

User timing Resource timing Requests Bytes in

Speed Index Pagespeed score 1s = $$ DOM elements

DOM size Visually complete Redirect SSL negotiation

Page 99: Metrics, metrics everywhere (but where the heck do you start?)
Page 100: Metrics, metrics everywhere (but where the heck do you start?)

http://www.soasta.com/blog/mobile-web-performance-monitoring-conversion-rate/

Page 101: Metrics, metrics everywhere (but where the heck do you start?)

2% increase in conversions for every 1 second of improvement

Page 102: Metrics, metrics everywhere (but where the heck do you start?)
Page 103: Metrics, metrics everywhere (but where the heck do you start?)

Cut load time by 80%83% traffic increase32% increase in time on site108% increase in interaction rate with ads

Page 104: Metrics, metrics everywhere (but where the heck do you start?)

So what?You must look at your own data.

Page 105: Metrics, metrics everywhere (but where the heck do you start?)
Page 106: Metrics, metrics everywhere (but where the heck do you start?)
Page 107: Metrics, metrics everywhere (but where the heck do you start?)

Not all pages are created equalTop of funnel impact (“browse” pages)

For a typical ecommerce site, conversion rate drops by up to 50% when “browse” pages increase from 1 to 6 seconds

Page 108: Metrics, metrics everywhere (but where the heck do you start?)

Not all pages are created equalBottom of funnel impact (“checkout” pages)

However, there is much less impact to conversion when “checkout” pages degrade

Page 109: Metrics, metrics everywhere (but where the heck do you start?)

What is the Conversion Impact Score?The Conversion Impact Score (CIS) is a relative score that ranks page groups by their propensity to negatively impact conversions due to high load times. For each page group, the Conversion Impact Score is calculated using the proportion of overall requests that are associated with that group, along with the Spearman Ranked Correlation between its load times and number of conversions. The Conversion Impact Score will always be a number between -1 and 1, though scores much greater than zero should be very rare. The more

negative the score, the more detrimental to conversions that high load times for that page group are, relative to the other page groups.

Page 110: Metrics, metrics everywhere (but where the heck do you start?)

TL;DRThe Conversion Impact Score answers this question:

How much impact does the performance of this page have on conversions?

Page 111: Metrics, metrics everywhere (but where the heck do you start?)

Conversion Impact Score

Page 113: Metrics, metrics everywhere (but where the heck do you start?)

How do I get there?

Page 114: Metrics, metrics everywhere (but where the heck do you start?)

Create a performance budget

Setting a Performance Budgethttp://timkadlec.com/2013/01/setting-a-performance-budget/

Performance Budget Metricshttp://timkadlec.com/2014/11/performance-budget-metrics/

Page 115: Metrics, metrics everywhere (but where the heck do you start?)

Set meaningful, page-specific SLAs

Page 116: Metrics, metrics everywhere (but where the heck do you start?)
Page 117: Metrics, metrics everywhere (but where the heck do you start?)

Chapter 8: Changing Culture

at Your Organization

Page 118: Metrics, metrics everywhere (but where the heck do you start?)

Free download (until November 4)

http://soasta.io/timeismoneybook

Page 119: Metrics, metrics everywhere (but where the heck do you start?)

performancebacon.com

performancebeacon.com

Page 120: Metrics, metrics everywhere (but where the heck do you start?)

Thanks!

Page 121: Metrics, metrics everywhere (but where the heck do you start?)

Meet us at booth #51