SlideShare una empresa de Scribd logo
1 de 80
Set Your Content
      Free!




    By Daniel Jacobson
    @daniel_jacobson
Please read the notes for each slide
to understand the full context of the
            presentation
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Streaming
More than 33 Million Subscribers




More than 50 Countries & Territories
Netflix Accounts for 33% of Peak
 Internet Traffic in North America




Netflix subscribers are watching more than 1 billion hours a month
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
2007
Bird is in the cage
Netflix REST API:
One-Size-Fits-All Solution
Set Your Content Free! : Case Studies from Netflix and NPR
Bird is set free to the world
Netflix API Requests by Audience
          At Launch In 2008



                               External
                              Developers
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
API




Personaliz
                          Movie     Movie     Similar             A/B Test
  ation      User Info                                  Reviews
 Engine
                         Metadata   Ratings   Movies               Engine
Netflix API Requests by Audience
             From 2011



                            External
                           Developers
Bird is free but mostly flies in the house
Change in Audience = Change in Design
Scaling
Growth of Netflix API Requests
                      45
                                                                 41.7

                      40
                                   70x growth in two years!
                      35
Request in Billions




                      30

                      25
                                                        20.7
                      20

                      15

                      10

                       5
                                 0.6
                      -
                                Jan-10                 Jan-11   Jan-12
Growth of the Netflix API




    2 billion requests per day
 Exploding out to 14 billion dependency calls per day
Set Your Content Free! : Case Studies from Netflix and NPR
<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"}
}}
What if the API request growth rate
                                looks like this???
                      160


                      140
                              Is this good for the long run???
                      120
Request is Billions




                      100


                       80


                       60


                       40


                       20


                       -
Improve Efficiency of API Requests




Could it have been 300 million requests per day? Or less?
             (Assuming everything else remained the same)
Variability Across Devices
Screen Real Estate
Controller
Technical Capabilities
Slowed Innovation
Request
              Request




    Request
One-Size-Fits-All
      API
Our Solution…
There has to be a better tool for the
job than the One-Size-Fits-All REST API
Set Your Content Free! : Case Studies from Netflix and NPR
Network Border                                        Network Border




                             One-Size-
                              Fits-All
                             REST API



        START-     A/B    MEMBER    RECOMME    MOVIE              SIMILAR
AUTH                                NDATIONS
                                                        RATINGS
          UP      TESTS    DATA                DATA               MOVIES
Network Border                                       Network Border




                            Optimized
                               API



        START-     A/B    MEMBER   RECOMME    MOVIE              SIMILAR
AUTH                               NDATIONS
                                                       RATINGS
          UP      TESTS    DATA               DATA               MOVIES
Recipe for Optimized APIs
API providers that have a:
• small number of targeted API consumers

• very close relationships between with API consumers

• increasing divergence of needs across these API consumers

• strong desire for optimization by the API consumers

• optimized APIs offer high value proposition
Recipe for Optimized APIs
API providers that have a:
• small number of targeted API consumers

• very close relationships between with API consumers

• increasing divergence of needs across these API consumers

• strong desire for optimization by the API consumers

• optimized APIs offer high value proposition

• a generous helping of chocolate (to keep engineers happy)
Set Your Content Free! : Case Studies from Netflix and NPR
< 3 Years
SQL
             Server




            Informix


Editorial
  Staff
Static, Non-Reusable Data

              Disparate Technologies

                 Disparate Skill Sets
                                              Redundant
            Redundancy in
                               Redundant         Data
                                 Data
                                   SQL
             Applications          In
                                  Server      Across the
                               Databases
              Disparate                        Two Sites
            Technologies         Disparate
                               Technologies
            Disparate Skill
                 Sets           Disparate
                                 Informix
                                Skill Sets

Editorial
  Staff
Bird is in the cage
Create
C

Once
O

Publish
P

Everywhere
E
Key COPE Philosophies
• Build Content Management Systems
  – Not Web Publishing Tools

• Separate Content From Display

• Ensure Content Modularity

• Ensure Content Portability
COPE in Action
COPE in Action
Bird is set free in the house
Lifecycle of an NPR story
       COPE in the wild
NPR Content Capture Application
NPR API
NPR.org
NPR iPad/Tablet Site
NPR.org Audio Player
NPR iPhone App
NPR Mobile Site
NPR Android App
NPR Addict iPhone App
    (user generated app)
