Uber’s Journey into Microservices
Emily Reinhold, Software Engineer, Uber
JUNE 15, 2016
Ubers Journey into Microservices Emily Reinhold, Software Engineer, - - PowerPoint PPT Presentation
Ubers Journey into Microservices Emily Reinhold, Software Engineer, Uber JUNE 15, 2016 Background Our Monolith Fun Facts API Started January 2011 API Trends Lines of Code over Time Unique Authors over Time 300K 600 225K
Emily Reinhold, Software Engineer, Uber
JUNE 15, 2016
Our Monolith
Lines of Code over Time
0K 75K 150K 225K 300K 2011 2012 2013 2014 2015 2016
Unique Authors over Time
150 300 450 600 2011 2012 2013 2014 2015 2016
Start of migration. Yay!
Users Trips Payments Products
Cities
Documents Exchange Rates
Vehicles
Promos
The Uber Monolith
Matching Service haproxy API box nginx uWSGI process
Postgres Downstream Services Third Parties
API
domain features
Users Trips Payments Products
Cities
Documents Exchange Rates
Vehicles
Promos
The Uber Monolith
domain features
Image courtesy of Anita Hart. Licensed under CC-BY-SA 2.0. https://flic.kr/p/8PG15b
Image courtesy of Paul Schadler. Licensed under CC-BY 2.0. https://flic.kr/p/aDoGkP
In Microservices
Trips Users Promos
No hiding! You’re on call!
Old Way
API
client show Payments Promos User tags
Edge Service
New Way
Edge Service Payments Promos Users
?
stack
That’s me!
eng.uber.com/building-tincup/
schema
converter
queries
?
writes
stack
Image courtesy of Kim Scarborough. Licensed under CC-BY-SA 2.0. https://flic.kr/p/23HUAK
stack
directly impacted
API
Pricing Matching Signup Exchange rates Cities Users Trips Trips Exchange Rates Cities Users
communicated
migrating consumers
API
Cities Currencies Users Trips
Old Way
requesting trip info, with relationships
currency, city
New Way API
Cities Currencies Users Trips
Tool
requesting trip info, with relationships
currency, city request user request city request currency request trip
consumers
API
Matching Signup Exchange rates Cities Users Trips Users
interface the same
required refactor
First & Last Name Email: emilyr@uber.com Engineering Blog: eng.uber.com Twitter: @UberEng