
Engineering team size vs microservices graph at uber
The following sections are a breakdown of Uber engineering's growth from 2010 to 2024.
MVP - 2010
Uber built the initial app in 2010 with 3 engineers: 1. Garrett Camp 2. Oscar Salazar 3. Conrad Whelan.
They had a monolith built on the LAMP stack (Servers on Linux and Apache with Mysql DB).
Simplification - 2011
After nearly two years in 2011, Uber moved to two services (The Dispatch and API service).
Team strength at this time is unknown, somewhere between 3 to 100 engineers worked on these two services.
Breaking API blocks into services - 2014
In 2014, in three years, Uber had scaled to 20 services with 100 engineers.
This was the start of their (rather troublesome) microservice journey.
Lesson? Startups, please prove your app for 3 years before making big engineering investments.
Let Builders Build - 2016
By March 2016, Uber was starting to have hiccups with its tech debt.
- With over 2000 engineers working with 1000 microservices written over 8000 code repositories.
- It was time to deep dive into what made their code so complex.
NanoServices - 2018
- By October 2018, Uber was a mammoth with roughly 3000 engineers and services.
- DevOps was cumbersome. Teams were still starting to adopt best practices.
I was part of Uber at this time. Everyone at Uber was looking to consolidate its tech footprint. The CTO said:
"You've got five or six systems that do incentives that are 75 percent similar to one another."
2019 - Consolidation attempts (Personal experience)
- The engineering team by 2019 was massive.
- The number of services had not reduced, although many of the services were being deprecated or ignored.
- Around the same time, there were layoffs.
2020 - Covid
Engineering team strength was cut down to roughly 2500 engineers.
The number of microservices did not increase, which is an important lesson for developers:
- Once you bring in a service, it's nearly impossible to remove it. The time, testing, risks involved is too much.
- When you leave the org, no one wants to touch that service.
2024 - Expansion
- As of now, Uber seems to have regained its engineering strength. The number of services also seems to have increased to 4500.
- That seems like a large number, but keep in mind that Uber manages both cab aggregation and Uber Eats (this division in India was sold to Zomato).
Key lessons:
-
In small organizations, the operational benefit likely does not offset the increase in architectural complexity.
- In other words- Don't go for microservices to scale your tech, go for microservices when you must scale your team.
-
Efforts to reduce tech debt make sense after the MVP is proven. Prioritise.
-
Adding a service, code repo, or API is much easier than removing it. The risks of breaking an existing production feature or plugging a downstream service are too great.
Phew, that's a long blog! We hope you had fun.
To learn more about system design, go to InterviewReady!