Over a million developers have joined DZone.

CodeTalk: How NPM Handles 3 Billion Weekly Downloads With Microservices [Podcast]

DZone's Guide to

CodeTalk: How NPM Handles 3 Billion Weekly Downloads With Microservices [Podcast]

This CodeTalk podcast takes a look at how NPM and microservices can help with handling the scale of a huge volume of downloads.

Free Resource

Containerized Microservices require new monitoring. See why a new APM approach is needed to even see containerized applications.

What began as an early Node.js platform for writing Javascript--running on donated servers, with users in the dozens--exploded to thousands of downloads per second and billions of downloads weekly. How would you handle that type of scale, mid-flight? NPM’s CTO, CJ Silverio, tells the tale of how the world’s most popular registry handled its hockey stick growth without going down.


  • NPM is the package manager for Javascript’s 11 million developers. NPM is ubiquitous in web development.

  • Around 2013, Node.js got “good enough” that usage exploded. Web developers learned that Node’s great for running Javascript tools and web servers. And this registry that was running on donated servers and hosted in a single instance of CouchDB faced the crushing challenge of a rushing herd of developers wanting to use it.

  • Silverio breaks down key concepts of modularity and how NPM rebuilt its registry as microservices to make its 600,000 Javascript packages as accessible as possible.

  • Silverio also traces the challenges that arise (complexity, surface area for failure, unreliability of networking) when breaking a monolith down into microservices (spoiler: the tradeoff is worthwhile for developer workflow efficiency gains!)

  • A look at some NPM platform goals for 2018 and where Silverio sees the registry and Javascript in general headed.

Got Cloud? Containers? Microservices? Get better control and performance. Start your trial of Instana APM today.

microservices ,npm ,node.js ,javascript

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}