Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dealing With Time Travelers in Analytics

xyu
September 10, 2015

Dealing With Time Travelers in Analytics

It's not enough to just have an analytics infrastructure for real-time online actions. The proliferation of mobile and international expansions means analytics platforms must also account for offline actions while ensuring that it does not harm user experience. At WordPress.com, we are building and scaling an analytic infrastructure to satisfy the dual mandate of accepting arbitrarily ordered events while efficiently coalesce them for querying. Here's what we've learned on our journey towards a lambda architecture.

xyu

September 10, 2015
Tweet

More Decks by xyu

Other Decks in Technology

Transcript

  1. [email protected]  @HypertextRanch  xyu.io  xyu  Dealing With

    Time Travelers in Analytics Xiao Yu / Automattic
  2.    VaultPress Jetpack Simplenote Akismet Polldaddy Gravatar VideoPress

    IntenseDebate Simperium Code Poet Cloudup WooCommerce Longreads WordPress.com WordPress.com VIP
  3. Data Scientist Performance Engineer • Load pre-render • Add callback

    to all actions • Wait for successful response • Lazy load • Track only minimum required • Send via background task
  4. <script> window._tkq = window._tkq || []; window._tkq.push( [ 'recordEvent', 'wpcom_post_edit',

    { custom_data: '…' } ] ); </script> <script> window._tkq = window._tkq || []; window._tkq.push( [ 'recordEvent', 'wpcom_post_edit', { custom_data: '…' } ] ); </script>
  5. <script> window._tkq = window._tkq || []; window._tkq.push( [ 'recordEvent', 'wpcom_post_edit',

    { custom_data: '…' } ] ); </script> <script> window._tkq = window._tkq || []; window._tkq.push( [ 'recordEvent', 'wpcom_post_edit', { custom_data: '…' } ] ); </script>
  6. <script> window._tkq = window._tkq || []; window._tkq.push( [ 'recordEvent', 'wpcom_post_edit',

    { custom_data: '…' } ] ); </script> … <script src = '//stats.wp.com/w.js' async defer ></script> <script> window._tkq = window._tkq || []; window._tkq.push( [ 'recordEvent', 'wpcom_post_edit', { custom_data: '…' } ] ); </script> … <script src = '//stats.wp.com/w.js' async defer ></script>