SlideShare a Scribd company logo
Placing a container on a train at 200mph
Casper S. Jensen
Software Engineer, Uber
About Me
● Joined Uber January 2015,
Compute Platform
Denmark, Aarhus office
● PhD, CS
On a completely unrelated topic
● Linux aficionado
● Docker “user” since February
About UBER
Why all the fuzz?
The UBER app
4
339 Cities
5
61 Countries
6
2.000.000+ Trips/day
7
4000+ Employees
8
DockerCon EU 2015: Placing a container on a train at 200mph
Not that hard...
10
You just have to handle
● 24/7 availability across the globe
● Very different markets
● 1000s of developers and teams
● Adding new features like there’s no tomorrow
UberPOOL, UberKITTEN, UberICECREAM, UberEATS,
UberWHATEVERYOUCANIMAGINE
● Hypergrowth in all dimensions
● Datacenters, servers, infrastructure, etc
Basically, you have to make magic happen every time a user
opens the application
Software
Development
The old UBER way
A fair amount of frustration
12
1)Write service RFC
2)Wait for feedback
3)Do all necessary scaffolding by hand
4)Start developing your service
5)Wait for infra team to write service scaffolding
6)Wait for IT to allocate servers
7)Wait for infra team to provision servers
8)Deploy to development servers and test
9)Deploy to production
10)Monitor and iterate
Steps 5–7 could take days or weeks...
It's just not scalable
13
But you have to start somewhere
—Internal e-mail, February 2015
“Make it easier for service
owners to manage their local
service environments.”
14
DockerCon EU 2015: Placing a container on a train at 200mph
New development process
16
1)Write service RFC
2)Wait for feedback
3)Do all necessary scaffolding using tools
4)Start developing your service
5)Deploy to development servers and test
6)Deploy to production
7)Monitor and iterate
DockerCon EU 2015: Placing a container on a train at 200mph
No silver bullets
All the things you did not consider
19
● Routing
● Dynamic service discovery
● Deployment
● Placement engine
● Logging and tracing
● Dual build environments
● Handling of secrets
● Security updates
● Private repositories
● Replicating images across multiple datacenters
Also, how much freedom do you really want to give your developers?
Change
all the things!
Let's go through some examples
uDeploy
21
● Rolling upgrades
● Automatic rollbacks on failure
● Health checks, stats, exceptions,
○ Load-, and system-tests
● Service building
● Build replication
● 4.000+ upgrades/week
● 3.000+ builds/week
● 300+ rollbacks/week
● 600+ managed services
Our in-house deployment/cluster
management system
Moving to docker with zero downtime
22
Build multiplexing
We want to keep on trucking while migrating to docker
Build process & scaffolding
23
Declarative build scripts
● Service configuration in git
● Preset service frameworks
● Many options
● Generator creating
○ Dockerfile
○ Health checks
○ Entry point scripts inside container
○ In general, all glue between host and service
● Possible to supply custom Dockerfile
service_name: test-uber-service
owning_team: udeploy
backend_port: 123
frontend_port: 456
service_type: clay_wheel
clay_wheel:
celeries:
- queue: test-uber-service
has_celerybeat: true
Image replication
24
● Multiple datacenters
● Images must be stored within DCs
● Build once, replicate everywhere
● Traffic restrictions, push but not pull
Current setup
● Stock docker registry
● File back-end
● Docker-mover
● Syncing images using pull/push
● Use notification API to speed up replication
Service discovery & routing
25
● Previously, we used HAProxy + scripts to do this
● Now, we use Hyberbahn + TChannel RPC
https://github.com/uber/{hyperbahn|tchannel}
○ Used for docker and legacy services
○ Required in order to move containers around in seconds
○ Dynamic routing, circuit breaking, retries, rate limiting,
load balancing
○ Completely dynamic, no fixed ports
Key Take-Aways
27
● Remove team dependencies
● More freedom
● Not tied to specific frameworks
or versions (hi, Python 3)
● Easy to experiment with new
technologies
● Too much freedom
● Non-trivial integrating with a
large running system
● Infrastructure must be dynamic
throughout
● Containers are only a minor
part of the infrastructure,
don't forget that
The good & the bad
Current and future wins
● Today, 30% of all services in docker
● Soon-ish, 100%
● Great improvements in provisioning time (done)
● Framework and service owners can manage their own
environment (done)
● Faster and automatic scaling of capacity (in progress)
Thank you!
Casper S. Jensen
caspersj@uber.com

