docker at spotify

Download Docker at Spotify

Post on 27-Aug-2014

4.791 views

Category:

Software

0 download

Embed Size (px)

DESCRIPTION

Why we're using Docker at Spotify and what we're doing with it.

TRANSCRIPT

  • Docker at Spotify ! Rohan Singh @rohansingh
  • Spotify Music for every moment ! 40+ million active users ! 20+ million songs available (were in 55+ countries, differs by market) ! Live in the US for 2 years 2
  • What are we working with? ! 100+ distinct backend services ! 5000+ production servers in 4 sites worldwide ! Almost 300 servers per ops engineer 3
  • Deployment at Spotify 4
  • Build Debian packages ! Requisition new hardware ! Use combination of Puppet and internal tooling (deployify) 5
  • old way: SSH to a bunch of machines, apt-get install || upgrade ! deployify: Uses fabric, which just SSHs, runs apt-get install || upgrade 6
  • Whats wrong with that? 7
  • Requisitioning new hardware is slow ! Hardware utilization is low ! Weve automated and improved, but still too slow 8
  • Deployments often fail ! though usually only partially 9
  • ! Machines get denormalized easily 10
  • Debian packaging is its own special hell So many damn files! ! debhelper ! Distro & version specific ! apt-get update 11
  • What do we want? 12
  • Deployments that are: ! Repeatable ! Straightforward ! Fault-tolerant 13
  • Why Docker? ! It gives us repeatable, right out of the box ! ! And its fairly straightforward, too! 14
  • Repeatability? ! ! The code you test isnt necessarily the code that runs in prod 15
  • Repeatability Docker ! Build an image ! Run tests against the image ! Run the tested image in prod 16
  • Straightforward ! Just one Dockerfile ! Pretty simple syntax ! Immutable images easy to reason about 17
  • Fault-tolerance? Even if your code is perfect, deployments might fail ! Puppet or Debian repos are down ! Network issues ! The machine dies 18
  • Fault-tolerance Docker Just one thing has to work pulling & running an image ! If it fails, just try again ! No machines left in weird states* ! ! *(in theory) 19
  • What more do we need? 20
  • Deploying Docker containers across our entire fleet of servers ! Some way to deal with Docker or container failures ! Thats pretty much it 21
  • Looking around for a Docker platform Several really feature-full offerings ! Pretty opinionated and all-encompassing ! All we need is reliably deploying containers to a fleet of Docker hosts 22
  • Helios 23
  • Makes sure your containers are deployed & running exactly where you want them ! and thats pretty much it ! ! github.com/spotify/helios 24
  • Whats in the box? Helios master frontend that you talk to ! Helios agent runs alongside each Docker instance ! Zookeeper ! Straightforward CLI 25
  • How does it work? Create a job tell Helios which Docker image to deploy ! Deploy the job tell Helios where to run the Docker containers 26
  • See it in action 27
  • Whats next? 28
  • Helios is just the beginning ! Brought up plenty of Helios+Docker agents in our private cloud for our devs ! Integrated Helios with JUnit write JUnit tests run against Docker containers 29
  • Dockerized integration tests 30
  • This week first Helios+Docker-based service in production ! ! In the future Containerizing more of our infrastructure 31
  • Give it a go Open source: github.com/spotify/helios ! Try it out: git clone https://github.com/spotify/helios.git && cd helios && vagrant up ! ! ! Come play with us (spotify.com/jobs) 32