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

Cheating Gall's Law: MediterraneaJS edition

Cheating Gall's Law: MediterraneaJS edition

Or, how we split a monolith and lived to tell the tale. This is the story of how npm replaced its monolithic registry service with microservices. We rolled out the registry without any users noticing this huge change behind the scenes. How did we manage this?

TLDR: Put a proxy on it!

C J Silverio

June 23, 2015
Tweet

More Decks by C J Silverio

Other Decks in Programming

Transcript

  1. Gall's Law A complex system that works is invariably found

    to have evolved from a simple system that worked.
  2. Gall's Law in full “A complex system that works is

    invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.”
  3. slice off a part of the system into a module

    with a clearly-defined interface
  4. @architectclippy says “I see you have a poorly structured monolith.

    Would you like me to convert it into a poorly structured set of microservices?”