A Web Performance Dashboard: Up and Running in 90 minutes

Slides:



Advertisements
Similar presentations
Introduction to Web Design Lecture number:. Todays Aim: Introduction to Web-designing and how its done. Modelling websites in HTML.
Advertisements

CS193H: High Performance Web Sites Lecture 12: Rule 8 – Make JavaScript and CSS External Steve Souders Google
Web Performance Meetup 1 Web Performance 101 Jeremy
Behzad Samin 0 An End-to-End Overview of a RESTful Web Service.
1 How To Use a Browser A Module of the CYC Course – Computer Basics
©2011 Quest Software, Inc. All rights reserved.. Andrei Polevoi, Tatiana Golubovich Program Management Group ActiveRoles Add-on Manager Overview.
Monitoring a web sites health. Web Analytics - Definition Measurement of the behavior of visitors to a website Which aspects of the website work towards.
WordPress from Start to Finish Day 1: Installing and Using WordPress Looking at the WordPress database.
What is code injection? Code injection is the exploitation of a computer bug that is caused by processing invalid data. Code injection can be used by.
An HTTP Extension to provide Timing Data for Performance Measurement Mike McCall, Akamai Technologies.
CS 22: Enhanced Web Site Design - Week 8Slide 1 of 15 Enhanced Web Site Design Stanford University Continuing Studies CS 22 Mark Branom
WORDPRESS. SEO AKA – “Search Engine Optimization” Technique to make sure large search engines like Google, Yahoo, and Bing find your site and let others.
Getting Familiar with Web Pages 1 2 The Internet Worldwide collection of interconnected computer networks that enables businesses, organizations, governments,
©2013 AKAMAI | FASTER FORWARD TM It's all about Performance Measured and Perceived Performance on Desktop and Mobile Devices San Mateo Meetup, July 2013.
Jenkins User Conference San Francisco, Sept #jenkinsconf Business Process Model & Notation (BPMN) Workflows in Jenkins Max Spring Cisco
FIRST SESSION - XAMPP Jeongmin Lee.  Jeongmin Lee  CS  PHD  Machine Learning, AI  Web System Development.
A really fairly simple guide to: mobile browser-based application development (part 1) Chris Greenhalgh G54UBI / Chris Greenhalgh
Extending JIRA Rachel Wright July 15, 2014 See slide “Notes” section for commentary and talking points.
How the Internet Works Course Objectives Introduce the various web browsers Introduce some new terms Explain the basic Internet to PC hookup  ISP  Wired.
ManageEngine TM Applications Manager 8 Monitoring Custom Applications.
Creating WordPress Websites. Creating a site on your computer Local server Local WordPress installation Setting Up Dreamweaver.
World Wide Web1 Applications World Wide Web. 2 Introduction What is hypertext model? Use of hypertext in World Wide Web (WWW) – HTML. WWW client-server.
Report Distribution Report Distribution in PeopleTools 8.4 Doug Ostler & Eric Knapp 7264.
How Clients and Servers Work Together. Objectives Learn about the interaction of clients and servers Explore the features and functions of Web servers.
UWWD In our quest to eliminate bad websites, we present…. HALLELUJAH!!
Dynamic Web site With PHP and MySQL. MySQL The combination of MySQL database and PHP scripting language is optimum for building dynamic websites. MySQL.
The easy way to a nice looking website design By a total non-designer (Me!)
Accelerate adoption, provide customer insights to engineering, and deliver knowledge to the IT Pro community.
Web Programming Language Dr. Ken Cosh Week 1 (Introduction)
© Copyright 2012 STI INNSBRUCK Christoph Fuchs.
INTRODUCTION TO WEB DATABASE PROGRAMMING
Technology Coordinators Training. Confidential Copyright © 2007 Pearson Education, Inc. and/or one or more of its direct or indirect affiliates. All rights.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Configuring a Web Server. Overview Overview of IIS Preparing for an IIS Installation Installing IIS Configuring a Web Site Administering IIS Troubleshooting.
DNN Performance & Scalability Planning, Evaluating & Improving : Part 2.
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
Chapter 6 The World Wide Web. Web Pages Each page is an interactive multimedia publication It can include: text, graphics, music and videos Pages are.
Integrating with UCSF’s Shibboleth system
Web Page Design I Basic Computer Terms “How the Internet & the World Wide Web (www) Works”
1 In the good old days... Years ago… the WWW was made up of (mostly) static documents. –Each URL corresponded to a single file stored on some hard disk.
 The World Wide Web is a collection of electronic documents linked together like a spider web.  These documents are stored on computers called servers.
