SlideShare a Scribd company logo
Why measure?
                       boomerang
                    data data data




Measuring the web with boomerang

  Philip Tellis / philip@bluesmoon.info


     SF Performance Meetup / 2010-08-11




SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?
                                    boomerang
                                 data data data


$ finger philip



      Philip Tellis
      philip@bluesmoon.info
      @bluesmoon
      yahoo
      geek
      http://bluesmoon.info/




             SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Where does all the time go?




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Who controls it?




        Some of this we control and some of it we don’t




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                  boomerang     Measurements
                               data data data   Measuring with javascript


Back end




  Measuring and improving back end performance can be done
                     during development




           SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


80-20




   Turns out that less than 20% of the time is spent on the back
                               end




          SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Front end




              It’s what we can’t control that bites us




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                        browsers




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                            plugins




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                               OSes




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                             viruses




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                          antiviruses




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                         microwaves




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                       baby monitors




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                naughty neighbours




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                             file shares




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                           governments




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                                   rodents




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




       Try simulating all that in the lab!




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                        boomerang     Measurements
                     data data data   Measuring with javascript




We need to measure real end-user performance




 SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                          boomerang     Measurements
                       data data data   Measuring with javascript




We need to measure it from the real end-user’s box




   SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Ask the user?




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                   boomerang     Measurements
                                data data data   Measuring with javascript


Bias




       While this might work, it isn’t necessarily representative




            SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


A/B testing




   You also want to be able to dynamically tune which users get
                            which tests




          SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Phone home




  It’s most useful if you can send these measurements back to
                       your server for analysis




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


Mostly ubiquitous




   We know that javascript is available on almost every browser




          SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Rich pages




    We really want to measure the performance of rich pages
               which depend on javascript already




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


Limited




   But javascript can’t measure everything... we get as close as
                              we can




          SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy




A piece of javascript that you add to your web page where it
measures and beacons back to you the end user’s perceived
performance of your page




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                              boomerang     How does it work?
                           data data data   Accuracy


How?



 <script src="boomerang.js" type="text/javascript"></
 <script type="text/javascript">
 BOOMR.init({
 user_ip: "<user’s ip address>",
 beacon_url: "http://yoursite.com/path/to/beacon.php"
 });
 </script>




       SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


What does it do?



     About once a week, measures user’s bandwidth and
     latency to your server
     On (almost) every request, measures the time it took to
     load the current page
     Beacons these results back to your server
     Other stuff based on plugins




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How does it do it?




                       Let’s take that one at a time




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How do we measure latency?




     Download a 32 byte gif 10 times in sequence
     Measure the time to download each
     Discard the first measurement because it’s overpriced
     Calculate the arithmetic mean, standard deviation and
     margin of error of the remaining




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How do we measure bandwidth?



     After the latency test is done, we download progressively
     larger images
     Stop at the first image that times out
     Redownload that image a few more times
     Calculate the median, standard deviation and margin of
     error of the largest images




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How do we measure page load time?



     In the onbeforeunload event, measure the time and
     store it in a cookie
     In the onload event, check the cookie, and measure the
     difference with the current time
     We also make sure that the page that set the cookie is the
     referrer of the current page




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


What? Two pages?




     Yes, this needs two pages and cookies. If those aren’t
         supported, we try to use the WebTiming API.




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How accurate is it?



     Latency measurements are very accurate (±1%)
     Bandwidth is to an order of magnitude. For bad
     connections can be ±30%
     Page load time sometimes has outliers, you need
     post-filtering
     The margin of error tells you how good your data is




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


What do we do with the data?




     Sanity checking to:
         Remove fake data
         Remove abusive data
         Maybe just rate limiting




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                 boomerang     Grouping
                              data data data   More...


What do we do with the data?




     Statistical analysis to:
          Remove outliers
          Aggregate based on bandwidth blocks
          Measure trends over time and correlate them with code
          changes




          SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


Bandwidth slabs




     0-100 kbps
     100-300 kbps
     300-2000 kbps
     2-6 Mbps
     6+ Mbps




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                               boomerang     Grouping
                            data data data   More...


