From monolith applications to thousands micro services
During the past few year uber has expanded its markets across the world, determined new business to commit to (Uber Eats and Rush) and of course, hired a lot of people and especially engineers (~3k).
While expanding Uber Engineering decided to convert the old monolith applications to a much more microservice oriented architecture that could provide flexibility, stability and scalability. A little year ago we had around 500 services running. Last check we performed, early february, we now run ~2k services in our data centers and aws.
Microservice architecture has definitely proved a lot of advantages but also comes with few challenges that may bring a lot of issues if not accounted for.
Loss of visibility into the system is one of the drawback of having a microservice distributed architecture along with complex interactions now occurring between services. Stability is one of the key features to focus on; yet is defined only by the ability to observe the system. Traditional monitoring tools such as metrics and distributed logging still have their place, but they often fail to provide visibility across services. This is where distributed tracing thrives.
Having a platform that runs with thousands of services will also bring a new challenge that is the huge amount of data to store, and, of course, analyze. At Uber we think that Data Viz is a key element in our strategy and this is why in early 2015 a new Data Viz team was created in order to bring to life our data through simple (not really) but yet powerful visualizations. Prime and Deck.gl (open source) are two popular tools that Uber employees use to analyze and perform action on data.
Giuseppe Macrí is a software engineer at Uber Technologies. He received a bachelor’s degree in computer engineering from University of Roma Tor Vergata; a master’s degree in computer engineering from Politecnico di Milano and a master’s degree in computer science from University of Illinois at Chicago. His current field of work is mainly focused on data visualization. He is interested in mobile application development, web frameworks and architectural system evolution.