70
Building Moving Experiences Alexander Graebe Developer Relations Lead

Alexander Graebe

Embed Size (px)

Citation preview

Page 1: Alexander Graebe

Building Moving Experiences

Alexander Graebe

Developer Relations Lead

Page 2: Alexander Graebe

MORE THAN 2 BILLION TRIPS

72+COUNTRIES

470+CITIES

1.5M+DRIVER PARTNERS

WORLDWIDE

Page 3: Alexander Graebe

THE UBER PLATFORM VISION

BUILD MOVING EXPERIENCES

Page 4: Alexander Graebe

In 2014 we first released the Uber API

Page 5: Alexander Graebe

Today, leading global brands elevate their experience with Uber

Page 6: Alexander Graebe

OUR APIS …

Page 7: Alexander Graebe
Page 8: Alexander Graebe

PICKUP DESTINATION

Page 9: Alexander Graebe

PICKUP DESTINATION

Page 10: Alexander Graebe

PICKUP DESTINATION

Page 11: Alexander Graebe

PICKUP DESTINATION

Page 12: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE POST RIDE

Help users make a decision

Execute user intents

Enhance user experience

Analyze and gain insights

Page 13: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE POST RIDE

Help users make a decision

Execute user intents

Enhance user experience

Analyze and gain insights

Page 14: Alexander Graebe

PICKUPINTENT TO RIDE

/products /estimates/price /estimates/time

Ride Options

Page 15: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE POST RIDE

Help users make a decision

Execute user intents

Enhance user experience

Analyze and gain insights

Page 16: Alexander Graebe

PICKUPINTENT TO RIDE

Ride Request Button

Ride Request Widget

Deep Links /request

Ride Request

Page 17: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE POST RIDE

Help users make a decision

Execute user intents

Enhance user experience

Analyze and gain insights

Page 18: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE

Webhooks /current

all_trips scope

POST RIDE

Page 19: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE

Help users make a decision

Execute user intents

Enhance user experience

Analyze and gain insights

POST RIDE

Page 20: Alexander Graebe

/history {id}/receipt

/me

Identity History

POST RIDEDESTINATION

Page 21: Alexander Graebe

/partners/trips/partners/me /partner/payments /partner/tax-summary

PaymentsIdentity History

POST RIDEDESTINATION

Page 22: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE POST RIDE

/deliveries/[id]

Delivery Details

/deliveries/deliveries/quote

Delivery Options Delivery Request

Page 23: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE POST RIDE

Help users make a decision

Execute user intents

Enhance user experience

Analyze and gain insights

Page 24: Alexander Graebe

2GIS

Deep Links

Page 25: Alexander Graebe

2GIS

/products

Page 26: Alexander Graebe

2GIS

/estimates/price

Page 27: Alexander Graebe

2GIS

/estimates/time

Page 28: Alexander Graebe
Page 29: Alexander Graebe

PICKUP DESTINATIONINTENT TO RIDE

Webhooks /current

all_trips scope

POST RIDE

Page 30: Alexander Graebe

POINT A POINT B

2,000,000,000 TRIPS

THE TRIP

Page 31: Alexander Graebe

POINT A POINT B

20 MINUTES PER TRIP~THE TRIP

Page 32: Alexander Graebe

POINT A POINT B

40,000,000,000 MINUTES OF FREE TIME

~

THE TRIP

Page 33: Alexander Graebe

The ultimate in-car entertainment system is the device in your hand.

Page 34: Alexander Graebe

POINT A POINT B

CONTEXT MATTERS

The Trip Experiences API can tell you…

When the rider has free time

How much free time they have

Where they’re coming from

Where they’re going

Page 35: Alexander Graebe

IMAGINE …

Page 36: Alexander Graebe

INSIGHTS FOR, AND OFFERS AROUND, YOUR DESTINATION

LOCAL GUIDES

36

Page 37: Alexander Graebe
Page 38: Alexander Graebe

10 MINUTES OF MUSIC OR VIDEO FOR A 10 MINUTE TRIP

NEWS & ENTERTAINMENT

38

Page 39: Alexander Graebe

Get up-to-date while you're on the goRADIO

Page 40: Alexander Graebe

On-TripExperience

Off-TripExperience

Page 41: Alexander Graebe

TURN ON THE HEAT WHEN YOU’RE APPROACHING HOME

INTERNET OF THINGS

41

Page 42: Alexander Graebe

/partners/trips/partners/me /partner/payments /partner/tax-summary

