Uber Technology Stack
The Content of this blog post is based on: https://eng.uber.com/tech-stack-part-one/
Almost everyone in the western world is familiar with the app called Uber. Uber is without doubt the most popular service of reliable transportation. By focusing entirely on mobile platforms they are a so called next generation company, which takes advantages of how a simple application build up around a strong inovative idea can make an impact on millions of people around the world. However a good idea and a great UI can't stand alone, especially not when dealing with such a large user base. In this blog post we will try break down the technology stack used in Uber.
As Ubers user base has grown with such a rapid speed, they now face similar global scaling problems as some of the most successful software companies. The infrastructure and storage of Uber has therefore changed since their first launch and will most likely conteniue to do so as new solutions is found to optimize todays standards.
Programming Languages
At Ubers lower level architecture several programming languages is being used. The engineers primarily write in Python, Node.js, Go and Java as of today, however these four were not all used in the early days of Uber. When Uber first started the two main languages were Node.js and Python.Java and Go were adopted for high performance reasons, especially Java which takes advantages of the open source eco System and is used for integration where as Go is primarily for effecientcy.
Inferstructure and Storage
Do to the size of Ubers user base and their many geographical locations Uber can't rely on one single data center alone. The Uber business therefore runs on a hybrid cloud model, using a mix of cloud providers and multiple data centers. Especially the many data centers and there locations are key to the success of a app like Uber, as if one data center fails another one takes it place. The different data centers is assigned to cities based on their distance to one another.
Uber Architecture, picture is from: https://eng.uber.com/tech-stack-part-one/
Uber has since 2014 focused on Schemaless which were build in-house on top of MySQL. The choice of a In-House Schemaless builded solution came as they would run out of avaliable space for storing data using PostgreSQL before the end of 2014. For their new solution Uber was in need of the following:
(The full list and In-depth description of the criteria below can be found at: https://eng.uber.com/schemaless-part-one/)
- We needed write availability
- We needed secondary indexes
- We needed operation trust in the system, as it contains mission-critical trip data
- We needed a way of notifying downstream dependencies
Routing and Services
Uber is using a Service-oriented Architecture (SOA) and Uber rely on its many services to be able to communicate effeciently with each other. To acheive such they have used a combination of HAProxy which is a free and open source load balancer and HyperBahn which is a open source solution build In-House at Uber. SOA is a popular architecture used by larger online applications which is spread across many different platforms as the same functionality has to be provided and such can only be achived effeciently using services over a network with a centrelized backend instead of a build in back-end supporting each platform independently.
For more
For more see https://vinsloev.com/ or visit our YouTube channel Vinsloev on YouTube
Kommentarer
Send en kommentar