SlideShare a Scribd company logo
APIs for an Internal Audience
       By Daniel Jacobson
        @daniel_jacobson
     djacobson@netflix.com

                        From the App Dev Conference
                        Santa Clara, CA
                        October 27, 2011
NPR API Requests by Audience
APIs for Internal Audiences - Netflix - App Dev Conference
The NPR API Powered Products
Netflix API Requests by Audience
Netflix
 API
Netflix
 API
How does this translate into value?
NPR API : Page View Growth
Netflix API : Requests Per Month
                       35



                       30
Requests in Billions




                       25



                       20



                       15



                       10



                        5



                       -
                           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
What does all of this mean?
Public APIs




              Private APIs
APIs for Internal Audiences - Netflix - App Dev Conference
Netflix API Requests by Audience
APIs for Internal Audiences - Netflix - App Dev Conference
Personaliz
                          Movie     Movie     Similar             A/B Test
  ation      User Info                                  Reviews
 Engine
                         Metadata   Ratings   Movies               Engine
API




Personaliz
                          Movie     Movie     Similar             A/B Test
  ation      User Info                                  Reviews
 Engine
                         Metadata   Ratings   Movies               Engine
API




Personaliz
                          Movie     Movie     Similar             A/B Test
  ation      User Info                                  Reviews
 Engine
                         Metadata   Ratings   Movies               Engine
Netflix
 API
Redesigning the Netflix API
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
Netflix API : Requests Per Month
                       35



                       30
Requests in Billions




                       25



                       20



                       15



                       10



                        5



                       -
                           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
Growth of the Netflix API




 Over 1 Billion requests per day
   (Peaks at about 20,000 requests per second)
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>
{"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"}
}}
Improve Efficiency of API Requests




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

                            DEVICE
                            SETUP

                             TIME
                            SERVICE

                            INSTANT
                             QUEUE


                            LISTS


                           LIST ( i )


                            TITLES

                           LOGGING
CLIENT APPS          API SERVER
                                   AUTH
                 API
                                   DEVICE
              SCRIPTING            SETUP
                 TIER               TIME
                                   SERVICE

                CUSTOM             INSTANT
               ENDPOINT             QUEUE
                  PER
                 DEVICE            LISTS


                                  LIST ( i )


                                   TITLES

                                  LOGGING
API Billionaires Club
13 billion API calls / day (May 2011)
Over 260 billion objects stored in S3 (January 2011)
5 billion API calls / day     (April 2010)



5 billion API calls / day     (October 2009)



1 billion API calls / day (October 2011)

8 billion API calls / month (Q3 2009)

3.2 billion API-delivered stories / month              (October
2011)

3 billion API calls / month (March 2009)


                       Courtesy of John Musser, ProgrammableWeb
API Billionaires Club
13 billion API calls / day (May 2011)
Over 260 billion objects stored in S3 (January 2011)
5 billion API calls / day     (April 2010)



5 billion API calls / day     (October 2009)



1 billion API calls / day (October 2011)

8 billion API calls / month (Q3 2009)

3.2 billion API-delivered stories / month              (October
2011)

3 billion API calls / month (March 2009)


                       Courtesy of John Musser, ProgrammableWeb
APIs for Internal Audiences - Netflix - App Dev Conference
APIs for Internal Audiences - Netflix - App Dev Conference
If you are interested in helping us solve these
       problems, please contact me at:

           Daniel Jacobson
          djacobson@netflix.com
             @daniel_jacobson
http://www.linkedin.com/in/danieljacobson
 http://www.slideshare.net/danieljacobson

More Related Content

PPTX
Techniques for Scaling the Netflix API - QCon SF
PPTX
Redesigning the Netflix API - OSCON
PPTX
API Revolutions : Netflix's API Redesign
PPTX
Set Your Content Free! : Case Studies from Netflix and NPR
PPTX
Scaling the Netflix API
PPTX
Netflix API : BAPI 2011 Presentation : SF
PPTX
Netflix API: Keynote at Disney Tech Conference
PPTX
Presentation to ESPN about the Netflix API
Techniques for Scaling the Netflix API - QCon SF
Redesigning the Netflix API - OSCON
API Revolutions : Netflix's API Redesign
Set Your Content Free! : Case Studies from Netflix and NPR
Scaling the Netflix API
Netflix API : BAPI 2011 Presentation : SF
Netflix API: Keynote at Disney Tech Conference
Presentation to ESPN about the Netflix API