Bandwidth slabs




       Group page load times based on bandwidth slab




        SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


Bandwidth slabs




   Data points from some countries may require smaller slabs




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                  boomerang     Grouping
                               data data data   More...


Geographic data




   Looking at latency from different geographic locations can tell
                  you where to put your next CDN




           SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                   boomerang     Grouping
                                data data data   More...


ISPs




       Grouping data by ISP can tell you who’s behaving badly




            SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


More data




     Write plugins to get more performance data
     We already have a DNS plugin
     I’m thinking of an IPv6 v/s IPv4 plugin
     What about a full WebTiming plugin?




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


You decide




      Once you have the data, you can do anything with it




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                       boomerang     Grouping
                    data data data   More...




                            Thank you




SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


Photo credits




     flickr.com/photos/21233184@N02/4389412851




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                 boomerang     Grouping
                              data data data   More...


Contact me



     Philip Tellis
     yahoo
     geek
     @bluesmoon
     http://bluesmoon.info/
     slideshare.net/bluesmoon
     philip@bluesmoon.info




          SF Performance Meetup / 2010-08-11   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   More...


References




     github.com/yahoo/boomerang
     More bandwidth doesn’t matter (much) – Mike Belshe
     Analysing Bandwidth & Latency – YUI Blog
     It’s the latency, stupid – Stuart Cheshire
     The statistics of web performance




         SF Performance Meetup / 2010-08-11   Measuring the web with boomerang

More Related Content

Similar to Measuring the web with boomerang

Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)Philip Tellis
 
Building for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webBuilding for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile web
Robin Glen
 
An Approach to Data Quality for Netflix Personalization Systems
An Approach to Data Quality for Netflix Personalization SystemsAn Approach to Data Quality for Netflix Personalization Systems
An Approach to Data Quality for Netflix Personalization Systems
Databricks
 
Image-ine That: Image Optimization for Conversion Maximization
Image-ine That: Image Optimization for Conversion MaximizationImage-ine That: Image Optimization for Conversion Maximization
Image-ine That: Image Optimization for Conversion MaximizationYottaa
 
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
Jessica Tai
 
Fastandbeautiful gdg sacremento
Fastandbeautiful gdg sacrementoFastandbeautiful gdg sacremento
Fastandbeautiful gdg sacremento
Doug Sillars
 
Performance Measurement and Monitoring for Salesforce Web & Mobile Apps
Performance Measurement and Monitoring for Salesforce Web & Mobile AppsPerformance Measurement and Monitoring for Salesforce Web & Mobile Apps
Performance Measurement and Monitoring for Salesforce Web & Mobile AppsSalesforce Developers
 
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Andreas Grabner
 
Measuring performance - Velocity 2016 Training
Measuring performance - Velocity 2016 TrainingMeasuring performance - Velocity 2016 Training
Measuring performance - Velocity 2016 Training
Patrick Meenan
 

Similar to Measuring the web with boomerang (9)

Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)
 
Building for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webBuilding for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile web
 
An Approach to Data Quality for Netflix Personalization Systems
An Approach to Data Quality for Netflix Personalization SystemsAn Approach to Data Quality for Netflix Personalization Systems
An Approach to Data Quality for Netflix Personalization Systems
 
Image-ine That: Image Optimization for Conversion Maximization
Image-ine That: Image Optimization for Conversion MaximizationImage-ine That: Image Optimization for Conversion Maximization
Image-ine That: Image Optimization for Conversion Maximization
 
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
[MicroCPH 2019] Airbnb's Great Migration: Building Services at Scale
 
Fastandbeautiful gdg sacremento
Fastandbeautiful gdg sacrementoFastandbeautiful gdg sacremento
Fastandbeautiful gdg sacremento
 
Performance Measurement and Monitoring for Salesforce Web & Mobile Apps
Performance Measurement and Monitoring for Salesforce Web & Mobile AppsPerformance Measurement and Monitoring for Salesforce Web & Mobile Apps
Performance Measurement and Monitoring for Salesforce Web & Mobile Apps
 
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
 