More Related Content

PDF
Docker?!?! But I'm a SysAdmin
PPTX
DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
PDF
Docker on Docker
PDF
DCSF19 How To Build Your Containerization Strategy
PDF
DockerCon EU 2015: Deploying and Managing Containers for Developers
PDF
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
PPTX
DockerCon EU 2015: Docker Monitoring
PDF
DCEU 18: Docker Containers in a Serverless World
Docker?!?! But I'm a SysAdmin
DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
Docker on Docker
DCSF19 How To Build Your Containerization Strategy
DockerCon EU 2015: Deploying and Managing Containers for Developers
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
DockerCon EU 2015: Docker Monitoring
DCEU 18: Docker Containers in a Serverless World

What's hot (20)

PDF
Tales of Training: Scaling CodeLabs with Swarm Mode and Docker-Compose
PDF
A vision of persistence
PPTX
Docker Online Meetup: Announcing Docker CE + EE
PDF
How to build your containerization strategy
PDF
Android Meets Docker
PDF
Docker Platform Internals: Taking runtimes and image creation to the next lev...
PDF
Intro to docker - innovation demo 2022
PDF
DockerCon SF 2015: Docker in the New York Times Newsroom
PDF
Containerizing Hardware Accelerated Applications
PDF
Docker on docker leveraging kubernetes in docker ee
PDF
Considerations for operating docker at scale
PDF
Your Auto-Scaling Bot - Volkan Tufecki
PDF
DCEU 18: App-in-a-Box with Docker Application Packages
PDF
Node.js Rocks in Docker for Dev and Ops
PDF
Production sec ops with kubernetes in docker
PPTX
Monitoring Docker Application in Production
PDF
How to accelerate docker adoption with a simple and powerful user experience
PDF
Why I wish I'd Heard of Docker when I was 12 - Finnian Anderson
PDF
Automated hardware testing using docker for space
PDF
Modernizing .NET Apps
Tales of Training: Scaling CodeLabs with Swarm Mode and Docker-Compose
A vision of persistence
Docker Online Meetup: Announcing Docker CE + EE
How to build your containerization strategy
Android Meets Docker
Docker Platform Internals: Taking runtimes and image creation to the next lev...
Intro to docker - innovation demo 2022
DockerCon SF 2015: Docker in the New York Times Newsroom
Containerizing Hardware Accelerated Applications
Docker on docker leveraging kubernetes in docker ee
Considerations for operating docker at scale
Your Auto-Scaling Bot - Volkan Tufecki
DCEU 18: App-in-a-Box with Docker Application Packages
Node.js Rocks in Docker for Dev and Ops
Production sec ops with kubernetes in docker
Monitoring Docker Application in Production
How to accelerate docker adoption with a simple and powerful user experience
Why I wish I'd Heard of Docker when I was 12 - Finnian Anderson
Automated hardware testing using docker for space
Modernizing .NET Apps
Ad

Viewers also liked (20)

PDF
DockerCon EU 2015: Trading Bitcoin with Docker
PDF
Uber's Business Model
PDF
Scaling machine learning as a service at Uber — Li Erran Li at #papis2016
PPSX
Metrics at Scale @ UBER (Mantas Klasavicius Technology Stream)
PDF
Stream Processing with Kafka in Uber, Danny Yuan
PPTX
UBER Human Resource
PPTX
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
PDF
Spark: Interactive To Production
PDF
Why should I care about stateful containers?
PDF
DockerCon14 Contributing to Docker by Tianon
PPTX
DockerCon14 Keynote
PPTX
Dockerfile Basics Workshop #1
PPTX
DockerCon14 eBay
PDF
Distributed, Real-time Web Apps
PDF
How to Successfully Build a Local Docker Community by Mathias Renner
PDF
Monitoring Containers at New Relic by Sean Kane
PDF
Introduction to Docker and Containers
PPTX
OpenStack Summit
PPTX
Docker at DevTable
PPTX
Dockerizing WordPress
DockerCon EU 2015: Trading Bitcoin with Docker
Uber's Business Model
Scaling machine learning as a service at Uber — Li Erran Li at #papis2016
Metrics at Scale @ UBER (Mantas Klasavicius Technology Stream)
Stream Processing with Kafka in Uber, Danny Yuan
UBER Human Resource
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
Spark: Interactive To Production
Why should I care about stateful containers?
DockerCon14 Contributing to Docker by Tianon
DockerCon14 Keynote
Dockerfile Basics Workshop #1
DockerCon14 eBay
Distributed, Real-time Web Apps
How to Successfully Build a Local Docker Community by Mathias Renner
Monitoring Containers at New Relic by Sean Kane
Introduction to Docker and Containers
OpenStack Summit
Docker at DevTable
Dockerizing WordPress
Ad

