3 ms·
The short answer is that systems grow at the edges from a given starting position. Existing package systems like Maven, Rubygems, NPM etc basically evolved to
by jacques_chester 11y ago
The short answer is that systems grow at the edges from a given starting position.
Existing package systems like Maven, Rubygems, NPM etc basically evolved to wire together a monolith at build time.
Placement systems like Kubernetes, Mesos and (I have a dog in this fight) Diego/Lattice solve a different problem -- efficiently locating and wiring up distributed systems composed of standalone services at runtime.
If you squint and turn your head sideways, the problem that they solve rhymes. You don't see it that way yet because you assume that there is a monolith-style solution to the problem of assembling a distributed system at build time.
There are people trying, but it's not really going to work as well. Distributed systems are simply harder to build and compose than monoliths.
The only reason you're seeing this now is because PaaSes make it trivial to stage a single app or API server, so suddenly it has become attractive to break the monolith apart. Until now, running a fleet of microservices was basically too hard for 90% of development shops.
Disclaimer: I was seconded to the Cloud Foundry buildpacks team for ~7 months and I work for Pivotal.