Web Engineering we define Web Engineering as follows: 1) Web Engineering is the application of systematic and proven approaches (concepts, methods, techniques,
JavaScript – Quiz #9 Lecture Code:
1 Welcome to CSC 301 Web Programming Charles Frank.
Graphing and statistics with Cacti AfNOG 11, Kigali/Rwanda.
Dudok de Wit David.  Documents management in a deskless company  SharePoint Online as a solution  Redesigning the documentary organization  Interoperability.
Proxy Installer for Windows Squid: Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response.
Integrating and Troubleshooting Citrix Access Gateway.
Lab 11 Overview Windows Server Last Labs Lab 12  Cisco Firewall.
Module: Software Engineering of Web Applications Chapter 2: Technologies 1.
Unit 1 – Web Concepts Instructor: Brent Presley.
MIS Week 5 Site:
Web Cache. What is Cache? Cache is the storing of data temporarily to improve performance. Cache exist in a variety of areas such as your CPU, Hard Disk.
INFORMATION DEPLOYED. SOLUTIONS ADVANCED. MISSIONS ACCOMPLISHED. PDS Punch-Out v1.0 SPS Spotlight Series October 2014.
Here are some things you can do while you wait 1.Open your omeka.net site in your browser (e.g. 2.Open.
WHAT'S THE DIFFERENCE BETWEEN A WEB APPLICATION STREAMING NETWORK AND A CDN? INSTART LOGIC.
THE FUTURE IS HERE: APPLICATION- AWARE CACHING BY ASHOK ANAND.
Building Your Own Website Using:. Install & configure LAMP. Download WordPress and run it as a local website on your Raspberry Pi. Configure WordPress.
IF STARBUCKS USED INSTART LOGIC, THEY WOULD HAVE A FASTER RESPONSIVE WEBSITE BY PETER BLUM.
Web Server Administration Chapter 6 Configuring a Web Server.
● The most common website platform ● User friendly-easy to edit ● Constantly improving-updates, plugins, themes Why WordPress?
Web Programming Language
Debugging Front-end Performance
PIWIK JUNIOR TIDAL ASSOCIATE PROF., WEB SERVICES & MULTIMEDIA LIBRARIAN NEW YORK CITY COLLEGE OF TECHNOLOGY, CUNY.
CISC103 Web Development Basics: Web site:
Data Virtualization Tutorial… CORS and CIS
Warm Handshake with Websites, Servers and Web Servers:
AMP: Does it Really Make Your Site Faster?
Database Driven Websites
Web Application Development Using PHP
Presentation transcript:

A Web Performance Dashboard: Up and Running in 90 minutes flickr photo courtesy of purplemattfish

About Us Cliff Crocker Aaron Kulick VP, Product Management SOASTA, Inc. Performance monitoring, evangelism, analytics and pho connoisseur @cliffcrocker Chief Performance Engineer @WalmartLabs Founder of SFWebPerf.org meetup, WebPerfDays.org and lover of squirrels @GoFastWeb

Images Provoke a Response Cliff: People react to visual stimuli We are just wired this way Aaron and I both are extremely passionate about this – get your data in front of people

Foster a Sense of URGENCY! Cliff: Effective dashboards can immediately convey that there is a problem or that the fix is not working! Oil spill in the Gulf. Message: Something is definitely wrong here and the clock is ticking. Foster a Sense of URGENCY!

Provide Reassurance - All is OK http://www.flickr.com/photos/barge/5013630976/lightbox/ Cliff: Conversely a good dashboard can convey a feeling that all is well with the world. Creepy baby monitors are widely adopted by paranoid parents. Message: All is well with the world. You can relax. Provide Reassurance - All is OK

Dashboards Should NOT Be Complicated Cliff: As engineers, we are notorious for adding switches, complex configurations, and basically making dashboards unusable by anyone who can’t pilot a commercial airliner. Keep it simple. Focus on what you want. Start with nothing, then add what you need as you need it. www.flickr.com

A Simple 3 Step Approach to Building a Dashboard Identify Input(s) Collect & Process (ETL) Visualize & Display Cliff -> Aaron: Setting the stage for today’s talk ‘Hack Day’ type solutions designed to provide you with a sandbox for experimenting with various web perf tools and data experimentation.

identifying input & getting data Step 1 identifying input & getting data

Synthetic Analytics RUM Synthetic First Mile Analytics Optimize RUM A few months back, Aaron and I discussed a holistic approach to performance monitoring. Staying with this same approach, we will look at 3 or the 4 data sets mentioned in that presentation – eliminating first mile monitoring for this discussion. RUM – Real user measurement Synthetic – Puppeteered browser Analytics – User behavior & demographics, site statistics

How Most RUM Solutions Work Source external JS Instrument page with start/end timers and/or leverage navigation timing API Beacon containing timing data is fired at onload and sent to a beacon server JS Instrument Fire

Getting Performance Data From Real Users Episodes Some smart guy wrote this who knows something about web performance (Steve Souders) boomerang.js Another smart guy wrote this (Phillip Tellis) Extensible (custom API for passing data to beacon) ShowSlow Yet another smart guy (Sergey Chernyshev – “mmm beacons”) Crowdsourcing Roll your own You can be the smart person to write this

W3C Navigation Timing http://www.w3.org/TR/navigation-timing/

Today We are Using boomerang.js Steps: Git: https://github.com/lognormal/boomerang/ Include: Initialize: <script src="/javascript/boomerang.js" type="text/javascript"></script> BOOMR.init({ beacon_url: "http://beacons.yoursite.com/path/to/beacon.gif", site_domain: "yoursite.com” });

Today We are Using boomerang.js (continued) Steps: Extend: BOOMR.addVar({ var1: “bing", var2: “bang", var3: “boom” }); BOOMR.plugins.RT.startTimer(“t_timer”); //some foo BOOMR.plugins.RT.endTimer(“t_timer”);

Ghetto-Fabulous <script src="/javascript/boomerang.js" type="text/javascript"></script> For the high-performance, non-blocking, self-updating version, see: http://www.stevesouders.com/blog/2012/05/22/self-updating-scripts/ http://www.lognormal.com/blog/2012/06/05/updating-cached-boomerang/

Synthetic Data Consistency Object level detail High signal to noise ratio Instrumented real browsers

Getting Synthetic Data WebPagetest.org REDbot.org cURL ShowSlow PageSpeed Insights GTmetrix.com Vendor supported solutions

WebPagetest Steps: Download: Configure: Automate: https://sites.google.com/a/webpagetest.org/docs/private-instances/releases Configure: https://sites.google.com/a/webpagetest.org/docs/private-instances#TOC-Configuring Automate: Script foo Bribe Patrick Meenan for an API key

Example: Walmart Competitive Index Ingredients: URL file Cron job MySQL Flot (javascript)

Example: Walmart Competitive Index (continued)

Analytics Conversion Engagement Demographics Flow Add to cart Click Engagement Bounce, exit, and entry Time on page/site Demographics Geography Browser, device, OS, screen size Flow Utilization SEO, SEM, and campaign effectiveness A/B, MAB

Analytics Piwik.org Google Analytics Log analysis (BFD) Vendor supported solution

Piwik Steps: Download: Install: Instrument: http://www.piwik.org MySQL PHP Instrument:

Piwik (continued) *boomerang integration **not like this!! <!--Piwik tracking --> <script type="text/javascript"> var pkBaseURL = (("https:" == document.location.protocol) ? "https://localhost/test/piwik/" : "http://localhost/test/piwik/"); document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); BOOMR.subscribe ('before_beacon', function (o) { try { var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2); piwikTracker.setCustomVariable (1, "Page Load - sec", Math.ceil((o.t_done/1000)), "page"); piwikTracker.setCustomVariable (2, "Page Processing - sec.", Math.ceil((o.t_page/1000)), "page"); piwikTracker.setCustomVariable (3, "Response - sec", Math.ceil((o.t_resp/1000)), "page"); piwikTracker.setCustomVariable (4, "Latency - msec", o.lat, "visit"); piwikTracker.setCustomVariable (5, "Bandwidth - kbps", Math.ceil((o.bw/1024)), "visit"); piwikTracker.trackPageView(); piwikTracker.enableLinkTracking(); } catch( err ) {} }); </script> <!--stone tools--> <noscript><p><img src="http://localhost/test/piwik/piwik.php?idsite=2" style="border:0" alt="" /></p></noscript> <!--End Piwik Tracking Code --> *boomerang integration **not like this!!