KQED.org
WBUR.org
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Bird is free in the house, but also sees
                the world
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
Set Your Content Free! : Case Studies from Netflix and NPR
NPR API Requests
               Partners
                      External
                     Developers


                          Member
                          Stations
Netflix API Requests by Audience
             From 2011



                            External
                           Developers
Evernote API Requests

                         External
                        Developers
Guardian API Requests

                         External
                        Developers
Public API




             Internal API
Daniel Jacobson
        Director of Engineering, Netflix API



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

Más contenido relacionado

La actualidad más candente

Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix APIPresentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix APIDaniel Jacobson
 
Netflix API : BAPI 2011 Presentation : SF
Netflix API : BAPI 2011 Presentation : SFNetflix API : BAPI 2011 Presentation : SF
Netflix API : BAPI 2011 Presentation : SFDaniel Jacobson
 
The future-of-netflix-api
The future-of-netflix-apiThe future-of-netflix-api
The future-of-netflix-apiDaniel Jacobson
 
Maintaining the Front Door to Netflix : The Netflix API
Maintaining the Front Door to Netflix : The Netflix APIMaintaining the Front Door to Netflix : The Netflix API
Maintaining the Front Door to Netflix : The Netflix APIDaniel Jacobson
 
Netflix API - Presentation to PayPal
Netflix API - Presentation to PayPalNetflix API - Presentation to PayPal
Netflix API - Presentation to PayPalDaniel Jacobson
 
History and Future of the Netflix API - Mashery Evolution of Distribution
History and Future of the Netflix API - Mashery Evolution of DistributionHistory and Future of the Netflix API - Mashery Evolution of Distribution
History and Future of the Netflix API - Mashery Evolution of DistributionDaniel Jacobson
 
Scaling the Netflix API - From Atlassian Dev Den
Scaling the Netflix API - From Atlassian Dev DenScaling the Netflix API - From Atlassian Dev Den
Scaling the Netflix API - From Atlassian Dev DenDaniel Jacobson
 
Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014Daniel Jacobson
 
Netflix API - Separation of Concerns
Netflix API - Separation of ConcernsNetflix API - Separation of Concerns
Netflix API - Separation of ConcernsDaniel Jacobson
 
Why API? - Business of APIs Conference
Why API? - Business of APIs ConferenceWhy API? - Business of APIs Conference
Why API? - Business of APIs ConferenceDaniel Jacobson
 
Maintaining the Front Door to Netflix
Maintaining the Front Door to NetflixMaintaining the Front Door to Netflix
Maintaining the Front Door to NetflixBenjamin Schmaus
 
Open APIs: What's Hot, What's Not?
Open APIs: What's Hot, What's Not?Open APIs: What's Hot, What's Not?
Open APIs: What's Hot, What's Not?John Musser
 
The Netflix API for a global service
The Netflix API for a global serviceThe Netflix API for a global service
The Netflix API for a global serviceKatharina Probst
 
W2E NY 2010 NPR Everywhere
W2E NY 2010 NPR EverywhereW2E NY 2010 NPR Everywhere
W2E NY 2010 NPR Everywherezachbrand
 
NPR: Digital Distribution Strategy: OSCON2010
NPR: Digital Distribution Strategy: OSCON2010NPR: Digital Distribution Strategy: OSCON2010
NPR: Digital Distribution Strategy: OSCON2010Daniel Jacobson
 
Your API is So 2006 - MoDevEast 2011
Your API is So 2006 - MoDevEast 2011Your API is So 2006 - MoDevEast 2011
Your API is So 2006 - MoDevEast 2011Delyn Simons
 
Open APIs and the Semantic Web 2011
Open APIs and the Semantic Web 2011Open APIs and the Semantic Web 2011
Open APIs and the Semantic Web 2011John Musser
 
Open APIs - State of the Market 2011
Open APIs - State of the Market 2011Open APIs - State of the Market 2011
Open APIs - State of the Market 2011John Musser
 

La actualidad más candente (20)

Netflix API
Netflix APINetflix API
Netflix API
 
Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix APIPresentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix API
 
Netflix API : BAPI 2011 Presentation : SF
Netflix API : BAPI 2011 Presentation : SFNetflix API : BAPI 2011 Presentation : SF
Netflix API : BAPI 2011 Presentation : SF
 