What's hot (20)

PPTX
Maintaining the Netflix Front Door - Presentation at Intuit Meetup
PPTX
Scaling the Netflix API - OSCON
PPTX
Netflix API - Presentation to PayPal
PPTX
Netflix API
PPTX
The future-of-netflix-api
PPTX
Scaling the Netflix API - From Atlassian Dev Den
PPTX
History and Future of the Netflix API - Mashery Evolution of Distribution
PPTX
Top 10 Lessons Learned from the Netflix API - OSCON 2014
PPTX
Netflix API - Separation of Concerns
PPTX
Maintaining the Front Door to Netflix
PPTX
Why API? - Business of APIs Conference
PPTX
Huge: Running an API at Scale
PPTX
API Trends: What to expect in 2012
PPTX
API Design - When to buck the trend (Webcast)
PDF
Migrating Automation Tests to Postman Monitors and ROI
PPTX
Essential API Facade Patterns - Composition (Episode 1)
PPTX
The API Facade Pattern: Overview - Episode 1
PPTX
The API Facade Pattern: Technology - Episode 3
PPTX
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
PPT
W2E NY 2010 NPR Everywhere
Maintaining the Netflix Front Door - Presentation at Intuit Meetup
Scaling the Netflix API - OSCON
Netflix API - Presentation to PayPal
Netflix API
The future-of-netflix-api
Scaling the Netflix API - From Atlassian Dev Den
History and Future of the Netflix API - Mashery Evolution of Distribution
Top 10 Lessons Learned from the Netflix API - OSCON 2014
Netflix API - Separation of Concerns
Maintaining the Front Door to Netflix
Why API? - Business of APIs Conference
Huge: Running an API at Scale
API Trends: What to expect in 2012
API Design - When to buck the trend (Webcast)
Migrating Automation Tests to Postman Monitors and ROI
Essential API Facade Patterns - Composition (Episode 1)
The API Facade Pattern: Overview - Episode 1
The API Facade Pattern: Technology - Episode 3
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
W2E NY 2010 NPR Everywhere
Ad

Viewers also liked (6)

PDF
Canary Analyze All the Things
PPTX
Netflix Edge Engineering Open House Presentations - June 9, 2016
PPTX
Maintaining the Front Door to Netflix : The Netflix API
PPTX
From SOA to MSA
PPTX
MicroServices at Netflix - challenges of scale
PPTX
Culture
Canary Analyze All the Things
Netflix Edge Engineering Open House Presentations - June 9, 2016
Maintaining the Front Door to Netflix : The Netflix API
From SOA to MSA
MicroServices at Netflix - challenges of scale
Culture
Ad

Similar to APIs for Internal Audiences - Netflix - App Dev Conference (20)

