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
Based on the above criteria they looked into already known solutions such as Cassandra, Riak and MongoDB. However none of these forfilled all criteria and as time was a pressing concern it was decided to build a In-House solution. The goal is to have Schemaless replacing individual MySQL and PostgreSQL in the future, which is still currently in use along with the Schemaless solution and can be seen in the Uber Atchitecture model above.

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

Populære opslag fra denne blog

Artificial Intelligence - How it could lead to a greener and healthier world

Introduction to Neural Networks - Part 1