Measuring performance - Velocity 2016 Training
Measuring performance - Velocity 2016 TrainingMeasuring performance - Velocity 2016 Training
Measuring performance - Velocity 2016 Training
 

More from Philip Tellis

Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou Furieux
Philip Tellis
 
Frontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonFrontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy Person
Philip Tellis
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level Metrics
Philip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Philip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part I
Philip Tellis
 
Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesPhilip Tellis
 
Extending Boomerang
Extending BoomerangExtending Boomerang
Extending Boomerang
Philip Tellis
 
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Philip Tellis
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance Analysis
Philip Tellis
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web Performance
Philip Tellis
 
Rum for Breakfast
Rum for BreakfastRum for Breakfast
Rum for Breakfast
Philip Tellis
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptPhilip Tellis
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficPhilip Tellis
 
Input sanitization
Input sanitizationInput sanitization
Input sanitization
Philip Tellis
 
Messing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristicsMessing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristics
Philip Tellis
 

More from Philip Tellis (20)

Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou Furieux
 
Frontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonFrontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy Person
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level Metrics
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
mmm... beacons
mmm... beaconsmmm... beacons
mmm... beacons
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part I
 
Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFrames
 
Extending Boomerang
Extending BoomerangExtending Boomerang
Extending Boomerang
 
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance Analysis
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web Performance
 
Rum for Breakfast
Rum for BreakfastRum for Breakfast
Rum for Breakfast
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScript
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web Traffic
 
Input sanitization
Input sanitizationInput sanitization
Input sanitization
 
Messing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristicsMessing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristics
 

Recently uploaded

Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 

Recently uploaded (20)

Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 