The future-of-netflix-api
The future-of-netflix-apiThe future-of-netflix-api
The future-of-netflix-api
 
Maintaining the Front Door to Netflix : The Netflix API
Maintaining the Front Door to Netflix : The Netflix APIMaintaining the Front Door to Netflix : The Netflix API
Maintaining the Front Door to Netflix : The Netflix API
 
Netflix API - Presentation to PayPal
Netflix API - Presentation to PayPalNetflix API - Presentation to PayPal
Netflix API - Presentation to PayPal
 
History and Future of the Netflix API - Mashery Evolution of Distribution
History and Future of the Netflix API - Mashery Evolution of DistributionHistory and Future of the Netflix API - Mashery Evolution of Distribution
History and Future of the Netflix API - Mashery Evolution of Distribution
 
Scaling the Netflix API - From Atlassian Dev Den
Scaling the Netflix API - From Atlassian Dev DenScaling the Netflix API - From Atlassian Dev Den
Scaling the Netflix API - From Atlassian Dev Den
 
Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014Top 10 Lessons Learned from the Netflix API - OSCON 2014
Top 10 Lessons Learned from the Netflix API - OSCON 2014
 
Netflix API - Separation of Concerns
Netflix API - Separation of ConcernsNetflix API - Separation of Concerns
Netflix API - Separation of Concerns
 
Why API? - Business of APIs Conference
Why API? - Business of APIs ConferenceWhy API? - Business of APIs Conference
Why API? - Business of APIs Conference
 
Maintaining the Front Door to Netflix
Maintaining the Front Door to NetflixMaintaining the Front Door to Netflix
Maintaining the Front Door to Netflix
 
Open APIs: What's Hot, What's Not?
Open APIs: What's Hot, What's Not?Open APIs: What's Hot, What's Not?
Open APIs: What's Hot, What's Not?
 
The Netflix API for a global service
The Netflix API for a global serviceThe Netflix API for a global service
The Netflix API for a global service
 
Huge: Running an API at Scale
Huge: Running an API at ScaleHuge: Running an API at Scale
Huge: Running an API at Scale
 
W2E NY 2010 NPR Everywhere
W2E NY 2010 NPR EverywhereW2E NY 2010 NPR Everywhere
W2E NY 2010 NPR Everywhere
 
NPR: Digital Distribution Strategy: OSCON2010
NPR: Digital Distribution Strategy: OSCON2010NPR: Digital Distribution Strategy: OSCON2010
NPR: Digital Distribution Strategy: OSCON2010
 
Your API is So 2006 - MoDevEast 2011
Your API is So 2006 - MoDevEast 2011Your API is So 2006 - MoDevEast 2011
Your API is So 2006 - MoDevEast 2011
 
Open APIs and the Semantic Web 2011
Open APIs and the Semantic Web 2011Open APIs and the Semantic Web 2011
Open APIs and the Semantic Web 2011
 
Open APIs - State of the Market 2011
Open APIs - State of the Market 2011Open APIs - State of the Market 2011
Open APIs - State of the Market 2011
 

Similar a Set Your Content Free! : Case Studies from Netflix and NPR

API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)Apigee | Google Cloud
 
API Strategy Evolution at Netflix
API Strategy Evolution at NetflixAPI Strategy Evolution at Netflix
API Strategy Evolution at NetflixMichael Hart
 
Oscon2014 Netflix API - Top 10 Lessons Learned
Oscon2014 Netflix API - Top 10 Lessons LearnedOscon2014 Netflix API - Top 10 Lessons Learned
Oscon2014 Netflix API - Top 10 Lessons LearnedSangeeta Narayanan
 
Business of APIs Conference 2011 - Netflix
Business of APIs Conference 2011 - NetflixBusiness of APIs Conference 2011 - Netflix
Business of APIs Conference 2011 - NetflixMashery
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpinrajivmordani
 
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Atlassian
 
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Atlassian
 
Gluecon 2013 netflix api crash course
Gluecon 2013   netflix api crash courseGluecon 2013   netflix api crash course
Gluecon 2013 netflix api crash courseBenjamin Schmaus
 
APIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good API
APIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good APIAPIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good API
APIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good APIapidays
 
Confluence State Of The Union 2009
Confluence State Of The Union 2009Confluence State Of The Union 2009
Confluence State Of The Union 2009Atlassian
 
