apis for internal audiences - netflix - app dev conference

34
APIs for an Internal Audience By Daniel Jacobson @daniel_jacobson [email protected] From the App Dev Conferen Santa Clara, CA October 27, 2011

Upload: daniel-jacobson

Post on 15-Jan-2015

2.280 views

Category:

Technology


3 download

DESCRIPTION

API programs, typically thought of as a public program to see what public developer communities can build with a company's data, are becoming more and more critical to the success of mobile and device strategies. This presentation takes a look at Netflix's and NPR's strategies that lead to tremendous growth and discusses how Netflix plans to take this internal API strategy to the next level.

TRANSCRIPT

Page 1: APIs for Internal Audiences - Netflix - App Dev Conference

APIs for an Internal AudienceBy Daniel Jacobson@daniel_jacobson

[email protected]

From the App Dev ConferenceSanta Clara, CAOctober 27, 2011

Page 2: APIs for Internal Audiences - Netflix - App Dev Conference

NPR API Requests by Audience

Page 3: APIs for Internal Audiences - Netflix - App Dev Conference
Page 4: APIs for Internal Audiences - Netflix - App Dev Conference

The NPR API Powered Products

Page 5: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API Requests by Audience

Page 6: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API

Page 7: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API

Page 8: APIs for Internal Audiences - Netflix - App Dev Conference

How does this translate into value?

Page 9: APIs for Internal Audiences - Netflix - App Dev Conference

NPR API : Page View Growth

Page 10: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API : Requests Per Month

Jan-10 Feb-10 Mar-10 Apr-10 May-10 Jun-10 Jul-10 Aug-10 Sep-10 Oct-10 Nov-10 Dec-10 Jan-11 Feb-11 Mar-11 Apr-11 May-11 Jun-11 Jul-11 -

5

10

15

20

25

30

35

Requ

ests

in B

illio

ns

Page 11: APIs for Internal Audiences - Netflix - App Dev Conference

What does all of this mean?

Page 12: APIs for Internal Audiences - Netflix - App Dev Conference

Public APIs

Private APIs

Page 13: APIs for Internal Audiences - Netflix - App Dev Conference
Page 14: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API Requests by Audience

Page 15: APIs for Internal Audiences - Netflix - App Dev Conference
Page 16: APIs for Internal Audiences - Netflix - App Dev Conference

Personalization

EngineUser Info Movie

MetadataMovie Ratings

Similar Movies Reviews A/B Test

Engine

Page 17: APIs for Internal Audiences - Netflix - App Dev Conference

Personalization

EngineUser Info Movie

MetadataMovie Ratings

Similar Movies

API

Reviews A/B Test Engine

Page 18: APIs for Internal Audiences - Netflix - App Dev Conference

Personalization

EngineUser Info Movie

MetadataMovie Ratings

Similar Movies

API

Reviews A/B Test Engine

Page 19: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API

Page 20: APIs for Internal Audiences - Netflix - App Dev Conference

Redesigning the Netflix API

Page 21: APIs for Internal Audiences - Netflix - App Dev Conference

Key Goals of API Redesign

• Improve performance of devices– Reduce API transactions– Reduce payload size

• Improve ability to rapidly innovate on devices– Put the API in the hands of the UI teams

Page 22: APIs for Internal Audiences - Netflix - App Dev Conference

Netflix API : Requests Per Month

Jan-10 Feb-10 Mar-10 Apr-10 May-10 Jun-10 Jul-10 Aug-10 Sep-10 Oct-10 Nov-10 Dec-10 Jan-11 Feb-11 Mar-11 Apr-11 May-11 Jun-11 Jul-11 -

5

10

15

20

25

30

35

Requ

ests

in B

illio

ns

Page 23: APIs for Internal Audiences - Netflix - App Dev Conference

Growth of the Netflix API

Over 1 Billion requests per day(Peaks at about 20,000 requests per second)

Page 24: APIs for Internal Audiences - Netflix - App Dev Conference
Page 25: APIs for Internal Audiences - Netflix - App Dev Conference