Similar to DockerCon EU 2015: Placing a container on a train at 200mph (20)

PDF
How we leveraged Drupal to build a leading SaaS product
PDF
Javantura v4 - Self-service app deployment with Kubernetes and OpenShift - Ma...
PDF
introduction to micro services
PDF
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
PDF
Docker Concepts for Oracle/MySQL DBAs and DevOps
PDF
Docker for dev
PDF
Docker in production service discovery with consul - road to opscon 2015
PPTX
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
PPTX
Kubernetes is all you need
PPTX
Azure ai on premises with docker
PDF
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
PDF
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
PDF
Successful DevOps implementation for small teams a true story
PDF
Docker Birthday #5 Meetup Cluj - Presentation
PPTX
European SharePoint Conference - TH3
PDF
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
PDF
Docker + Microservices in Production
PPTX
Truemotion Adventures in Containerization
PDF
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
PDF
How we scale up our architecture and organization at Dailymotion
How we leveraged Drupal to build a leading SaaS product
Javantura v4 - Self-service app deployment with Kubernetes and OpenShift - Ma...
introduction to micro services
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Docker Concepts for Oracle/MySQL DBAs and DevOps
Docker for dev
Docker in production service discovery with consul - road to opscon 2015
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
Kubernetes is all you need
Azure ai on premises with docker
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
Successful DevOps implementation for small teams a true story
Docker Birthday #5 Meetup Cluj - Presentation
European SharePoint Conference - TH3
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Docker + Microservices in Production
Truemotion Adventures in Containerization
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
How we scale up our architecture and organization at Dailymotion

More from Docker, Inc. (20)

PDF
Containerize Your Game Server for the Best Multiplayer Experience
PDF
How to Improve Your Image Builds Using Advance Docker Build
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
Securing Your Containerized Applications with NGINX
PDF
How To Build and Run Node Apps with Docker and Compose
PDF
Hands-on Helm
PDF
Distributed Deep Learning with Docker at Salesforce
PDF
The First 10M Pulls: Building The Official Curl Image for Docker Hub
PDF
Monitoring in a Microservices World
PDF
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
PDF
Predicting Space Weather with Docker
PDF
Become a Docker Power User With Microsoft Visual Studio Code
PDF
How to Use Mirroring and Caching to Optimize your Container Registry
PDF
Monolithic to Microservices + Docker = SDLC on Steroids!
PDF
Kubernetes at Datadog Scale
PDF
Labels, Labels, Labels
PDF
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
PDF
Developing with Docker for the Arm Architecture
Containerize Your Game Server for the Best Multiplayer Experience
How to Improve Your Image Builds Using Advance Docker Build
Build & Deploy Multi-Container Applications to AWS
Securing Your Containerized Applications with NGINX
How To Build and Run Node Apps with Docker and Compose
Hands-on Helm
Distributed Deep Learning with Docker at Salesforce
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Monitoring in a Microservices World
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Predicting Space Weather with Docker
Become a Docker Power User With Microsoft Visual Studio Code
How to Use Mirroring and Caching to Optimize your Container Registry
Monolithic to Microservices + Docker = SDLC on Steroids!
Kubernetes at Datadog Scale
Labels, Labels, Labels
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Build & Deploy Multi-Container Applications to AWS
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Developing with Docker for the Arm Architecture

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Modernizing your data center with Dell and AMD
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Advanced IT Governance
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Approach and Philosophy of On baking technology
Reach Out and Touch Someone: Haptics and Empathic Computing
Unlocking AI with Model Context Protocol (MCP)
Per capita expenditure prediction using model stacking based on satellite ima...
Advanced Soft Computing BINUS July 2025.pdf
GamePlan Trading System Review: Professional Trader's Honest Take
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Review of recent advances in non-invasive hemoglobin estimation
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Advanced methodologies resolving dimensionality complications for autism neur...
Modernizing your data center with Dell and AMD
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Understanding_Digital_Forensics_Presentation.pptx
Advanced IT Governance

