Presentation to ESPN about the Netflix API

Daniel Jacobson
Daniel JacobsonDirector of Engineering - Netflix API at Netflix
The Netflix API,[object Object],How Netflix Launched an API and Evolved it to Serve Millions on Hundreds of Devices,[object Object],By Daniel Jacobson,[object Object]
Who Am I?,[object Object],Director of Engineering for Netflix API since October 2010,[object Object],Tenure at NPR from 1999 to 2010,[object Object],Built the custom CMS in 2002,[object Object],Extended system for RSS and Podcasting,[object Object],Launched the NPR API in 2008,[object Object],Launched NPR redesign in 2009,[object Object]
Netflix Overview,[object Object],Netflix offers subscriptions to unlimited streaming movies and TV shows for a very low price,[object Object],About 700 operational employees, 300 engineers,[object Object],More than 23 million subscribers in US and Canada,[object Object],Market capitalization is about $12B,[object Object],Account for over 20% of US bandwidth during peak hours (some say 30%),[object Object]
What is an API?,[object Object],An API is a “contract” between two computer applications or systems to deliver content or functionality from one to the other.,[object Object]
Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix API
How Does the API Fit in at Netflix?,[object Object]
API,[object Object],Personalization Engine,[object Object],User Info,[object Object],Movie Metadata,[object Object],Movie Ratings,[object Object],Similar Movies,[object Object],Reviews,[object Object],Etc.,[object Object]
Original Charter for the Netflix API,[object Object],Expose Netflix metadata and services to the public developer community to “let 1,000 flowers bloom.”  That community will build rich and exciting new tools and services to improve the value of Netflix to our customers.,[object Object]
Netflix ,[object Object],API,[object Object],There are currently over,[object Object],17,000 flowers ,[object Object]
Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix API
Netflix ,[object Object],API,[object Object]
Some of the many ,[object Object],Netflix-ready ,[object Object],devices,[object Object]
Presentation to ESPN about the Netflix API
Growth of Netflix API,[object Object]
Netflix API Requests by Audience,[object Object]
New Charter for the Netflix API,[object Object],Build and maintain an infinitely horizontally scalable data distribution pipeline for getting metadata and services from internal Netflix systems to streaming client apps on all platforms in the format and/or delivery method that is most optimal for each app and platform.,[object Object]
Some of the many ,[object Object],Netflix-ready ,[object Object],devices,[object Object]
Products and Features Vary from Device to Device,[object Object],Application development attempts to treat all apps the same until they are different,[object Object],Different devices enable different features, so implementations should consider those differences,[object Object],Aspect Ratios,[object Object],Connection Speeds,[object Object],Security Concerns,[object Object],Screen Real Estate,[object Object],User Expectations,[object Object]
WebKit vs. Native Apps,[object Object]
Android,[object Object],iPhone,[object Object]
Other Benefits of WebKit:A/B Testing,[object Object],Run multiple test cells at once,[object Object],Tests can be for minor changes or fundamentally different designs,[object Object],Winning tests are determined through metrics, not conjecture,[object Object],Winning tests graduate easily to production,[object Object],Pushing tests often do not require partner involvement,[object Object]
What is the future of the API?,[object Object]
Growth of Netflix API,[object Object]
Growth of the Netflix API,[object Object],About 20 Billion requests per month,[object Object],(Peaks at about 18,000 requests per second),[object Object]
Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix API
<catalog_titles>,[object Object],  <number_of_results>1140</number_of_results>,[object Object],  <start_index>0</start_index>,[object Object],  <results_per_page>10</results_per_page>,[object Object],  <catalog_title>,[object Object],  <id>http://api.netflix.com/catalog/titles/movies/60021896</id><title short="Star" regular="Star"></title>,[object Object],  <box_art small="http://alien2.netflix.com/us/boxshots/tiny/60021896.jpg"  ,[object Object],	medium="http://alien2.netflix.com/us/boxshots/small/60021896.jpg"  ,[object Object],	large="http://alien2.netflix.com/us/boxshots/large/60021896.jpg"></box_art>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/60021896/synopsis"  ,[object Object],rel="http://schemas.netflix.com/catalog/titles/synopsis" title="synopsis"></link>,[object Object],  <release_year>2001</release_year>,[object Object],  <category scheme="http://api.netflix.com/catalog/titles/mpaa_ratings" label="NR"></category>,[object Object],  <category scheme="http://api.netflix.com/categories/genres" label="Foreign"></category>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/60021896/cast"  ,[object Object],rel="http://schemas.netflix.com/catalog/people.cast" title="cast"></link>,[object Object],<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,[object Object],  <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>,[object Object],  <average_rating>1.9</average_rating>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/60021896/similars" rel="http://schemas.netflix.com/catalog/titles.similars" title="similars"></link>,[object Object],  <link href="http://www.netflix.com/Movie/Star/60021896" rel="alternate" title="webpage"></link>,[object Object],  </catalog_title>,[object Object],  <catalog_title>,[object Object],  <id>http://api.netflix.com/catalog/titles/movies/17985448</id><title short="Lone Star" regular="Lone Star"></title>,[object Object],  <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>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/17985448/synopsis" rel="http://schemas.netflix.com/catalog/titles/synopsis" title="synopsis"></link>,[object Object],  <release_year>1996</release_year>,[object Object],  <category scheme="http://api.netflix.com/catalog/titles/mpaa_ratings" label="R"></category>,[object Object],  <category scheme="http://api.netflix.com/categories/genres" label="Drama"></category>,[object Object],<link href="http://api.netflix.com/catalog/titles/movies/17985448/awards" rel="http://schemas.netflix.com/catalog/titles/awards" title="awards"></link>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/17985448/format_availability" rel="http://schemas.netflix.com/catalog/titles/format_availability" title="formats"></link>,[object Object],  <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>,[object Object],  <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>,[object Object],  <average_rating>3.7</average_rating>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/17985448/previews" rel="http://schemas.netflix.com/catalog/titles/previews" title="previews"></link>,[object Object],  <link href="http://api.netflix.com/catalog/titles/movies/17985448/similars" rel="http://schemas.netflix.com/catalog/titles.similars" title="similars"></link>,[object Object],  <link href="http://www.netflix.com/Movie/Lone_Star/17985448" rel="alternate" title="webpage"></link>,[object Object],  </catalog_title>,[object Object],</catalog_titles>,[object Object]
Improve Efficiency of API Requests,[object Object],Could it have been 5 billion requests per month?,[object Object],(Assuming everything else remained the same),[object Object]
Design for our Key Audiences,[object Object]
Future Architecture needs to support key audience first with a trickle down of features to the public audience,[object Object],Netflix ,[object Object],API,[object Object]
Design for The Audience You Want,[object Object],If your current ,[object Object],audience is this size,[object Object],Then designyour system for ,[object Object],an audience that is this size,[object Object]
AWS Cloud,[object Object]
Other Considerations for Building APIs,[object Object],Organizational changes,[object Object],Increases in Product Managers,[object Object],Increases in partner engagements,[object Object],Product specialization,[object Object],Increases in customized user experiences per device,[object Object],Content Portability,[object Object],Changes to the editorial workflow,[object Object],Legal considerations,[object Object],Terms of use,[object Object],Re-negotiation of rights with content providers,[object Object],System scalability,[object Object],Increases in products could increase traffic,[object Object],New devices will modify usage patterns,[object Object]
Presentation to ESPN about the Netflix API
1 of 37

