Necessary Performance Measures: npm at Scale

Necessary Performance Measures: npm at Scale

Talk on caching and distribution at MelbJS meetup in Melbourne, Australia

583a0cfd3e0ec851166c5c6fa5e506a5?s=128

Raquel Vélez

April 30, 2014
Tweet

Transcript

  1. Necessary Performance Measures: at Scale Brought to you by @rockbot

  2. Package Management for Node.js • The Open Source Dream !

    • ~70k packages • up to 10 million downloads/ day
  3. 221,845,731) !10,000!! !20,000!! !30,000!! !40,000!! !50,000!! !60,000!! !70,000!! !80,000!! !90,000!!

    !-!!!! !10,000,000!! !20,000,000!! !30,000,000!! !40,000,000!! !50,000,000!! !60,000,000!! !70,000,000!! !80,000,000!! !90,000,000!! !100,000,000!! !110,000,000!! !120,000,000!! !130,000,000!! !140,000,000!! !150,000,000!! !160,000,000!! !170,000,000!! !180,000,000!! !190,000,000!! !200,000,000!! !210,000,000!! !220,000,000!! !230,000,000!! !240,000,000!! 8/29/12! 12/7/12! 3/17/13! 6/25/13! 10/3/13! 1/11/14! 4/21/14! Downloads)of)npm)packages)in)previous)month)) &)Total)number)of)npm)Packages)of)node.js)code) !!!Downloads!of!npm!packages!in!previous!month! !!!Total!Number!of!npm!Packages!
  4. Performance = Perception • Best request vs worst request •

    Focus on the few, super-slow instances: improve performance like whoa ! • Caching vs Distribution
  5. Caching

  6. Data Layer Query Caching Database-level performance enhancements ! innoDB buffer

    pool, CouchDB’s ACID architecture
  7. Query Layer Save CPU Preprocessed/aggregated data; scheduled handling of data

    ! CouchDB views, Download Counts
  8. App Layer Per-User Data that doesn’t change per user !

    Storing user session data in Redis
  9. Edge Server Layer Centralized/Global CDN, static assets ! Fastly

  10. Client Layer Distributed HTTP headers, local storage, etc. ! Browser

    caching
  11. Distribution

  12. Split Load More boxes, more specialized boxes read-only, write-only !

    One process per box Redis, CouchDB, ElasticSearch
  13. Add Resiliency Multi-cloud, multi-zone East/West, multiple datacenters ! Fallback to

    least effort/ most common usage i.e. read-only
  14. Boost with Third-Party Services Global content distribution network CDN

  15. The End?

  16. Thank You! ! Raquel Vélez @rockbot raquel@ js.com