• Save
Presentation to ESPN about the Netflix API
Upcoming SlideShare
Loading in...5
×
 

Presentation to ESPN about the Netflix API

on

  • 2,625 views

This is a presentation that I gave to ESPN's Digital Media team about the trajectory of the Netflix API. I also discussed Netflix's device implementation strategy and how it enables rapid development ...

This is a presentation that I gave to ESPN's Digital Media team about the trajectory of the Netflix API. I also discussed Netflix's device implementation strategy and how it enables rapid development and robust A/B testing.

Statistics

Views

Total Views
2,625
Views on SlideShare
2,625
Embed Views
0

Actions

Likes
2
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • RSS feeds are one example of a commonly used API, albeit a very simple one.
  • Podcasts are another example of an API, extended from RSS.
  • In addition to the APIs that ESPN currently offers online, ESPN is also consuming perhaps the most popular API – Google Maps.
  • 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.
  • Visual representation of the “1,000 flowers” model.
  • Some of the apps that have been built by the open developer community (1,000 flowers).
  • Then streaming started taking off for Netflix
  • And the API started supporting more and more internal device implementations
  • Now, we have hundreds of devices being run off the API, driving tremendous business growth.
  • Including the Android app, which just launched in May, 2011.
  • And the Netflix API traffic has gone through the roofAveraging over 20B requests per monthWith peak traffic over 18,000 requests per second
  • 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
  • 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?
  • Especially when features differ from device to device.
  • 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.
  • 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.
  • So, we have seen tremendous growth in API consumption.
  • Metrics like 20B requests per month sound great, don’t they? The reality is that this number is concerning…
  • 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.
  • 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.
  • 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.
  • 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.
  • So, when redesigning the API, we want to target it towards to key audiences. For us, the key audiences are our devices.
  • Once it is designed for our future, we will trickle it down to the 1000 flowers and/or other audiences.
  • 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.
  • 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.

Presentation to ESPN about the Netflix API Presentation to ESPN about the Netflix API Presentation Transcript

  • The Netflix API
    How Netflix Launched an API and Evolved it to Serve Millions on Hundreds of Devices
    By Daniel Jacobson
  • Who Am I?
    Director of Engineering for Netflix API since October 2010
    Tenure at NPR from 1999 to 2010
    Built the custom CMS in 2002
    Extended system for RSS and Podcasting
    Launched the NPR API in 2008
    Launched NPR redesign in 2009
  • Netflix Overview
    Netflix offers subscriptions to unlimited streaming movies and TV shows for a very low price
    About 700 operational employees, 300 engineers
    More than 23 million subscribers in US and Canada
    Market capitalization is about $12B
    Account for over 20% of US bandwidth during peak hours (some say 30%)
  • What is an API?
    An API is a “contract” between two computer applications or systems to deliver content or functionality from one to the other.
  • How Does the API Fit in at Netflix?
  • API
    Personalization Engine
    User Info
    Movie Metadata
    Movie Ratings
    Similar Movies
    Reviews
    Etc.
  • Original Charter for the Netflix API
    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.
  • Netflix
    API
    There are currently over
    17,000 flowers
  • Netflix
    API
  • Some of the many
    Netflix-ready
    devices
  • Growth of Netflix API
  • Netflix API Requests by Audience
  • New Charter for the Netflix API
    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.
  • Some of the many
    Netflix-ready
    devices
  • Products and Features Vary from Device to Device
    Application development attempts to treat all apps the same until they are different
    Different devices enable different features, so implementations should consider those differences
    Aspect Ratios
    Connection Speeds
    Security Concerns
    Screen Real Estate
    User Expectations
  • WebKit vs. Native Apps
  • Android
    iPhone
  • Other Benefits of WebKit:A/B Testing
    Run multiple test cells at once
    Tests can be for minor changes or fundamentally different designs
    Winning tests are determined through metrics, not conjecture
    Winning tests graduate easily to production
    Pushing tests often do not require partner involvement
  • What is the future of the API?
  • Growth of Netflix API
  • Growth of the Netflix API
    About 20 Billion requests per month
    (Peaks at about 18,000 requests per second)
  • <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>
  • Improve Efficiency of API Requests
    Could it have been 5 billion requests per month?
    (Assuming everything else remained the same)
  • Design for our Key Audiences
  • Future Architecture needs to support key audience first with a trickle down of features to the public audience
    Netflix
    API
  • Design for The Audience You Want
    If your current
    audience is this size
    Then designyour system for
    an audience that is this size
  • AWS Cloud
  • Other Considerations for Building APIs
    Organizational changes
    Increases in Product Managers
    Increases in partner engagements
    Product specialization
    Increases in customized user experiences per device
    Content Portability
    Changes to the editorial workflow
    Legal considerations
    Terms of use
    Re-negotiation of rights with content providers
    System scalability
    Increases in products could increase traffic
    New devices will modify usage patterns