<catalog_titles> <number_of_results>1140</number_of_results> <start_index>0</start_index> <results_per_page>10</results_per_page> <catalog_title> <id>http://api.netflix.com/catalog/titles/movies/60021896</id><title short="Star" regular="Star"></title> <box_art small="http://alien2.netflix.com/us/boxshots/tiny/60021896.jpg"

medium="http://alien2.netflix.com/us/boxshots/small/60021896.jpg" large="http://alien2.netflix.com/us/boxshots/large/60021896.jpg"></box_art>

<link href="http://api.netflix.com/catalog/titles/movies/60021896/synopsis" rel="http://schemas.netflix.com/catalog/titles/synopsis" title="synopsis"></link>

<release_year>2001</release_year> <category scheme="http://api.netflix.com/catalog/titles/mpaa_ratings" label="NR"></category> <category scheme="http://api.netflix.com/categories/genres" label="Foreign"></category> <link href="http://api.netflix.com/catalog/titles/movies/60021896/cast"

rel="http://schemas.netflix.com/catalog/people.cast" title="cast"></link><link href="http://api.netflix.com/catalog/titles/movies/60021896/screen_formats" rel="http://schemas.netflix.com/catalog/titles/screen_formats" title="screen formats"></link <link href="http://api.netflix.com/catalog/titles/movies/60021896/languages_and_audio" rel="http://schemas.netflix.com/catalog/titles/languages_and_audio" title="languages and audio"></link> <average_rating>1.9</average_rating> <link href="http://api.netflix.com/catalog/titles/movies/60021896/similars" rel="http://schemas.netflix.com/catalog/titles.similars" title="similars"></link> <link href="http://www.netflix.com/Movie/Star/60021896" rel="alternate" title="webpage"></link> </catalog_title> <catalog_title> <id>http://api.netflix.com/catalog/titles/movies/17985448</id><title short="Lone Star" regular="Lone Star"></title> <box_art small="http://alien2.netflix.com/us/boxshots/tiny/17985448.jpg" medium="http://alien2.netflix.com/us/boxshots/small/17985448.jpg" large=""></box_art> <link href="http://api.netflix.com/catalog/titles/movies/17985448/synopsis" rel="http://schemas.netflix.com/catalog/titles/synopsis" title="synopsis"></link> <release_year>1996</release_year> <category scheme="http://api.netflix.com/catalog/titles/mpaa_ratings" label="R"></category> <category scheme="http://api.netflix.com/categories/genres" label="Drama"></category><link href="http://api.netflix.com/catalog/titles/movies/17985448/awards" rel="http://schemas.netflix.com/catalog/titles/awards" title="awards"></link> <link href="http://api.netflix.com/catalog/titles/movies/17985448/format_availability" rel="http://schemas.netflix.com/catalog/titles/format_availability" title="formats"></link> <link href="http://api.netflix.com/catalog/titles/movies/17985448/screen_formats" rel="http://schemas.netflix.com/catalog/titles/screen_formats" title="screen formats"></link> <link href="http://api.netflix.com/catalog/titles/movies/17985448/languages_and_audio" rel="http://schemas.netflix.com/catalog/titles/languages_and_audio" title="languages and audio"></link> <average_rating>3.7</average_rating> <link href="http://api.netflix.com/catalog/titles/movies/17985448/previews" rel="http://schemas.netflix.com/catalog/titles/previews" title="previews"></link> <link href="http://api.netflix.com/catalog/titles/movies/17985448/similars" rel="http://schemas.netflix.com/catalog/titles.similars" title="similars"></link> <link href="http://www.netflix.com/Movie/Lone_Star/17985448" rel="alternate" title="webpage"></link> </catalog_title></catalog_titles>

Page 26: APIs for Internal Audiences - Netflix - App Dev Conference