More Related Content

What's hot(20)

Similar to Presentation to ESPN about the Netflix API

Creating DatadipityCreating Datadipity
Creating DatadipityClickslide
1.2K views32 slides

Similar to Presentation to ESPN about the Netflix API(20)

Netflix MSA and PivotalNetflix MSA and Pivotal
Netflix MSA and Pivotal
VMware Tanzu Korea1.2K views
API Strategy Evolution at NetflixAPI Strategy Evolution at Netflix
API Strategy Evolution at Netflix
Michael Hart236.5K views
Web services - REST and SOAPWeb services - REST and SOAP
Web services - REST and SOAP
Compare Infobase Limited1.7K views
Creating DatadipityCreating Datadipity
Creating Datadipity
Clickslide1.2K views
Soap toolkitsSoap toolkits
Soap toolkits
Aravindharamanan S123 views
Case study for software architectCase study for software architect
Case study for software architect
Osama Mustafa89 views
Services, Apps and the API Powered WebServices, Apps and the API Powered Web
Services, Apps and the API Powered Web
Steven Willmott1.2K views
APIs as a Product StrategyAPIs as a Product Strategy
APIs as a Product Strategy
Ravi Kumar7.7K views
Practical guide to building public APIsPractical guide to building public APIs
Practical guide to building public APIs
Reda Hmeid MBCS463 views
Clickslide Datadipity Beta V1Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1
Gabriel Ortiz551 views
Thadomal IEEE-HTML5-WorkshopThadomal IEEE-HTML5-Workshop
Thadomal IEEE-HTML5-Workshop
Romin Irani992 views

