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

Docker: From Dev to Production

Adam Hawkins
November 08, 2016

Docker: From Dev to Production

Part 2 of 3 in a series of webinars for CloudAcademy. You can find a summary of the webinar with video in my wrap up post: http://cloudacademy.com/blog/docker-deployment-dev-production/

Adam Hawkins

November 08, 2016
Tweet

More Decks by Adam Hawkins

Other Decks in Technology

Transcript

  1. Plan My Goal: Familiarize you with production deployment options Presentation

    & Demo ~10 minutes for Q & A. Please put your questions in the chat.
  2. Hi! I’m Adam Hawkins • Site Reliability Engineering Team Lead

    at Saltside • Manages ~350 containers in production • 2+ years of Docker experience • “Introduction to Docker” course lecturer • @adman65 • http://blog.slashdeploy.com
  3. One Size Does Not Fit All How big is your

    app? 1 web server? 10 services? 100 containers?
  4. Contenders • Golden Images • Heroku • Docker Cloud •

    Docker Swarm • Docker Data Center / UCP • ECS • Kubernetes / GKE • Mesos / DCOS
  5. Golden Images • Fully bake an image (VM, AMI etc)

    to run appropriate Docker image • [pro] Supports cloud & on-prem infrastructures • [pro] Easy to start with; scales up nicely to disconnected services • [pro] Easy horizontal & vertical scaling • [con] Requires infrastructure engineering experience • [con] Rollout times depends on your build and scaling process
  6. Heroku • Full featured PaaS • [pro] Well established feature

    set with many integrations • [pro] DBaaS offering (Heroku PostgreSQL and more) • [con] Cost • [pro] Easy access to logs, environment variables • [pro] Easy horizontal and vertical scaling • [con] Few geographical regions • [pro] Easily connect to CI for continuous deployment
  7. Docker Cloud • You provide computer, Docker provides orchestration •

    [pro] First party offering • [pro] You provide compute (via bare metal or cloud providers) • [con] You provide compute • [pro] Easily connect to CI for continuous deployment • [con] Double charge; you pay service and infrastructure costs
  8. Docker Swarm • First party cluster orchestration • [pro] First

    party offering • [pro] You provide compute (via bare metal or cloud providers) • [con] Brand new as of 1.12.0; untested • [pro] Supports docker client operations • [pro] Run on your own infrastructure (cloud or on-prem)
  9. Docker Data Center / UCP • First party offering •

    [pro] Setups authentication, registry, and swarm out of the box • [con] Lags behind the Docker daemon • [con] 1.x has issues with multiple availability zones • [pro] Run on your own infrastructure (cloud or on-prem) • [con] Pricing ($150 a month per node)
  10. AWS Elastic Container Service • Task scheduling for containers •

    [pro] Runs on AWS • [con] Not managed; you provision instances and run their agent • [con] Low level functionality; rough around the edges • [pro] Higher level tools like Empire or Convox smooth out the edges
  11. Kubernetes / Google Container Engine • Container as a Service

    • [pro] Works for all size applications • [pro] Run on your own infrastructure (cloud or on-prem) • [pro] One-click cloud offering via Google Container Enginer • [con] Requires learning an entirely new system • [con] Does not support docker clients • [con] Containers only • [pro] Powerful base to build one (OpenShift runs on Kubernetes) • [pro] Rolling deploys
  12. Mesos / DCOS • Distributed systems kernel • [pro] Works

    for all size applications • [pro] Run on your own infrastructure (cloud or on-prem) • [pro] One-click cloud offering via Microsoft Azure • [con] Requires learning an entirely new system • [con] Does not support docker clients • [pro] For containers and non-containers • [pro] Paid or open source offerings • [pro] Multiple deployment strategies via frameworks
  13. Recommendations • Heroku for small and-non distributed applications (really hard

    to beat Heroku’s features) • Golden Images or something built on ECS (e.g. Empire/Convox) for small distributed applications or you want to run your own infrastructure • Kubernetes for container native applications or large distributed systems (GKE if don’t want to run infrastructure) • Mesos / DCOS if you need to support an entire organization with a mix containerized & non-containerized work loads