{"catalog_title":{"id":"http://api.netflix.com/catalog/titles/movies/60034967","title":{"title_short":"Rosencrantz and Guildenstern Are Dead","regular":"Rosencrantz and Guildenstern Are Dead"},"maturity_level":60,"release_year":"1990","average_rating":3.7,"box_art":{"284pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/ghd/60034967.jpg","110pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/large/60034967.jpg","38pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/tiny/60034967.jpg","64pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/small/60034967.jpg","150pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/150/60034967.jpg","88pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/88/60034967.jpg","124pix_w":"http://cdn-7.nflximg.com/en_US/boxshots/124/60034967.jpg"},"language":"en","web_page":"http://www.netflix.com/Movie/Rosencrantz_and_Guildenstern_Are_Dead/60034967","tiny_url":"http://movi.es/ApUP9"},"meta":{"expand":["@directors","@bonus_materials","@cast","@awards","@short_synopsis","@synopsis","@box_art","@screen_formats","@"links":{"id":"http://api.netflix.com/catalog/titles/movies/60034967","languages_and_audio":"http://api.netflix.com/catalog/titles/movies/60034967/languages_and_audio","title":"http://api.netflix.com/catalog/titles/movies/60034967/title","screen_formats":"http://api.netflix.com/catalog/titles/movies/60034967/screen_formats","cast":"http://api.netflix.com/catalog/titles/movies/60034967/cast","awards":"http://api.netflix.com/catalog/titles/movies/60034967/awards","short_synopsis":"http://api.netflix.com/catalog/titles/movies/60034967/short_synopsis","box_art":"http://api.netflix.com/catalog/titles/movies/60034967/box_art","synopsis":"http://api.netflix.com/catalog/titles/movies/60034967/synopsis","directors":"http://api.netflix.com/catalog/titles/movies/60034967/directors","similars":"http://api.netflix.com/catalog/titles/movies/60034967/similars","format_availability":"http://api.netflix.com/catalog/titles/movies/60034967/format_availability"}}}

Page 27: APIs for Internal Audiences - Netflix - App Dev Conference

Improve Efficiency of API Requests

Could it have been 100 million requests per day? Or less?(Assuming everything else remained the same)

Page 28: APIs for Internal Audiences - Netflix - App Dev Conference

AUTH

DEVICE SETUP

TIME SERVICE

INSTANT QUEUE

LISTS

LIST ( i )

TITLES

LOGGING

CLIENT APPS API SERVER

Page 29: APIs for Internal Audiences - Netflix - App Dev Conference

CUSTOMENDPOINT

PER DEVICE

CLIENT APPS API SERVER

APISCRIPTING

TIER

AUTH

DEVICE SETUP

TIME SERVICE

INSTANT QUEUE

LISTS

LIST ( i )

TITLES

LOGGING

Page 30: APIs for Internal Audiences - Netflix - App Dev Conference

Courtesy of John Musser, ProgrammableWeb

API Billionaires Club

5 billion API calls / day (April 2010)

3.2 billion API-delivered stories / month (October

2011)

5 billion API calls / day (October 2009)

8 billion API calls / month (Q3 2009)

3 billion API calls / month (March 2009)

13 billion API calls / day (May 2011)

Over 260 billion objects stored in S3 (January 2011)

1 billion API calls / day (October 2011)

Page 31: APIs for Internal Audiences - Netflix - App Dev Conference

Courtesy of John Musser, ProgrammableWeb

API Billionaires Club

5 billion API calls / day (April 2010)

3.2 billion API-delivered stories / month (October

2011)

5 billion API calls / day (October 2009)

8 billion API calls / month (Q3 2009)

3 billion API calls / month (March 2009)

13 billion API calls / day (May 2011)

Over 260 billion objects stored in S3 (January 2011)

1 billion API calls / day (October 2011)

Page 32: APIs for Internal Audiences - Netflix - App Dev Conference
Page 33: APIs for Internal Audiences - Netflix - App Dev Conference
Page 34: APIs for Internal Audiences - Netflix - App Dev Conference

If you are interested in helping us solve these problems, please contact me at:

Daniel [email protected]

@daniel_jacobsonhttp://www.linkedin.com/in/danieljacobsonhttp://www.slideshare.net/danieljacobson