Presentation: Scaling Uber
Duration
Key Takeaways
- Learn some of lessons around growing Uber's rapidly expanding engineering organization.
- Understand some of the technology choices Uber has made to tame failure and ensure service reliability.
- Hear how Uber is building and scaling their microservice architecture.
Abstract
The Uber platform has been growing dramatically, now facilitating transportation in over 330 cities around the world. As the company has grown, the architecture that powers this platform has gone through many changes. From its simple roots as a PHP program, Uber has grown into a complex distributed system deployed across multiple datacenters using multiple databases and programming languages. This talk will cover the evolution of Uber's architecture and some of the systems we've built to handle the current scaling challenges.
Interview with Matt Ranney
QCon: What is the motivation for your talk?
Matt: The biggest problem Uber has is handling growth (product, business, and engineering). The team has gone from (when I first started) 200 engineers to 1,100 engineers. Handling that growth has been a huge problem. I don’t just mean people (that’s a huge problem too), I mean from technology viewpoint. How do you have all those engineers making meaningful contributions to your systems?
As a result, we left broken a bunch of stuff that would have been fixed if we were proceeding methodically. The motivation for my talk is about how we’re coping with adding this many people (this quickly) without taking the time to do a consistent design, it’s more adapting to chaos as much as taming it.
QCon: How is this talk different than the one you did in London earlier this year on Uber’s architecture?
Matt: The London talk was about the dispatch system. We went into detail into some of it. The dispatch system now runs the entire world. When we talked about it earlier this year, it was only in one city, but now it’s what ‘makes Uber go’.
In San Francisco, we’re talking about what we had to do on the infrastructure side to scale services. Things around routing and the explosion of of our services. Uber has about 500 services in production now. It’s a shocking graph anytime anyone sees it.
This talk is about the work we’re doing to get a handle on all that.
QCon: Can you give me an idea of some of the things you might be talking about?
Matt: There are some pretty neat failure handling techniques that I would like to go into that we have in our system. Those are among the coolest.
For example, we implement in our RPC framework Backup Requests w/ Cross-Server Cancellation from Jeff Dean’s presentation a year or two ago. As far as I know, we are the only system that does that. It’s an interesting technique. We use the same technique (basically making everything you can be Idempotent) everywhere we can, so that a service can be retried (or run twice accidentally) to mask failures as well as handle latency outliers.
QCon: Who do you think are the people that should be most interested in your talk?
Matt: If people are interested in what are the problems of scaling a rapidly growing engineering organization, the talk will be interesting to you. There are no specific technologies you need to know to come to the talk.
Similar Talks
Tracks
Covering innovative topics
Monday Nov 16
-
Architectures You've Always Wondered About
Silicon Valley to Beijing: Exploring some of the world's most intrigiuing architectures
-
Applied Machine Learning
How to start using machine learning and data science in your environment today. Latest and greatest best practices.
-
Browser as a platform (Realizing HTML5)
Exciting new standards like Service Workers, Push Notifications, and WebRTC are making the browser a formidable platform.
-
Modern Languages in Practice
The rise of 21st century languages: Go, Rust, Swift
-
Org Hacking
Our most innovative companies reimagining the org structure
-
Design Thinking
Level up your approach to problem solving and leave everything better than you found it.
Tuesday Nov 17
-
Containers in Practice
Build resilient, reactive systems one service at a time.
-
Architecting for Failure
Your system will fail. Take control before it takes you with it.
-
Modern CS in the Real World
Real-world Industry adoption of modern CS ideas
-
The Amazing Potential of .NET Open Source
From language design in the open to Rx.NET, there is amazing potential in an Open Source .NET
-
Optimizing You
Keeping life in balance is always a challenge. Learning lifehacks
-
Unlearning Performance Myths
Lessons on the reality of performance, scale, and security
Wednesday Nov 18
-
Streaming Data @ Scale
Real-time insights at Cloud Scale & the technologies that make them happen!
-
Taking Java to the Next Level
Modern, lean Java. Focuses on topics that push Java beyond how you currently think about it.
-
The Dark Side of Security
Lessons from your enemies
-
Taming Distributed Architecture
Reactive architectures, CAP, CRDTs, consensus systems in practice
-
JavaScript Everywhere!
Javascript is Everywhere. Learn why
-
Culture Reimagined
Lessons on building highly effective organizations