PaymentsIdentity History

POST RIDEPOINT B

Page 43: Alexander Graebe

MAKING YOUR LIFE EASIER …

Page 44: Alexander Graebe

Auth your users via the native Uber app

No more username & password

One tap and your app can start requesting rides

Single Sign OnAuth via Uber

Page 45: Alexander Graebe

Just set your ride parameters and let the Uber app handle the ride experience

Existing users will feel right at home

Keep the focus on your app; let us handle the ride

Deep LinksQuick & easy

Page 46: Alexander Graebe

Highly configurable buttons let you get started easily

Login Button lets you auth users using the method you want (Native, Authorization Code Grant, or Implicit Grant)

Ride Request Button allows you to request a ride using Deep Links, the Ride Request Widget, or custom API logic

Uber ButtonsRide Request Button & Login Button

Page 47: Alexander Graebe

Provide the full Uber experience without ever leaving your app

An entirely embedded experience, from request to drop off

Ride Request WidgetExperience Uber without the app

Page 48: Alexander Graebe

BACKEND HIGHLIGHTS

Page 49: Alexander Graebe

Schemaless uses an append-only sparse three dimensional persistent hash map. A datastore developed by Uber with 5 goals in mind:

1) Linear scale - more storage and decreased response times

2) Writability - no middleware for fallback or retry

3) Notifications - triggers for downstream dependencies

4) Secondary Indexes - just like in Postgres to search for trips

5) Operational Trust - expert knowledge for mission-critical data

DATA STORAGE WITH SCHEMA LESS

Page 50: Alexander Graebe

Trip details are stored as JSON blobs with versioning

DATA STORAGE WITH SCHEMA LESS

Page 51: Alexander Graebe

MICRO-SERVICES

Moving from a monolith solution to SOA created challenges related to

obviousness, safety, and reliance. Our SOA architecture had to enable us for …

1) Discoverability - finding the right service out of 300+ should be trivial

2) Client Libraries - building SDKs for encapsulated services should be easy

3) Language - we need to have an architecture that is language-agnostic

4) Customizable - timeouts and retry policies are required and should be tunable

5) Efficiency - testing and development of new services with less overhead

Page 52: Alexander Graebe

THRIFT AS IDL-BASED ENCODING PROTOCOL

Thrift forces service owners to publish strict interface definitions. Encoding/Decoding

is efficient, compression is good, and it unifies JSON blobs for Schemaless.

Page 53: Alexander Graebe

DAILY DEPLOYMENT WITH UDEPLOY

Consistent builds for services, zero downtime upgrades, automated error detection

Page 54: Alexander Graebe

USING UBER CONTEXT

Page 55: Alexander Graebe
Page 56: Alexander Graebe

Connect your user

Detect when a user is on a ride

Get the Uber Context

Use the context to enhance your app!

Page 57: Alexander Graebe

Create an app in the Uber Developer Dashboard

Scroll down, find the “Webhook URL” field and enter a URL that will receive webhooks from the API

Before we start:

Page 58: Alexander Graebe

Connect your user

Detect when a user is on a ride

Get the Uber Context

Use the context to enhance your app!

Page 59: Alexander Graebe

Let them securely sign in with their Uber account username and password

• OAuth 2.0 • Single Sign On

Connect your user

Page 60: Alexander Graebe

Connect your user

Detect when a user is on a ride

Get the Uber Context

Use the context to enhance your app!

Page 61: Alexander Graebe

You’ll receive a webhook when their ride status changes.

Use the `user_id` to figure out which one of your users is on a ride.

Detect when a user is on a ride

Page 62: Alexander Graebe

Connect your user

Detect when a user is on a ride

Get the Uber Context

Use the context to enhance your app!

Page 63: Alexander Graebe

Get information about your user’s ride!

• Pickup/destination  location • Going home or work • Uber Product Type • ETA / Duration • and more!

Get the Uber Context

Page 64: Alexander Graebe

Connect your user

Detect when a user is on a ride

Get the Uber Context

Use the context to enhance your app!

Page 65: Alexander Graebe

On-TripExperience

Off-TripExperience

Page 66: Alexander Graebe
Page 67: Alexander Graebe

The challenge is not technology…

It’s imagination.

Page 68: Alexander Graebe

developer.uber.com

Page 69: Alexander Graebe

@uberdevelopers medium.com/uber-developers

Thank You!

Alexander Graebe Developer Relations Lead [email protected]

Page 70: Alexander Graebe

Q & A