collecting, processing & storing data Step 2 collecting, processing & storing data

How It Works boomerang.js -> StatsD -> Graphite JavaScript triggers image request Beacon server responds with 204 (no cache) StatsD aggregates metrics Graphite stores and provides UI JS Beacon Server Statsd Graphite

How It Works Script foo -> WebPagetest API -> MySQL wpt_batch.py – submit a batch job for processing WebPagetest API – run tests parse_xml.pl – parse XML response MySQL – store median results Piwik – CompWPT plugin displays results wpt_batch.py WebPagetest API parse_xml.pl MySQL Piwik

pulling it into a dashboard “Make Them Happy Trees” Step 3 pulling it into a dashboard “Make Them Happy Trees”

Introducing our Sponsor Sally Squirrel’s Dance Emporium

Demo Demo Site WebPagetest REDbot Graphite WebPerf90 Dashboard - Piwik

Operational RUM

Where Should You Focus? yes, there are people here…. Buying stuff Much less likely to buy stuff Probably on an airplane yes, there are people here….

WebPagetest AIR @patmeenan “For the next ~3 hours, WebPagetest has a Virgin in-flight wifi location available. Last location in the list. #webperf” @cliffcrocker “@patmeenan > Holy Slow! “ @patmeenan “@cliffcrocker Yep - when it's even connecting. Talk about a first-world problem.”