Measuring the web with boomerang

  • 1. Why measure? boomerang data data data Measuring the web with boomerang Philip Tellis / philip@bluesmoon.info SF Performance Meetup / 2010-08-11 SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 2. Why measure? boomerang data data data $ finger philip Philip Tellis philip@bluesmoon.info @bluesmoon yahoo geek http://bluesmoon.info/ SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 3. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Where does all the time go? SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 4. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Who controls it? Some of this we control and some of it we don’t SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 5. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Back end Measuring and improving back end performance can be done during development SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 6. Why measure? The slow web boomerang Measurements data data data Measuring with javascript 80-20 Turns out that less than 20% of the time is spent on the back end SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 7. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Front end It’s what we can’t control that bites us SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 8. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations browsers SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 9. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations plugins SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 10. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations OSes SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 11. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations viruses SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 12. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations antiviruses SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 13. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations microwaves SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 14. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations baby monitors SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 15. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations naughty neighbours SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 16. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations file shares SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 17. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations governments SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 18. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations rodents SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 19. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations Try simulating all that in the lab! SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 20. Why measure? The slow web boomerang Measurements data data data Measuring with javascript We need to measure real end-user performance SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 21. Why measure? The slow web boomerang Measurements data data data Measuring with javascript We need to measure it from the real end-user’s box SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 22. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Ask the user? SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 23. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Bias While this might work, it isn’t necessarily representative SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 24. Why measure? The slow web boomerang Measurements data data data Measuring with javascript A/B testing You also want to be able to dynamically tune which users get which tests SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 25. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Phone home It’s most useful if you can send these measurements back to your server for analysis SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 26. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Mostly ubiquitous We know that javascript is available on almost every browser SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 27. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Rich pages We really want to measure the performance of rich pages which depend on javascript already SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 28. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Limited But javascript can’t measure everything... we get as close as we can SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 29. Why measure? What? boomerang How does it work? data data data Accuracy A piece of javascript that you add to your web page where it measures and beacons back to you the end user’s perceived performance of your page SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 30. Why measure? What? boomerang How does it work? data data data Accuracy How? <script src="boomerang.js" type="text/javascript"></ <script type="text/javascript"> BOOMR.init({ user_ip: "<user’s ip address>", beacon_url: "http://yoursite.com/path/to/beacon.php" }); </script> SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 31. Why measure? What? boomerang How does it work? data data data Accuracy What does it do? About once a week, measures user’s bandwidth and latency to your server On (almost) every request, measures the time it took to load the current page Beacons these results back to your server Other stuff based on plugins SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 32. Why measure? What? boomerang How does it work? data data data Accuracy How does it do it? Let’s take that one at a time SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 33. Why measure? What? boomerang How does it work? data data data Accuracy How do we measure latency? Download a 32 byte gif 10 times in sequence Measure the time to download each Discard the first measurement because it’s overpriced Calculate the arithmetic mean, standard deviation and margin of error of the remaining SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 34. Why measure? What? boomerang How does it work? data data data Accuracy How do we measure bandwidth? After the latency test is done, we download progressively larger images Stop at the first image that times out Redownload that image a few more times Calculate the median, standard deviation and margin of error of the largest images SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 35. Why measure? What? boomerang How does it work? data data data Accuracy How do we measure page load time? In the onbeforeunload event, measure the time and store it in a cookie In the onload event, check the cookie, and measure the difference with the current time We also make sure that the page that set the cookie is the referrer of the current page SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 36. Why measure? What? boomerang How does it work? data data data Accuracy What? Two pages? Yes, this needs two pages and cookies. If those aren’t supported, we try to use the WebTiming API. SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 37. Why measure? What? boomerang How does it work? data data data Accuracy How accurate is it? Latency measurements are very accurate (±1%) Bandwidth is to an order of magnitude. For bad connections can be ±30% Page load time sometimes has outliers, you need post-filtering The margin of error tells you how good your data is SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 38. Why measure? Filtering boomerang Grouping data data data More... What do we do with the data? Sanity checking to: Remove fake data Remove abusive data Maybe just rate limiting SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 39. Why measure? Filtering boomerang Grouping data data data More... What do we do with the data? Statistical analysis to: Remove outliers Aggregate based on bandwidth blocks Measure trends over time and correlate them with code changes SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 40. Why measure? Filtering boomerang Grouping data data data More... Bandwidth slabs 0-100 kbps 100-300 kbps 300-2000 kbps 2-6 Mbps 6+ Mbps SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 41. Why measure? Filtering boomerang Grouping data data data More... Bandwidth slabs Group page load times based on bandwidth slab SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 42. Why measure? Filtering boomerang Grouping data data data More... Bandwidth slabs Data points from some countries may require smaller slabs SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 43. Why measure? Filtering boomerang Grouping data data data More... Geographic data Looking at latency from different geographic locations can tell you where to put your next CDN SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 44. Why measure? Filtering boomerang Grouping data data data More... ISPs Grouping data by ISP can tell you who’s behaving badly SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 45. Why measure? Filtering boomerang Grouping data data data More... More data Write plugins to get more performance data We already have a DNS plugin I’m thinking of an IPv6 v/s IPv4 plugin What about a full WebTiming plugin? SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 46. Why measure? Filtering boomerang Grouping data data data More... You decide Once you have the data, you can do anything with it SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 47. Why measure? Filtering boomerang Grouping data data data More... Thank you SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 48. Why measure? Filtering boomerang Grouping data data data More... Photo credits flickr.com/photos/21233184@N02/4389412851 SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 49. Why measure? Filtering boomerang Grouping data data data More... Contact me Philip Tellis yahoo geek @bluesmoon http://bluesmoon.info/ slideshare.net/bluesmoon philip@bluesmoon.info SF Performance Meetup / 2010-08-11 Measuring the web with boomerang
  • 50. Why measure? Filtering boomerang Grouping data data data More... References github.com/yahoo/boomerang More bandwidth doesn’t matter (much) – Mike Belshe Analysing Bandwidth & Latency – YUI Blog It’s the latency, stupid – Stuart Cheshire The statistics of web performance SF Performance Meetup / 2010-08-11 Measuring the web with boomerang