#GlueCon 2014: Keynote: Containers all the way down – Solomon Hykes, Docker

3 minute read

Keynote: Containers all the way down: a blueprint for upgrading the Internet – Solomon Hykes, Docker

  • The applications we are building due to the new requirements don’t fit any of the development platforms available today
  • We end up cobbling together pre-existing tools that weren’t designed to fit together, which requires glue code and additional tools
  • If you are lucky, you are large enough to put 15 developers onto the tools – most aren’t that large and it takes too much time from the core product
  • The result is that every company is building their own platform under their own to support what they need
  • The container-based architecture is bigger than any one company
  • The platform isn’t clear yet, but we know that it will take many people to help figure it out
  • Platform and Service are words with specific meanings and shouldn’t be cringe-worthy due to overuse – they are the right words
  • The requirements for the platform
    • Composable – services that are discrete logical components that are discrete, composable, and interchangable as upgrades are necessary
    • Independent – of any machine running them (running on a laptop sandbox to scaled for dozens to hundreds of machines without modification)
    • Scalable – needs to remain up and perform quickly as demand increases (e.g. WhatsApp) without rearchitecting as it’s too late
    • Internet-Centric – we want users to confuse our application as being part of the Internet (e.g. Siri)
    • Available – the Internet shouldn’t go down for maintenance
  • Docker’s view on how to start creating the platform
    • The only sane thing to do is to look at how the Internet works and upgrade it, not reinvent the wheel
    • What is missing today? It can’t run code, it is a system for exchange packets of information
    • Only machines can run code
    • However, we have reached a point of adding this capability as an overlay on top of the Internet
    • How did the Internet emerge? There is a need for standards and these standards need to emerge not from standards bodies but from people sharing code until a standard emerges
    • Many ISO standards were crushed as a result
    • “My thought in the 70s was that the Internet was a really good scalable design, and we should make a virtual internet of virtual machines that could be cached by the hardware machines. It’s really too bad this didn’t happen.” – Alan Kay
    • Alan Kay invented Smalltalk, coined Object-Oriented Programming but regrets that it didn’t emphasize common message passing
    • What we need is a view of messages going in and out of components (aka services) without knowing what is inside the service
    • Someone will write a component in the future that will start talking to components that I have today – we aren’t there yet but will be
    • You can’t take the whole world and map that to REST APIs. The web is a part of the larger puzzle
    • Docker is one contribution to the puzzle, specifically about defining interfaces
    • Docker has been done before (Solaris Zones, BSD jails, etc)
    • The point of Docker is to try a new model to get a critical mass of people to agree on something
    • It isn’t a replacement for the other technologies
    • It is about getting people to come to a consensus on how to define and assemble components where standards bodies have fallen short
    • “We need to define an interface of how to make it happen. That is what we are trying to do”
  • On the ecosystem of startups around Docker
    • There are those using Docker to support their product
    • There are those using Docker to distribute their product when shared libraries won’t do it (e.g. need to specify how to run it)
    • There are those providing tools to produce containers and connect them in meaningful ways