How Do You Optimize for the Given Distribution? Traditional WPO Techniques – 14+ Rules Advanced Optimization/Acceleration – Automated WPO Prayer

Set Achievable SLAs Find Your Own Meaningful Metric “Item Page – ‘page processing’ should be 18s or faster for 95% of users”

Validate With Analytics

Acknowledgements Software Special Thanks boomerang.js Phil & Buddy (logNormal) WebPagetest Pat Meenan Node Beacon Rick Crawford ShowSlow Sergey Chernyshev wpt_batch Qi Zhao REDbot Mark Nottingham HAR Viewer Jan Odvarko Graphite Piwik PageSpeed Insights http://dl.dropbox.com/u/49030329/WebPerformanceDashboard90.ova

VM INSTRUCTIONS Username: webperfdash Password: webperfdash To start the Graphite, node beacon, StatsD, and REDbot log into the VM and execute the following command as the ‘webperfdash’ user from the home directory: $ supervisord The VM should just work (but you may need to disable USB 2.0 controller on import if you do not have the Oracle VM VirtualBox Extensions, see website) in VirtualBox which is available for free for Windows, OS X, or Linux. If you get a USB 2.0 incompatibility error on start then you do not have the the above extension installed and should disable USB when importing the appliance or via the settings or install the extensions directly. The VM has two NICs configured, the first is configured for NAT and the ports are already forwarded. The second uses the HOST NETWORKING scheme (http://www.virtualbox.org/manual/ch06.html#network_hostonly) which creates a private network shared exclusively by the VM and the host (or any other addition hosts such as WebPagetest workers).

Ports Service Port Number SSH 42222 Demo Site 40000 Graphite 49999 HAR Viewer 44444 REDbot 45555 WebPagetest 48888 ShowSlow 47777 boomerang.js Beacon Server 43000 Piwik 48080

Exhibit Hall – Office Hours ‘C’ Aaron & Cliff Office Hours Tuesday 3:50p -4:30p Exhibit Hall – Office Hours ‘C’

WebPerfDays.org

Come by our booth!

We’re Hiring!