DockerCon EU 2015: Placing a container on a train at 200mph

  • 1. Placing a container on a train at 200mph Casper S. Jensen Software Engineer, Uber
  • 2. About Me ● Joined Uber January 2015, Compute Platform Denmark, Aarhus office ● PhD, CS On a completely unrelated topic ● Linux aficionado ● Docker “user” since February
  • 3. About UBER Why all the fuzz?
  • 10. Not that hard... 10 You just have to handle ● 24/7 availability across the globe ● Very different markets ● 1000s of developers and teams ● Adding new features like there’s no tomorrow UberPOOL, UberKITTEN, UberICECREAM, UberEATS, UberWHATEVERYOUCANIMAGINE ● Hypergrowth in all dimensions ● Datacenters, servers, infrastructure, etc Basically, you have to make magic happen every time a user opens the application
  • 12. A fair amount of frustration 12 1)Write service RFC 2)Wait for feedback 3)Do all necessary scaffolding by hand 4)Start developing your service 5)Wait for infra team to write service scaffolding 6)Wait for IT to allocate servers 7)Wait for infra team to provision servers 8)Deploy to development servers and test 9)Deploy to production 10)Monitor and iterate Steps 5–7 could take days or weeks...
  • 13. It's just not scalable 13 But you have to start somewhere
  • 14. —Internal e-mail, February 2015 “Make it easier for service owners to manage their local service environments.” 14
  • 16. New development process 16 1)Write service RFC 2)Wait for feedback 3)Do all necessary scaffolding using tools 4)Start developing your service 5)Deploy to development servers and test 6)Deploy to production 7)Monitor and iterate
  • 19. All the things you did not consider 19 ● Routing ● Dynamic service discovery ● Deployment ● Placement engine ● Logging and tracing ● Dual build environments ● Handling of secrets ● Security updates ● Private repositories ● Replicating images across multiple datacenters Also, how much freedom do you really want to give your developers?
  • 20. Change all the things! Let's go through some examples
  • 21. uDeploy 21 ● Rolling upgrades ● Automatic rollbacks on failure ● Health checks, stats, exceptions, ○ Load-, and system-tests ● Service building ● Build replication ● 4.000+ upgrades/week ● 3.000+ builds/week ● 300+ rollbacks/week ● 600+ managed services Our in-house deployment/cluster management system
  • 22. Moving to docker with zero downtime 22 Build multiplexing We want to keep on trucking while migrating to docker
  • 23. Build process & scaffolding 23 Declarative build scripts ● Service configuration in git ● Preset service frameworks ● Many options ● Generator creating ○ Dockerfile ○ Health checks ○ Entry point scripts inside container ○ In general, all glue between host and service ● Possible to supply custom Dockerfile service_name: test-uber-service owning_team: udeploy backend_port: 123 frontend_port: 456 service_type: clay_wheel clay_wheel: celeries: - queue: test-uber-service has_celerybeat: true
  • 24. Image replication 24 ● Multiple datacenters ● Images must be stored within DCs ● Build once, replicate everywhere ● Traffic restrictions, push but not pull Current setup ● Stock docker registry ● File back-end ● Docker-mover ● Syncing images using pull/push ● Use notification API to speed up replication
  • 25. Service discovery & routing 25 ● Previously, we used HAProxy + scripts to do this ● Now, we use Hyberbahn + TChannel RPC https://github.com/uber/{hyperbahn|tchannel} ○ Used for docker and legacy services ○ Required in order to move containers around in seconds ○ Dynamic routing, circuit breaking, retries, rate limiting, load balancing ○ Completely dynamic, no fixed ports
  • 27. 27 ● Remove team dependencies ● More freedom ● Not tied to specific frameworks or versions (hi, Python 3) ● Easy to experiment with new technologies ● Too much freedom ● Non-trivial integrating with a large running system ● Infrastructure must be dynamic throughout ● Containers are only a minor part of the infrastructure, don't forget that The good & the bad
  • 28. Current and future wins ● Today, 30% of all services in docker ● Soon-ish, 100% ● Great improvements in provisioning time (done) ● Framework and service owners can manage their own environment (done) ● Faster and automatic scaling of capacity (in progress)
  • 29. Thank you! Casper S. Jensen caspersj@uber.com