Netflix Edge Engineering Open House Presentations - June 9, 2016
Netflix Edge Engineering Open House Presentations - June 9, 2016Netflix Edge Engineering Open House Presentations - June 9, 2016
Netflix Edge Engineering Open House Presentations - June 9, 2016Daniel Jacobson
 
Open Ap Is State Of The Market
Open Ap Is State Of The MarketOpen Ap Is State Of The Market
Open Ap Is State Of The MarketConSanFrancisco123
 
Future of SOA & Modern APIs
Future of SOA & Modern APIsFuture of SOA & Modern APIs
Future of SOA & Modern APIsRam Lakshmanan
 
Move Fast;Stay Safe:Developing & Deploying the Netflix API
Move Fast;Stay Safe:Developing & Deploying the Netflix APIMove Fast;Stay Safe:Developing & Deploying the Netflix API
Move Fast;Stay Safe:Developing & Deploying the Netflix APISangeeta Narayanan
 
Think like a Platform - EDC 2012
Think like a Platform - EDC 2012Think like a Platform - EDC 2012
Think like a Platform - EDC 2012Delyn Simons
 
Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011Twilio Inc
 
Manage your Public API Like a Protocol
Manage your Public API Like a ProtocolManage your Public API Like a Protocol
Manage your Public API Like a ProtocolDelyn Simons
 
Creating Datadipity
Creating DatadipityCreating Datadipity
Creating DatadipityClickslide
 

Similar a Set Your Content Free! : Case Studies from Netflix and NPR (20)

API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)API Design - When to buck the trend (Webcast)
API Design - When to buck the trend (Webcast)
 
API Strategy Evolution at Netflix
API Strategy Evolution at NetflixAPI Strategy Evolution at Netflix
API Strategy Evolution at Netflix
 
Oscon2014 Netflix API - Top 10 Lessons Learned
Oscon2014 Netflix API - Top 10 Lessons LearnedOscon2014 Netflix API - Top 10 Lessons Learned
Oscon2014 Netflix API - Top 10 Lessons Learned
 
Business of APIs Conference 2011 - Netflix
Business of APIs Conference 2011 - NetflixBusiness of APIs Conference 2011 - Netflix
Business of APIs Conference 2011 - Netflix
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpin
 
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
 
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
 
Gluecon 2013 netflix api crash course
Gluecon 2013   netflix api crash courseGluecon 2013   netflix api crash course
Gluecon 2013 netflix api crash course
 
APIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good API
APIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good APIAPIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good API
APIdays Paris 2018 - Autonomous APIs, Zdenek Nemec, Founder, Good API
 
Confluence State Of The Union 2009
Confluence State Of The Union 2009Confluence State Of The Union 2009
Confluence State Of The Union 2009
 
Netflix Edge Engineering Open House Presentations - June 9, 2016
Netflix Edge Engineering Open House Presentations - June 9, 2016Netflix Edge Engineering Open House Presentations - June 9, 2016
Netflix Edge Engineering Open House Presentations - June 9, 2016
 
Netflix MSA and Pivotal
Netflix MSA and PivotalNetflix MSA and Pivotal
Netflix MSA and Pivotal
 
Open Ap Is State Of The Market
Open Ap Is State Of The MarketOpen Ap Is State Of The Market
Open Ap Is State Of The Market
 
Future of SOA & Modern APIs
Future of SOA & Modern APIsFuture of SOA & Modern APIs
Future of SOA & Modern APIs
 
Move Fast;Stay Safe:Developing & Deploying the Netflix API
Move Fast;Stay Safe:Developing & Deploying the Netflix APIMove Fast;Stay Safe:Developing & Deploying the Netflix API
Move Fast;Stay Safe:Developing & Deploying the Netflix API
 
Think like a Platform - EDC 2012
Think like a Platform - EDC 2012Think like a Platform - EDC 2012
Think like a Platform - EDC 2012
 
Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011Building a Great Web API - Evan Cooke - QCON 2011
Building a Great Web API - Evan Cooke - QCON 2011
 
API World Conference
API World ConferenceAPI World Conference
API World Conference
 
Manage your Public API Like a Protocol
Manage your Public API Like a ProtocolManage your Public API Like a Protocol
Manage your Public API Like a Protocol
 
Creating Datadipity
Creating DatadipityCreating Datadipity
Creating Datadipity
 

