Optimizing Search and Scaling for Uber Eats
Uber Eats, a leading food delivery platform, has faced significant challenges in scaling its backend infrastructure to accommodate growing demand. In a recent presentation, engineers Janani Narayanan and Karthik Ramasamy from Uber’s search platform team shared insights on how they addressed these challenges.
Understanding the Problem
The primary goal was to scale the Uber Eats backend infrastructure to infinitely scale the number of merchants that are deliverable to any particular eater. This involved expanding selection by nX, where nX represents a multiplier of the current selection.
Defining Selection
Selection means different things to different people. For the merchant onboarding team, it means onboarding as many merchants as possible. For eaters, it means having access to their favorite restaurants, getting food within a particular ETA, or discovering new stores.
The Technical Challenge
Uber Eats has grown significantly, with the business expanding and branching into multiple lines of business, including grocery stores, retail stores, and package delivery. This growth has introduced new challenges in terms of scale, complexity, and indexing.
Discovery Surfaces
The team identified four discovery surfaces: home feed, search, suggestions, and ads. These surfaces need to work in cohesion to provide a seamless customer experience.
Overall Architecture
The overall architecture consists of an infra layer, retrieval layer, first pass ranker, hydration layer, and second pass ranker. The team optimized the retrieval layer for recall and the first pass ranker for precision and efficiency.
Challenges and Optimizations
The team faced several challenges, including:
- Latency Increase: When fetching more stores, the latency increased by 4X, which was a serious problem.
- Root Cause Analysis: The team identified multiple aspects to the problem, including design decisions made in ingestion and query layers.
- Benchmarking: The team added metrics to the search infra layer to understand where the latency was coming from.
Sharding Techniques
Uber uses geosharding to make queries more efficient. The two geosharding techniques used are:
- Latitude Sharding: The world is divided into latitude bands, and each band maps to a shard.
- Hex Sharding: The world is divided into hexagons, and each hexagon maps to a shard.
Data Layout
The team optimized the data layout to take advantage of query patterns. They used a clustered index layout, which provided a 60% improvement in latency.
ETA Indexing
The team indexed ETA information into the search index, which enabled them to leverage parallelization and improve recall.
Solution
The team’s solution involved:
- Building a Data Layout: Creating a data layout that can take advantage of query patterns.
- ETA Indexing: Indexing ETA information into the search index.
- Parallelization: Dividing the search space into non-overlapping ranges and executing them in parallel.
Key Takeaways
The team’s key takeaways include:
- Instrumenting Multiple Teams: It took two to three months to identify where the problem was.
- Index Layout: The index layout is a crucial piece of software that needs to be optimized for the request pattern.
- Sharding Strategy: The sharding strategy needs to be aligned with what is being tried to be achieved.
Conclusion
Uber Eats’ engineering team successfully addressed the challenges of scaling its backend infrastructure by optimizing its search platform, sharding techniques, and data layout. Their solution resulted in a 50% decrease in latency and a significant improvement in recall.
As per InfoQ, the presentation by Janani Narayanan and Karthik Ramasamy provided valuable insights into Uber Eats’ technical challenges and solutions.
The company plans to continue optimizing its search platform and infrastructure to provide a seamless experience for its users.
In related news, Uber’s engineering team continues to work on improving its technology stack to support the growing demands of its users.
Uber’s search platform is built on Apache Lucene, and the company uses a typical Lambda architecture for ingestion.
The company’s use of geosharding and hex sharding techniques has significantly improved the efficiency of its queries.
Overall, Uber Eats’ success in scaling its backend infrastructure serves as a testament to the company’s commitment to innovation and customer satisfaction.
Uber’s technology stack is designed to support the company’s growing business, and the company continues to invest in its infrastructure to ensure a seamless experience for its users.
The company’s engineers work tirelessly to optimize its search platform and infrastructure, ensuring that Uber Eats remains a leading food delivery platform.
Uber’s commitment to innovation and customer satisfaction has enabled the company to achieve significant growth and success in the food delivery market.
The company’s use of advanced technologies, such as Apache Lucene and geosharding, has enabled it to improve the efficiency and scalability of its search platform.
As the food delivery market continues to evolve, Uber Eats is well-positioned to remain a leader in the industry, thanks to its commitment to innovation and customer satisfaction.
Uber’s engineers continue to work on improving its technology stack, ensuring that the company remains at the forefront of innovation in the food delivery market.
The company’s success in scaling its backend infrastructure serves as a testament to its commitment to innovation and customer satisfaction.
Uber Eats’ users can expect a seamless experience, thanks to the company’s ongoing investment in its infrastructure and technology stack.
The company’s use of advanced technologies has enabled it to improve the efficiency and scalability of its search platform, ensuring a seamless experience for its users.
Uber’s commitment to innovation and customer satisfaction has enabled it to achieve significant growth and success in the food delivery market.
The company’s engineers are dedicated to optimizing its search platform and infrastructure, ensuring that Uber Eats remains a leading food delivery platform.
Uber’s technology stack is designed to support the company’s growing business, and the company continues to invest in its infrastructure to ensure a seamless experience for its users.