PDF
Business of APIs Conference 2011 - Netflix
PPTX
AWS Re:Invent 2012 - Chaos Monkey & The Netflix Simian Army
PPTX
API Strategy Evolution at Netflix
PDF
Evolution of the Netflix API
PDF
netflix-real-time-data-strata-talk
PDF
Netflix on Cloud - combined slides for Dev and Ops
PPTX
Move Fast;Stay Safe:Developing & Deploying the Netflix API
PPTX
Open API Strategy, by Sensedia
PPTX
Mike Taulty OData (NxtGen User Group UK)
ZIP
Performance and Fault Tolerance for the Netflix API
PDF
Silverlight Document Search Engine
PDF
Hacking Netflix - Netflix APIs
PPTX
A great api is hard to find
PDF
Business of APIs Conference 2011 - ProgrammableWeb
PDF
Jeff Barr Amazon Services Cloud Computing
PDF
Gdsc IIIT Surat Orientation 2022.pdf
PDF
Building a Great Web API - Evan Cooke - QCON 2011
PPTX
Think like a Platform - EDC 2012
PDF
Node Summit 2012
PDF
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
Business of APIs Conference 2011 - Netflix
AWS Re:Invent 2012 - Chaos Monkey & The Netflix Simian Army
API Strategy Evolution at Netflix
Evolution of the Netflix API
netflix-real-time-data-strata-talk
Netflix on Cloud - combined slides for Dev and Ops
Move Fast;Stay Safe:Developing & Deploying the Netflix API
Open API Strategy, by Sensedia
Mike Taulty OData (NxtGen User Group UK)
Performance and Fault Tolerance for the Netflix API
Silverlight Document Search Engine
Hacking Netflix - Netflix APIs
A great api is hard to find
Business of APIs Conference 2011 - ProgrammableWeb
Jeff Barr Amazon Services Cloud Computing
Gdsc IIIT Surat Orientation 2022.pdf
Building a Great Web API - Evan Cooke - QCON 2011
Think like a Platform - EDC 2012
Node Summit 2012
OSCON Data 2011 -- NoSQL @ Netflix, Part 2

More from Daniel Jacobson (6)

PPT
NPR Presentation at Wolfram Data Summit 2010
PPT
NPR: Digital Distribution Strategy: OSCON2010
PPT
NPR's Digital Distribution and Mobile Strategy
PPT
NPR API Usage and Metrics
PPT
OpenID Adoption UX Summit
PPT
NPR : Examples of COPE
NPR Presentation at Wolfram Data Summit 2010
NPR: Digital Distribution Strategy: OSCON2010
NPR's Digital Distribution and Mobile Strategy
NPR API Usage and Metrics
OpenID Adoption UX Summit
NPR : Examples of COPE

Recently uploaded (20)

PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Modernizing your data center with Dell and AMD
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Electronic commerce courselecture one. Pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Big Data Technologies - Introduction.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPT
Teaching material agriculture food technology
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Dropbox Q2 2025 Financial Results & Investor Presentation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Modernizing your data center with Dell and AMD
Review of recent advances in non-invasive hemoglobin estimation
Network Security Unit 5.pdf for BCA BBA.
Electronic commerce courselecture one. Pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Unlocking AI with Model Context Protocol (MCP)
Big Data Technologies - Introduction.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Reach Out and Touch Someone: Haptics and Empathic Computing
Teaching material agriculture food technology
Mobile App Security Testing_ A Comprehensive Guide.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”

APIs for Internal Audiences - Netflix - App Dev Conference

  • 1. APIs for an Internal Audience By Daniel Jacobson @daniel_jacobson djacobson@netflix.com From the App Dev Conference Santa Clara, CA October 27, 2011
  • 2. NPR API Requests by Audience
  • 4. The NPR API Powered Products
  • 5. Netflix API Requests by Audience
  • 8. How does this translate into value?
  • 9. NPR API : Page View Growth
  • 10. Netflix API : Requests Per Month 35 30 Requests in Billions 25 20 15 10 5 - 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
  • 11. What does all of this mean?
  • 12. Public APIs Private APIs
  • 14. Netflix API Requests by Audience
  • 16. Personaliz Movie Movie Similar A/B Test ation User Info Reviews Engine Metadata Ratings Movies Engine
  • 17. API Personaliz Movie Movie Similar A/B Test ation User Info Reviews Engine Metadata Ratings Movies Engine
  • 18. API Personaliz Movie Movie Similar A/B Test ation User Info Reviews Engine Metadata Ratings Movies Engine
  • 21. 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
  • 22. Netflix API : Requests Per Month 35 30 Requests in Billions 25 20 15 10 5 - 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
  • 23. Growth of the Netflix API Over 1 Billion requests per day (Peaks at about 20,000 requests per second)
  • 25. <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>
  • 26. {"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"} }}
  • 27. Improve Efficiency of API Requests Could it have been 100 million requests per day? Or less? (Assuming everything else remained the same)
  • 28. CLIENT APPS API SERVER AUTH DEVICE SETUP TIME SERVICE INSTANT QUEUE LISTS LIST ( i ) TITLES LOGGING
  • 29. CLIENT APPS API SERVER AUTH API DEVICE SCRIPTING SETUP TIER TIME SERVICE CUSTOM INSTANT ENDPOINT QUEUE PER DEVICE LISTS LIST ( i ) TITLES LOGGING
  • 30. API Billionaires Club 13 billion API calls / day (May 2011) Over 260 billion objects stored in S3 (January 2011) 5 billion API calls / day (April 2010) 5 billion API calls / day (October 2009) 1 billion API calls / day (October 2011) 8 billion API calls / month (Q3 2009) 3.2 billion API-delivered stories / month (October 2011) 3 billion API calls / month (March 2009) Courtesy of John Musser, ProgrammableWeb
  • 31. API Billionaires Club 13 billion API calls / day (May 2011) Over 260 billion objects stored in S3 (January 2011) 5 billion API calls / day (April 2010) 5 billion API calls / day (October 2009) 1 billion API calls / day (October 2011) 8 billion API calls / month (Q3 2009) 3.2 billion API-delivered stories / month (October 2011) 3 billion API calls / month (March 2009) Courtesy of John Musser, ProgrammableWeb
  • 34. If you are interested in helping us solve these problems, please contact me at: Daniel Jacobson djacobson@netflix.com @daniel_jacobson http://www.linkedin.com/in/danieljacobson http://www.slideshare.net/danieljacobson