Último

IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 

Último (20)

IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 

Set Your Content Free! : Case Studies from Netflix and NPR

  • 1. Set Your Content Free! By Daniel Jacobson @daniel_jacobson
  • 2. Please read the notes for each slide to understand the full context of the presentation
  • 9. More than 33 Million Subscribers More than 50 Countries & Territories
  • 10. Netflix Accounts for 33% of Peak Internet Traffic in North America Netflix subscribers are watching more than 1 billion hours a month
  • 13. 2007
  • 14. Bird is in the cage
  • 17. Bird is set free to the world
  • 18. Netflix API Requests by Audience At Launch In 2008 External Developers
  • 22. API Personaliz Movie Movie Similar A/B Test ation User Info Reviews Engine Metadata Ratings Movies Engine
  • 23. Netflix API Requests by Audience From 2011 External Developers
  • 24. Bird is free but mostly flies in the house
  • 25. Change in Audience = Change in Design
  • 27. Growth of Netflix API Requests 45 41.7 40 70x growth in two years! 35 Request in Billions 30 25 20.7 20 15 10 5 0.6 - Jan-10 Jan-11 Jan-12
  • 28. Growth of the Netflix API 2 billion requests per day Exploding out to 14 billion dependency calls per day
  • 30. <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>
  • 31. {"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"} }}
  • 32. What if the API request growth rate looks like this??? 160 140 Is this good for the long run??? 120 Request is Billions 100 80 60 40 20 -
  • 33. Improve Efficiency of API Requests Could it have been 300 million requests per day? Or less? (Assuming everything else remained the same)
  • 39. Request Request Request One-Size-Fits-All API
  • 41. There has to be a better tool for the job than the One-Size-Fits-All REST API
  • 43. Network Border Network Border One-Size- Fits-All REST API START- A/B MEMBER RECOMME MOVIE SIMILAR AUTH NDATIONS RATINGS UP TESTS DATA DATA MOVIES
  • 44. Network Border Network Border Optimized API START- A/B MEMBER RECOMME MOVIE SIMILAR AUTH NDATIONS RATINGS UP TESTS DATA DATA MOVIES
  • 45. Recipe for Optimized APIs API providers that have a: • small number of targeted API consumers • very close relationships between with API consumers • increasing divergence of needs across these API consumers • strong desire for optimization by the API consumers • optimized APIs offer high value proposition
  • 46. Recipe for Optimized APIs API providers that have a: • small number of targeted API consumers • very close relationships between with API consumers • increasing divergence of needs across these API consumers • strong desire for optimization by the API consumers • optimized APIs offer high value proposition • a generous helping of chocolate (to keep engineers happy)
  • 49. SQL Server Informix Editorial Staff
  • 50. Static, Non-Reusable Data Disparate Technologies Disparate Skill Sets Redundant Redundancy in Redundant Data Data SQL Applications In Server Across the Databases Disparate Two Sites Technologies Disparate Technologies Disparate Skill Sets Disparate Informix Skill Sets Editorial Staff
  • 51. Bird is in the cage
  • 53. Key COPE Philosophies • Build Content Management Systems – Not Web Publishing Tools • Separate Content From Display • Ensure Content Modularity • Ensure Content Portability
  • 56. Bird is set free in the house
  • 57. Lifecycle of an NPR story COPE in the wild
  • 58. NPR Content Capture Application
  • 66. NPR Addict iPhone App (user generated app)
  • 71. Bird is free in the house, but also sees the world
  • 75. NPR API Requests Partners External Developers Member Stations
  • 76. Netflix API Requests by Audience From 2011 External Developers
  • 77. Evernote API Requests External Developers
  • 78. Guardian API Requests External Developers
  • 79. Public API Internal API
  • 80. Daniel Jacobson Director of Engineering, Netflix API djacobson@netflix.com @daniel_jacobson http://www.linkedin.com/in/danieljacobson http://www.slideshare.net/danieljacobson

