Written in collaboration with Jason Wang, Senior Software Engineer, Uber
Uber has worked with OAG since 2016 to help coordinate flight tracking for its riders and drivers at select airports across the United States with its product, Uber Reserve. With Uber Reserve, passengers can pre-schedule their airport pick-up up to 90 days in advance. The rider will be notified in the Uber app of a delay or potential early arrival. The technology, powered by OAG’s schedule and status data, then adjusts the reservation pick-up time automatically, and informs the driver. This way, the driver is ready and waiting the moment a rider lands. In addition to this, Status Data also helps Uber to manage demand for their services, for example if multiple inbound flights are delayed and arriving at the same time, Uber would be able to add additional resources quickly.
Due to its success in 2023, Uber expanded the availability of the service across other mobility markets Uber operates in globally.
Uber was accessing two of OAG’s original APIs – one for forward-looking flight schedule data (FlightView XML) and the second for near real-time flight status updates (FlightView Batch).
Now, Uber has migrated to OAG’s cloud enabled flight change detection and notification platform, Flight Info Alerts, to bootstrap its foundational operations and gather baseline data for new airports they want to support on the Uber Reserve platform. Flight Info Alerts includes both status and schedules, so they have been able to take advantage of a single source of truth and one platform as opposed to multiple.
This technical paper explains how Uber’s migration to OAG’s Flight Info Alerts is setting up the company for a more robust and scalable global operation. It will also explore some previous challenges Uber faced, how Uber implemented OAG’s solution, results achieved so far and forward-looking plans.
MOTIVATION
For Uber Reserve to function, two major aspects of flight information needed to be available and work seamlessly.
- Validating whether the rider entered the correct flight details, using schedules data to verify this.
- Tracking any changes, delays or cancellations for their flight from the departure window (52hrs before departure), to once they have landed.
With the legacy APIs, the original implementation for Uber’s storage used a table schema with a primary key, which was generated using what OAG defined as a unique flight. This definition is composed of flight attributes such as airport codes, departure/arrival datetime, etc., which were directly derived from OAG responses.
However, there were a number of flights that changed in between the data ingestion lookahead windows, which “created” multiple flights out of a single flight on Uber’s backend.
HERE'S HOW THE LEGACY APIS WORKED
FVXML API was integrated as part of the flight schedule data ingestion flow, providing schedules for 350+ days ahead. The Uber backend had daily scheduled jobs to check the latest schedule changes that called the FVXML API with multiple lookahead windows, at 7/30/180 days before departure. The flight schedule data was then processed with minimal transformation and written to Uber’s storage.
OAG’s FVBatch Data was then also integrated as part of the flight tracking flow where Uber called FVBatch’s GetFlightChanges API to retrieve status updates for flights departing in the [-2, +24] hour time window. These status records were processed and used to apply changes to the flight schedules in Uber’s storage from the original data ingestion flow, to ensure they always had the most up to date information.
Uber needed a data field that had a per-minute scheduled workflow that is available to call in both APIs, that had a guaranteed 1:1 relationship with a single flight for their product to scale.
Through close collaboration and scenario planning, Uber and OAG discovered that the current set up meant they weren’t able to make any changes to what existed on the Uber Reserve app with the existing APIs. Both teams were eager to solve the problem and improve the Uber Reserve experience, with OAG proposing its cloud enabled alerts platform for Uber to consider. Flight Info Alerts would ultimately ensure that wherever an Uber user is going to in the world, that Uber can create a seamless and consistent user experience anywhere from reservation to pick-up.
MIGRATION PROJECT
Through Flight Info Alerts, OAG has a standard integration pattern with Azure that works well, however due to Uber’s operational infrastructure, the standard integration pattern wasn’t possible. To deliver the right solution for Uber, and to ensure its success and scalability, the migration project involved a departure from conventional approaches.
KAFKA AND FLIGHT INFO ALERTS
A key implementation requirement was to maintain the ordering of the alerts and ensure the latest status updates were reflected. Apache Kafka was identified as an option to address these requirements perfectly. Whilst Kafka does not guarantee in-order consumption, each Kafka message contains an offset value that aligns with OAG’s sequenceNumber data field, which Uber could use to guarantee correctness of data.
All Azure Event Hubs that OAG provisions for Flight Info Alerts customers have the Apache Kafka endpoint. Users can connect to the Apache Kafka endpoint via the Kafka protocol, which is enabled by default to increase connectivity options for customers, like Uber, and can be used ‘out of the box’ without any code changes.
For example, Uber can update the connection string in configurations to point to the Kafka endpoint exposed by the event hub, instead of pointing to a Kafka cluster. This allows Uber to easily collect data from OAG’s Event Hubs directly into their systems using connection strings. Using Kafka on top of the Azure stack, OAG developers collaborated with Uber to understand how to facilitate the migration in a way that worked seamlessly end-to-end for Uber.
Uber set up a new internal application within the Uber network fabric that could connect to the publicly available endpoint from the Kafka-enabled Event Hub set up by OAG and consume the alerts instantly. This Kafka consumer connection was implemented using IBM’s Sarama open-source library.
The new checkpointing paradigm available on the Flight Info Alert platform, enabled Uber to implement a consumer-based solution that was highly available, reliable, and scalable.
Checkpointing in an Event Hub allows customers, such as Uber, to understand the stream position of every update that we send to our customers. This means that any rare situations of downtime, or other interruptions in the flow of messages, users would be able to replay events from the last interruption, instead of starting from the beginning all over again or missing those updates altogether.
RESULTS
Previously, Uber had to call both APIs every minute to get both forward looking schedules and real-time flight updates. Now with Alerts, the process has shifted from pulling data every minute to a more proactive, push-based system configured based on their requirements. With the push notifications coming from OAG, all Uber needs to do is “listen” to the events and make updates in their systems accordingly.
Since implementation, Uber has developed new, modern products with specific features, and has generated their own internal flight IDs based on flight attributes recommended by OAG that track a flight from schedule to completion. OAG’s team used their aviation data domain expertise and knowledge of the systems to advise Uber about how schedules and status data intersect and the general behavior of updates, ie. volume of updates Uber can expect per flight, what happens when there are changes, and where they are from.
Part of this successful migration is due to OAG’s Metis data platform, which has unique IDs for each flight that are connected across its data sets such as schedules and status. This makes it viable for Uber and other customers who need to track one flight from schedule publish right through to arrival and everything in between. In the legacy APIs, customers would have had to deduce this in a more complex and time-consuming way based on things like carrier code, flight number, etc. Thanks to the Unique Flight ID available in our cloud products, and everything being in the one platform, it all connects together.
This innovative approach with Alerts has simplified operations, so Uber can more efficiently test and iterate with smaller airports across any given region, and then quickly expand the scale of Uber Reserve into other countries once a seamless user experience and product market fit is achieved.
Working across time zones is always challenging, but the flexibility and availability of OAG’s global team made it work, through consistent email updates as well as knowing when to set up calls to discuss more complex issues. A huge contributor to the successful migration was OAG’s partnership mentality, explaining the changes in the data between the legacy and new products, in order to ensure feature parity was maintained on Uber’s end.
Jason Wang, Senior Software Engineer, Uber
Using the same data, Uber is also able to communicate to drivers when an airport is expected to be the busiest. This enables drivers to make their own decisions on when to arrive at the airport or within the city.
Additionally, Alerts lowers Uber’s compute power and storage costs. For example, instead of Uber needing to check every flight schedule across the world, Uber only needs to limit that calculation to when an alert is received. In addition, this also allows Uber to have near real time alerts triggered vs being limited to when the data is pulled.
Flight Info Alerts has given Uber access to more detailed /richer flight information, including gate and baggage claim information, as well as private jets information. In addition to this, Flight Info Alerts offers the unique capability to link the schedule and status of a flight together, which is something that wasn’t available in Uber’s previous products. Flight Info Alerts also doesn’t rely on on-prem servers, and is fully cloud hosted, increasing speed and reliability. This enables the tech team agility and flexibility to further differentiate and evolve the Uber Reserve experience in the future.
WHAT'S NEXT
The improved accessibility and integration of flight status and schedules data into Uber Reserve will facilitate future innovation, partnerships, and expansion into new markets. For example, Uber is now booking flights in the UK in partnership with travel app Hopper, and offers unique peace of mind products to make air travel as stress free as possible. Price freeze, flight disruption guarantee, cancel for any reason and VIP support are now on offer through the Uber App.
Uber Reserve has seen significant growth, particularly at airports across the globe. At launch, Uber offered Reserve at just 24 Airports across the U.S and Canada, Uber Reserve is now available at 111+ airports including Amsterdam (AMS), Las Vegas (LAS), London (LHR) and more. In addition to this, Uber is also planning to launch 300+ new locations over the next few years.
Uber has big goals for the future and have no plans of slowing down any time soon. From utilizing AI/ML in their products, to having the vision of being the number 1 super app in the world, we’re excited to continue watching their growth and being their preferred partner for aviation data.