Editor's Notes

  • #2: To demonstrate the importance of knowing your audience when offering an API, I will be drawing from my current Netflix experience as well as from NPR, my previous employer. Although these two cases may not represent all companies, I do believe that they jointly offer a perspective that is useful when considering API development and strategy.
  • #3: The NPR API has several distinct audiences. By the time I left NPR a year ago, the public developer community occupied the overwhelming number of API keys, but represented a sliver of the overall API consumption, as measured by API requests. The inverse is the case, however, for internal NPR development teams.
  • #4: The great number of public developers have produced a wide range of apps on a range of platforms. All of them, in total, account for a very small percentage of the overall consumption.
  • #6: Comparing this to Netflix, the distribution on both charts is basically the same, with two differences: 1. Netflix has a lot more API traffic. 2. The distribution is more extreme
  • #7: Similarly, Netflix has a public developer community, which was the target audience for the API when it launched (we called this the “let 1,000 flowers bloom” model). In fact, when the API first launched, 100% of its traffic came from the flowers.
  • #8: Over time, however, devices started to consume the API. Now we have hundreds of devices running off of the API. The 1,000 flowers are still there, but today, they account for less than .3% of the total API traffic, as measured by requests.
  • #10: For NPR, we were able to grow the overall page view growth by 100% in a single year. Over 80% of that growth was due to API-enabled mobile products. The development of the mobile products would have been much more difficult without the API. This kind of growth would not have been possible without the API.
  • #11: Similarly, Netflix’s growth chart goes up and to the right. But again, the numbers are bigger and the growth more extreme. In 18 months, the Netflix API grew by more than 50x. This growth can be attributed to an increase in devices using the API, an increase in adoption of those devices by Netflix customers, an increase in Netflix customers, and a changing request pattern for some of those devices to better serve our customers. So, the API growth is a proxy for the growth of the Netflix streaming service. Without the API, the growth of the Netflix streaming service likely would have been much less dramatic.
  • #13: These metrics demonstrate that the API world for many companies is similar to an iceberg. Public APIs represent a relatively small percentage of the value for the company, but they are typically the most visible part of the API program. They equate to the small part of the iceberg that is above water, in open sight. Conversely, the private APIs that drive web sites, mobile phones, device implementations, etc. account for the vast majority of the value for many companies, although people outside of the company often are not aware of them. These APIs equate to the large, hard to see mass of ice underwater. In the API space, most companies get attracted to the tip of the iceberg because that is what they are aware of. As a result, many companies seek to pursue a public API program. Over time, however, after more inspection into the value propositions of APIs, it becomes clear to many that the greatest value is in the private APIs.
  • #14: From the iceberg theory, the key takeaway from these metrics is to understand your audience. From that, many other questions surface, but the answers to them are much clearer if you know who your audiences are. Whichaudiences are the top priorities?How should you design your organization to satisfy these audiences?What is your resource allocation going to be for each audience? What expectations are you setting for each of these audiences?Howwill the audience prioritizations influence the design of the API?
  • #15: For Netflix, the internal development teams who build and/or manage the Netflix-branded device implementations are very clearly the top priority.
  • #16: This overwhelming priority has a tremendous affect on the Netflix engineering organization. Here are a few examples of the devices that are built/managed by internal Netflix teams. There are several distinct teams who build/manage the development for the hundreds of device implementations in the marketplace.
  • #17: Those device implementations have a range of metadata about movies and TV shows that they need in order to create rich experiences to the users. That information is managed by a range of internal engineering teams. Some of these teams manage databases with movie metadata or user information, while others handle complex algorithmic data, such as movie recommendations, etc.
  • #18: The API sits in between those two groups of engineering teams, drawing the information from the metadata/algorithm teams and delivering it to the various devices.
  • #19: The API sits very much in the critical path of the overall Netflix streaming service. As a result, the API is in the DNA of the Netflix engineering culture.
  • #20: The great thing about the API is that it is central to the Netflix streaming service. The issue, however, is that the current API is still designed for its original audience (the public developer community). In other words, even though the API is proving to be very successful, it is not designed for the highest priority audience.
  • #21: In essence, while the current API is capable of serving us in the way we need, it is no longer the best tool for the job. This is especially the case as the streaming service grows and expands to new international regions. We believe we can do much better with a new API that is designed for the future of Netflix.
  • #23: We already talked about the tremendous growth in API requests…
  • #24: Metrics like 1B requests per day sound great, don’t they? Many companies would love to see numbers like this. The reality is that this number is concerning…
  • #25: For a web site like NPR’s, it would be tremendous to have 1B requests per day (or per month). Growing request counts for web sites can produce great opportunity for ad impressions which translates directly into revenue.
  • #26: But the output of an API looks more like this…
  • #27: Or this…For APIs, ad impressions are not part of the game. As a result, the increase in requests don’t translate into more revenue. In fact, they translate into more expenses. That is, to handle more requests requires more servers, more systems-admins, a potentially different application architecture, etc.
  • #28: As a result, we are challenging ourselves to redesign the API to see if those same 1B requests per day could have been 100M per day, or perhaps even less. Through more targeted API designs based on what we have learned through our metrics, we will be able to reduce our API traffic as Netflix’ overall traffic grows.
  • #29: Because of itsgranular REST-ful resource model, the current Netflix API model requires a many devices to call these resources individually, often in a synchronous manner. To load a device screen, it often requires a dozen or more requests across the network. The problem is that the network transaction is often the most expensive part of the transactions, so the more requests to the API from the device, the slower the load times for the devices screens.
  • #30: In the new model, we will be changing our approach to solve this problem, moving away from traditional REST approaches. Ideally, the devices will be making just one request to the API servers to get everything it needs. The API will scripting tier then explode the one request into the many needed to get the data. Once the data is captured by the API from these various servers, the API will deliver the output back to the device in a single payload. There are a range of benefits from this scripting tier, as follows: 1. It allows us to have one network transaction with the majority of the work happening on the server rather than across HTTP. 2.It allows for dynamic updates to API interactions, which enable faster innovation as the scripts will be managed by the UI teams and dynamically compiled into the JVM. 3. It allows for very targeted payloads for each API call to diminish byte counts. 4. It allows each device to take advantage of its own capabilities without being constrained by generic API modeling. 5. It allows for easy development of custom formatting that may be specific to devices.
  • #31: Today, the Netflix API is among the leaders in the API Billionaires Club, a growing list compiled by John Musser of ProgrammableWeb.com.
  • #32: Our goal, if we are successful in changing the interaction model between the devices and the API, is to no longer be part of that club.
  • #33: If we achieve that goal, all of our devices should run much faster.
  • #34: Which, in turn, will help keep our customers happy.