Notas del editor

  1. Content Management tends to be a bucket in which everything related to content gets thrown. It ranges from blob-based applications like blogging tools to comprehensive systems that maintain strong structure and separation of content. I prefer to think about it in terms of three discrete operations that these systems should perform: Capture, Storage and Distribution. All three operations require equal attention and are equally important for the success of content strategies. This presentation, however, will mainly focus on Distribution and how to set content free.
  2. There are many forms of caged content, including content embedded in static HTML files, in flash or other binary objects, in legacy databases or otherwise trapped in systems without mechanisms for sharing it. They are like a bird in a cage, desperate for its release. For an effective content strategy, all of that content needs to be liberated.
  3. When talking about liberating content, most people gravitate towards “open” approaches, such as Open/Public APIs, RSS, etc. They think the bird has wings so it should be able to fly anywhere in the world. Those approaches are viable in some scenarios and should not be discounted. But that isn’t always practical or necessary. And in fact, in many cases, the value of content being opened to the world is rarely transformational.
  4. Rather, a more focused liberation strategy can be effective and often transformational. The transformation is in letting the bird out of its cage, but keeping it in the house. This enables the content to be extremely portable so it can satisfy any business/use case while allowing you to leverage it for all of your internal needs. This doesn’t preclude opportunities to let the bird into the world, but I want to be clear that the biggest value proposition is often just getting it outside of the cage.
  5. The following slides will go through two use cases where content liberation has transformed the business: Netflix (my current employer) and NPR (my previous employer). They have different paths towards liberation, but the conclusions are similar.
  6. Netflix is focused on being the best, global Internet streaming video provider.
  7. We now have more than 33 million global subscribers in more than 50 countries and territories.
  8. Those subscribers consume more than a billion hours of streaming video a month which, according to Sandvine, accounts for 33% of the peak Internet traffic in the US.
  9. And we are now producing a fleet of original series, getting released throughout 2013, starting with House of Cards (released on February 1st).
  10. All 33 million of Netflix’s subscribers are watching shows (like House of Cards) and movies on virtually any device that has a streaming video screen. We are now on more than 800 different device types.
  11. All of this started, however, with launching streaming in 2007. At the time, we were only streaming on computer-based players (ie. No devices, mobile phones, etc).
  12. At that stage, the bird was still in the cage. We have lots of systems that knew how to share with each other, but the content wasn’t particularly portable.
  13. Shortly after streaming launched, in 2008, we launched our REST API. I describe it as a One-Size-Fits-All (OSFA) type of implementation because the API itself sets the rules and requires anyone who interfaces with it to adhere to those rules. Everyone is treated the same.
  14. The OSFA REST API launched to support the 1,000 flowers model. That is, we would plant the seeds in the ground (by providing access to our content) and see what flowers sprout up in the myriad fields throughout the US. The 1,000 flowers are public API developers.
  15. At this point, the bird has been set free to the world!
  16. And at launch, the API was exclusively targeted towards and consumed by the 1,000 flowers (ie. External developers).
  17. Some examples of the flowers…
  18. But as streaming gained more steam…
  19. The API evolved to support more of the devices that were getting built. The 1,000 flowers were still supported as well, but as the devices ramped up, they became a bigger focus.
  20. And organizational and system changes were taking place as well. The many devices were now calling into the API and the API was drawing its content from a ever growing distributed system of dependencies.
  21. Meanwhile, the balance of requests by audience had completely flipped. Overwhelmingly, the majority of traffic was coming from Netflix-ready devices and a shrinking percentage was from the 1,000 flowers. Today, the 1,000 flowers accounts for less than 0.1% of the API traffic.
  22. With this transformation, the bird is still free, but it is mostly flying in the house (with occasional adventures into the world).
  23. As the audience of the API has changed, so did its use cases. We started to realize that the original design for the API was not as effective as it could be in satisfying the newer, more complicated and more business-critical users (the device UI teams). We began inspecting the various ways in which the system was creating problems for us so we can create a more effective design. The following are some of the areas in which emerging problems were surfacing.
  24. The first thing we looked at was the scale of the system and how chatty the API was.
  25. With the adoption of the devices, API traffic took off! We went from about 600 million requests per month to about 42 BILLION requests in just two years.
  26. That kind of growth and those kinds of numbers seem great. And it was great as it indicated that our subscriber counts were increasing, the number of devices supported by the API was growing, our subscribers were getting richer experiences on those devices and they were also spending more time interfacing with them. Who wouldn’t want those numbers, right?
  27. Especially if you are an organization like NPR serving web pages that have ads on them. Each one of those requests create impressions for the ad which translates into revenue (and potentially increased CPM at those levels).
  28. But the API traffic is not serving ads. Rather, we are delivering documents like this, in the form of XML…
  29. Or like this, in the form of JSON.
  30. Growth in traffic, especially if it were to continue at this rate, do not directly translate into revenue. Instead, it is more likely to translate into costs. Supporting massive traffic requires major infrastructure to support the load, expenses in delivering the bits, engineering costs to build and support more complex systems, etc.
  31. So our first realization was that we could potentially significantly reduce the chattiness between the devices and the API while maintaining the same or better user experience. Rather than handling 2 billion requests per day, could we have the same UI at 300 million instead? Or less? Could having more optimized delivery of the metadata improve the performance and experience for our customers as well?
  32. With more than 800 different device types that were supporting, we learned that the variability across them can also play a role in some of that chattiness. Different devices have different characteristics and capabilities that could influence the interaction model with the API.
  33. For example, screen size could significantly affect what the API should deliver to the UI. TVs with bigger screens that can potentially fit more titles and more metadata per title than a mobile phone. Do we need to send all of the extra bits for fields or items that are not needed, requiring the device itself to drop items on the floor? Or can we optimize the deliver of those bits on a per-device basis?
  34. Different devices have different controlling functions as well. For devices with swipe technologies, such as the iPad, do we need to pre-load a lot of extra titles in case a user swipes the row quickly to see the last of 500 titles in their queue? Or for up-down-left-right controllers, would devices be more optimized by fetching a few items at a time when they are needed? Other devices support voice or hand gestures or pointer technologies. How might those impact the user experience and therefore the metadata needed to support them?
  35. The technical specs on these devices differ greatly. Some have significant memory space while others do not, impacting how much data can be handled at a given time. Processing power and hard-drive space could also play a role in how the UI performs, in turn potentially influencing the optimal way for fetching content from the API.
  36. Finally, the OSFA model also seemed to slow the innovation rate of our various UI teams (as well as the API team itself). This became one of the most important considerations in our research.
  37. Many UI teams needing metadata means many requests to the API team. In the OSFA world, we essentially needed to funnel these requests and then prioritize them. That means that some teams would need to wait for API work to be done. It also meant that, because they all shared the same endpoints, we were often adding variations to the endpoints resulting in a more complex system as well as a lot of spaghetti code. Make teams wait due to prioritization was exacerbated by the fact that tasks took longer because the technical debt was increasing, causing time to build and test to increase. Moreover, many of the incoming requests were asking us to do more of the same kinds of customizations. This created a spiral that would be very difficult to break out of…
  38. So, after months of investigation, discussions, diagraming, etc., we set a path for our solution.
  39. Ultimately, we determined that they definitely is a better way than adhering to the industry standards around a OSFA REST API. We don’t care about adhering to the industry standard practices, such as building a REST-based API…
  40. What we care about is our audience! That is, we care about how to best serve the UI teams who in turn care about how to best serve Netflix subscribers. We will build systems that best serve them regardless of what that means for various standards or industry best practices.
  41. So, if our OSFA REST API interaction model looked roughly like this (where are device would have a set of rules it needed to adhere to and would make a series of calls to the API based on those rules to create the UI)…
  42. We would alter the interaction model substantially by allowing the device to make a single call back to an optimized API for that device (we are calling it a client adapter). That adapter will then fetch the data from the generic API and then format and deliver the document back to the device itself. This decouples the act of data gathering from data formating/delivery. The gathering would be done by the API system that we support while the formating/delivery would be done in the adapter by the UI teams, all before delivering the payload back to the device itself for rendering. For more details on the new system, you can learn more at http://techblog.netflix.com/search/label/api.
  43. This design is not for everyone. Here is a recipe for those to which something like this could apply…
  44. And don’t forget heaps of chocolate for your engineers!
  45. The NPR story has a few differences in how it evolved, but the importance of the bird in the house is about the same.
  46. In the first three years of my employment at NPR (1999-2002), there were four significant redesigns. Some of them were siginficant visual designs, but some of the changes were also in the underpinnings. For example, early on the content was basically just titles and links to audio for a story. Throughout those three years, we would slowly introduce new data elements to enrich those stories. The final one here shows more images and links out to pages where the earlier ones were mainly Listen links.
  47. Meanwhile, the “systems” that supported these sites were very immature. There were static HTML files plus two distinct applications/databases that supported different areas of the system. A non-trivial amount of the content in the two database applications was the same…
  48. That this stage, the bird was very much in the cage! We reviewed these problems and determined that a site and system redesign was necessary. First, we needed to collapse the databases into one clean and modular database while eliminating as many of the HTML files as possible (in favor of a database-driven system). Meanwhile, the evolution of the site in earlier years told us that presentation layers will constantly be changing so we needed to make sure the capturing and managing of content was separated from any presentation layer that would emerge.
  49. That is when we came up with COPE: Create Once, Publish Everywhere.
  50. The key philosophies that support COPE drove our redesign. Web publishing tools focus on capturing content for a display. That is why many of them have big blog fields where image links and other elements are inline with the text. Our goal was to not focus on publishing. Rather, we needed to manage content independent of where it will live, which takes us to ensuring that the managing of content is separated completely from its display. Next was content modularity which ensures that we break up all blogs into discreet fields for each element. Each field should have a very specific and focused purpose. Portability, which emerged over time, ensures that the content can live effectively wherever it needs to go. Portability started with multiple title lengths to allow different copy to appear in different sized locations (the first example was having the short title appear in a narrow column of PBS.org). But it also included getting rid of dirty markup such as &lt;i&gt; tags that could not be rendered by iPods.
  51. This is an architecture diagram that we created years later after the API was built in to create a further level of abstraction between content and display. This architecture, no doubt, has changed since then.
  52. But the goal remains the same… Capture content from many different points (human editors, feeds from internal and external sources, etc), store that content in a clean, modular and portable way. Then publish to many destinations.
  53. In terms of the NPR API, the first use for it was an internal one to support areas of NPR.org. In that sense, the bird was clearly out of the cage, but that particular use case had the bird exclusively in the house.
  54. As the API took flight, however, its reach became quite impressive. The following are just a few examples of where a single story had been published.
  55. This is what the story, “A Space Voyage To Genesis” looks like in our content capture application. It is important to note that in terms of our system, this capture application is just another presentation layer. I have highlighted the title in this an other slides where it may be tougher to find it.
  56. Once in the system, it becomes available through the NPR API.
  57. OnNPR.org’s story page.
  58. On the NPR.org tablet site.
  59. In the NPR.org audio player. Notice, the title here is different because it draws from a different field in this location. In the audio player, the title gets pulled from the audio file name rather than the story title (a demonstration of the modularity of the data and our ability to have it be context-driven).
  60. On the NPR News iPhone App.
  61. On the mobile site.
  62. On the NPR Android App, which was originally built (without our involvement) by a Google employee with his 20% time, getting the data from the NPR public API. We eventually caught up with him and adopted his work, which became the official NPR Android app.
  63. NPR Addict is another app built entirely by a public developer using the NPR public API.
  64. The same story on KQED.org, one of the San Francisco NPR member stations.
  65. On WBUR.org, one of the Boston NPR member stations.
  66. And of course, this and other stories can make their way to virtually any other location, including IP radios, news aggregators, connected cars, other devices, etc.
  67. At this point, the bird is completely free, although it does spend most of its time in the house.
  68. And as noted early by the frequent redesigns, this major site redesign happened in 2009. The changes were visually very different, but they also required substantially changes to the capture, storage and distribution channels in our content management efforts.
  69. Prior to then, in 2008, similar efforts were made to support the NPR Music site.
  70. And then much more recently, a new story page was created. All of these design efforts, while substantial, would be much more difficult without COPE.
  71. So, looking at the API request distribution for NPR, it is now obviously very skewed towards internal NPR consumption.
  72. Which looks very similar, although not as extreme, as the Netflix distribution.
  73. To further emphasize the point that birds in the house are more valuable than in the open world, other companies like Evernote see a very similar distributions.
  74. As does The Guardian in UK.
  75. My final point will be another analogy. APIs are like icebergs. The tip, which is highly visible and gets a lot of attention equates to public APIs. They are the APIs that you hear about in the news, check out on developer portals, experiment with at hackathons, etc. But they very much are the smallest part of the iceberg in virtually every way. The big mass under the water that you don’t see represent internal or private APIs. They are substantially larger in terms of impact for most companies, amount of traffic, and in pure number of such APIs that companies rely on. As a result, it is important to understand your audience and to target them towards your most impactful segments. In most cases, that will likely be internal developers…