More from Daniel Jacobson(6)

NPR API Usage and MetricsNPR API Usage and Metrics
NPR API Usage and Metrics
Daniel Jacobson1.9K views
OpenID Adoption UX SummitOpenID Adoption UX Summit
OpenID Adoption UX Summit
Daniel Jacobson962 views
NPR : Examples of COPENPR : Examples of COPE
NPR : Examples of COPE
Daniel Jacobson27K views

Recently uploaded(20)

Green Leaf Consulting: Capabilities DeckGreen Leaf Consulting: Capabilities Deck
Green Leaf Consulting: Capabilities Deck
GreenLeafConsulting170 views
ChatGPT and AI for Web DevelopersChatGPT and AI for Web Developers
ChatGPT and AI for Web Developers
Maximiliano Firtman152 views
METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...
METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...
Prity Khastgir IPR Strategic India Patent Attorney Amplify Innovation23 views
Java Platform Approach 1.0 - Picnic MeetupJava Platform Approach 1.0 - Picnic Meetup
Java Platform Approach 1.0 - Picnic Meetup
Rick Ossendrijver23 views

Presentation to ESPN about the Netflix API

  • 1.
  • 2.
  • 3.
  • 4.
  • 8.
  • 9.
  • 10.
  • 11.
  • 14.
  • 15.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.

Editor's Notes

  1. RSS feeds are one example of a commonly used API, albeit a very simple one.
  2. Podcasts are another example of an API, extended from RSS.
  3. In addition to the APIs that ESPN currently offers online, ESPN is also consuming perhaps the most popular API – Google Maps.
  4. Netflix has a series of engineering teams that focus on very specific problems around movie and user information. That information needs to get to the hundreds of devices where Netflix users enjoy our streaming service. That information gets through through the API.
  5. Visual representation of the “1,000 flowers” model.
  6. Some of the apps that have been built by the open developer community (1,000 flowers).
  7. Then streaming started taking off for Netflix
  8. And the API started supporting more and more internal device implementations
  9. Now, we have hundreds of devices being run off the API, driving tremendous business growth.
  10. Including the Android app, which just launched in May, 2011.
  11. And the Netflix API traffic has gone through the roofAveraging over 20B requests per monthWith peak traffic over 18,000 requests per second
  12. And the proportion of API requests coming to the Netflix API through the public has gone way down.The 1,000 flowers represent less than ½ a percent of the total API traffic
  13. So, we are now on hundreds of devices. How do we modify our development approach to make it easier to add new devices? How do we improve the efficiency around device implementation to match the efficiencies that the API provide us?
  14. Especially when features differ from device to device.
  15. The differences across the devices call into question how to develop effectively and efficiently for all of them. This raises a decision on how to implement for the devices. For us, that became a question about WebKit or native app implementations. Most of our implementations are WebKit-based.
  16. iPhone and Android apps are both WebKit implementations. In fact, the Netflix Android app is derivative from the same codebase as the iPhone app. There are key differences, but the iPhone codebase can be leveraged here in ways that a native app cannot.
  17. So, we have seen tremendous growth in API consumption.
  18. Metrics like 20B requests per month sound great, don’t they? The reality is that this number is concerning…
  19. In the web world, increasing request numbers mean increasing opportunity of ad impressions, which means increasing opportunity for generating revenue. And when you hit certain thresholds in impressions, CPMs start to rise, which means even more money.
  20. Other media organizations are employing different techniques to generate more traffic. The New York Times, for example, is paginating their article pages which creates more potential page views and therefore ad impressions.
  21. But for systems that yield output that looks like this, such as 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.
  22. We are challenging ourselves to redesign the API to see if those same 20 billion requests could have been 5 billion 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.
  23. So, when redesigning the API, we want to target it towards to key audiences. For us, the key audiences are our devices.
  24. Once it is designed for our future, we will trickle it down to the 1000 flowers and/or other audiences.
  25. And we don’t just plan to design the API to be for our current audience. Instead, we plan to dream bigger and design the system for the audience that we want.That doesn’t mean we should implement today the system we want for the dream audience. It just means the design should allow for the system to scale to that audience.
  26. For Netflix, we have designed our server architecture, using AWS, to be highly scalable. The API redesign will help us scale the software better to handle this scaling more effectively and efficiently.