Docker Deployments
Powerful for Developers, Painless for Ops
Monday, June 9, 14
Zero to Liftoff
Had No Docker in Production
Launched our newest major
product (Insights) on it in
February
Launching several new apps
each month
HTTP://WWW.SPACE.COM/14720-MUOS-1-SATELLITE-LAUNCHES-ATLAS-5-ROCKET.HTML
Monday, June 9, 14
Impending Dooooom
5 stable apps over several years, with little churn
Dev teams are doing their own ops but can’t have
access to everything
Everyone has access to all DB secrets
Deployment tooling is all hand-crafted (with a bird
on it)
WE COULDN’T SCALE THE STATUS QUO
Monday, June 9, 14
MOAR Challenge
We’re doubling developer count every year
SOA: Adding up to 30 services in next 12 months
Early part of the year we launched major product:
Insights
Increasingly heterogeneous apps
ORGANIZATIONAL CHANGES
Monday, June 9, 14
The Simplest Thing
PaaS would be great, but doesn’t fix our
immediate need
Solve deployment problem first, then logging, then
discovery and dynamic configuration
Start with standard web apps, not high volume
data apps: do the easiest things first
THAT COULD POSSIBLY WORK
Monday, June 9, 14
Separate builds from deploys
Hand built docker files at first, then automated
configuration
Deployment via in-house tool (Centurion)
Health check end point, configs via ENV vars
What We Did
AND WHY
Monday, June 9, 14
Builds based on standard base layers
Tool for automatic docker files (Shipright)
Retained Dockerfile flexibility
Lowering The Bar
AS IN HIGH JUMP NOT AS IN LIMBO
Monday, June 9, 14
Centurion
Rake application with tasks and dependencies
Talk to a fleet of Docker servers at once
Does rolling deployment
Guarantees run environment
Extensible
CONTROLLED DEPLOYMENTS WITH DOCKER
Monday, June 9, 14
DEMO
Monday, June 9, 14
Productionize That Thing
Monitoring (check_docker)
Nagios
New Relic
MONITORING OH-MY
Monday, June 9, 14
Configuration is in git (etcd soon)
Builds and deployments via jenkins
Debugging via ssh, Papertrail. (log routing soon)
Developers update dependencies at will
Test, staging, integration and production are
identical
Operating the Machine
WHAT WE DO NOW
Monday, June 9, 14
Developers Love It
We expected resistance, instead we got
enthusiasm.
Telling developers to pull request against your
puppet repo is a world of hurt.
At a recent SOA kickoff devs were able to get
things up an running in hours instead of a week.
AND WE WERE SURPRISED?
Monday, June 9, 14
A bright, shining future
Centralized configuration via etcd
Discovery through etcd, too
Dynamic allocation of hosts by Centurion
Dynamic Nagios, load balancing configs
Containerized high volume apps and databases.
WHERE TO FROM HERE?
Monday, June 9, 14
Links
@poeslacker - Paul Showalter
@relistan - Karl Matthias
https://github.com/newrelic/check_docker
https://github.com/newrelic/go_nagios
https://github.com/newrelic/centurion
Monday, June 9, 14

Docker Deployments

  • 1.
    Docker Deployments Powerful forDevelopers, Painless for Ops Monday, June 9, 14
  • 2.
    Zero to Liftoff HadNo Docker in Production Launched our newest major product (Insights) on it in February Launching several new apps each month HTTP://WWW.SPACE.COM/14720-MUOS-1-SATELLITE-LAUNCHES-ATLAS-5-ROCKET.HTML Monday, June 9, 14
  • 3.
    Impending Dooooom 5 stableapps over several years, with little churn Dev teams are doing their own ops but can’t have access to everything Everyone has access to all DB secrets Deployment tooling is all hand-crafted (with a bird on it) WE COULDN’T SCALE THE STATUS QUO Monday, June 9, 14
  • 4.
    MOAR Challenge We’re doublingdeveloper count every year SOA: Adding up to 30 services in next 12 months Early part of the year we launched major product: Insights Increasingly heterogeneous apps ORGANIZATIONAL CHANGES Monday, June 9, 14
  • 5.
    The Simplest Thing PaaSwould be great, but doesn’t fix our immediate need Solve deployment problem first, then logging, then discovery and dynamic configuration Start with standard web apps, not high volume data apps: do the easiest things first THAT COULD POSSIBLY WORK Monday, June 9, 14
  • 6.
    Separate builds fromdeploys Hand built docker files at first, then automated configuration Deployment via in-house tool (Centurion) Health check end point, configs via ENV vars What We Did AND WHY Monday, June 9, 14
  • 7.
    Builds based onstandard base layers Tool for automatic docker files (Shipright) Retained Dockerfile flexibility Lowering The Bar AS IN HIGH JUMP NOT AS IN LIMBO Monday, June 9, 14
  • 8.
    Centurion Rake application withtasks and dependencies Talk to a fleet of Docker servers at once Does rolling deployment Guarantees run environment Extensible CONTROLLED DEPLOYMENTS WITH DOCKER Monday, June 9, 14
  • 9.
  • 10.
    Productionize That Thing Monitoring(check_docker) Nagios New Relic MONITORING OH-MY Monday, June 9, 14
  • 11.
    Configuration is ingit (etcd soon) Builds and deployments via jenkins Debugging via ssh, Papertrail. (log routing soon) Developers update dependencies at will Test, staging, integration and production are identical Operating the Machine WHAT WE DO NOW Monday, June 9, 14
  • 12.
    Developers Love It Weexpected resistance, instead we got enthusiasm. Telling developers to pull request against your puppet repo is a world of hurt. At a recent SOA kickoff devs were able to get things up an running in hours instead of a week. AND WE WERE SURPRISED? Monday, June 9, 14
  • 13.
    A bright, shiningfuture Centralized configuration via etcd Discovery through etcd, too Dynamic allocation of hosts by Centurion Dynamic Nagios, load balancing configs Containerized high volume apps and databases. WHERE TO FROM HERE? Monday, June 9, 14
  • 14.
    Links @poeslacker - PaulShowalter @relistan - Karl Matthias https://github.com/newrelic/check_docker https://github.com/newrelic/go_nagios https://github.com/newrelic/centurion Monday, June 9, 14