33
Transforming Streaming with the Netflix API By Daniel Jacobson @daniel_jacobson djacobson@ netflix.com http://www.linkedin.com/in/danieljac obson

Netflix API : BAPI 2011 Presentation : SF

Embed Size (px)

DESCRIPTION

This is my presentation from the Business of APIs Conference in SF, held by Mashery (http://www.apiconference.com).This talk talks briefly about the history of the Netflix API, then goes into three main categories of scaling:1. Using the cloud to scale in size and internationally2. Using Webkit to scale application development in parallel to the flexibility afforded by the API3. Redesigning the API to improve performance and to downscale the infrastructure as the system scalesWhen viewing these slides, please note that they are almost entirely image-based, so I have added notes for each slide to detail the talking points.

Citation preview

Page 1: Netflix API : BAPI 2011 Presentation : SF

Transforming Streaming with the Netflix APIBy Daniel Jacobson@daniel_jacobson

[email protected]://www.linkedin.com/in/danieljacobson

Page 2: Netflix API : BAPI 2011 Presentation : SF

Netflix API

Page 3: Netflix API : BAPI 2011 Presentation : SF
Page 4: Netflix API : BAPI 2011 Presentation : SF
Page 5: Netflix API : BAPI 2011 Presentation : SF

Netflix API

Almost 23,000 flowers Hundreds of devices

Page 6: Netflix API : BAPI 2011 Presentation : SF

Personalization

EngineUser Info Movie

MetadataMovie Ratings

Similar Movies

API

Reviews A/B Test Engine

Page 7: Netflix API : BAPI 2011 Presentation : SF

Netflix API Requests by Audience

Netflix DevicesOpen API Developers

Page 8: Netflix API : BAPI 2011 Presentation : SF

Current Emphasis of Netflix

Netflix Devices

Page 9: Netflix API : BAPI 2011 Presentation : SF

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 10: Netflix API : BAPI 2011 Presentation : SF
Page 11: Netflix API : BAPI 2011 Presentation : SF

AWS Cloud

Page 12: Netflix API : BAPI 2011 Presentation : SF
Page 13: Netflix API : BAPI 2011 Presentation : SF
Page 14: Netflix API : BAPI 2011 Presentation : SF
Page 15: Netflix API : BAPI 2011 Presentation : SF
Page 16: Netflix API : BAPI 2011 Presentation : SF
Page 17: Netflix API : BAPI 2011 Presentation : SF

So, we have a scalable infrastructure… Now what?

Page 18: Netflix API : BAPI 2011 Presentation : SF

Webkit

• Dynamically update UIs

• Control the experience

• Share code across devices

• Run A/B tests

Page 19: Netflix API : BAPI 2011 Presentation : SF

AndroidiPhone

Page 20: Netflix API : BAPI 2011 Presentation : SF

And we have a flexible UI.Now what?

Page 21: Netflix API : BAPI 2011 Presentation : SF

Next Step… Redesign the API

Page 22: Netflix API : BAPI 2011 Presentation : SF

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: Netflix API : BAPI 2011 Presentation : SF

Growth of the Netflix API

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

Page 24: Netflix API : BAPI 2011 Presentation : SF
Page 25: Netflix API : BAPI 2011 Presentation : SF
Page 26: Netflix API : BAPI 2011 Presentation : SF

<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 27: Netflix API : BAPI 2011 Presentation : SF

{"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 28: Netflix API : BAPI 2011 Presentation : SF

Improve Efficiency of API Requests

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

Page 29: Netflix API : BAPI 2011 Presentation : SF
Page 30: Netflix API : BAPI 2011 Presentation : SF
Page 31: Netflix API : BAPI 2011 Presentation : SF
Page 32: Netflix API : BAPI 2011 Presentation : SF
Page 33: Netflix API : BAPI 2011 Presentation : SF

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

Daniel [email protected]

@daniel_jacobsonhttp://www.linkedin.com/in/danieljacobson