SlideShare uma empresa Scribd logo
1 de 27
Transcending Traditional Systems and Labels: An API-First Archives Approach
Camille Salas | Product Owner Will Boyd | Developer John Nelson | Developer
@NPR_RAD | @unacamisa | @jhnsln
Research, Archives, and Data Strategy
Dear Don:
Let there be metadata for many, many reasons
Broadcast Librarians would apply standardized program information to a new
system in 1973 and would work backwards chronologically to input previously
existing programs -CPB Grant Application
“... [T]he licensee of each station must maintain a station log . . . that reflects the
station operation” - FCC Requirements
21st century solutions
First CMS
● Similar to an
Access Database
● Manual entry of
metadata time
consuming
● Limited reporting
options
Artemis 1.0
2011
Open source software
● Communicates with
our digital production
system via API
● Increase of workflow
efficiencies/ ingest of
transcripts
However
● Upgrading was not an
option/ too customized
Artemis 2.0
2016
In-house development
solution
● Focus on the metadata
first
● An eye towards the
future
● All media - videos and
podcasts
● Represent our new
name
Solution: An API-
First Approach
Lessons Learned From Previous
Systems Implementation:
NPR has unique archival, search,
and business needs
Growing business needs and a challenge
What system can we put in place to respond to NPR’s ever-growing business needs?
Requirements
Flexible and responsive to our growing needs
Searchable system
Keep up with the pace of new daily content
Generate reports
Access to our historical audio for not only
research but future re-use
Reduce our metadata entry workflow
Early 2015
Started with building of
an API first application
Develop our
data model
We called it the
“Trapper Keeper”
Frame our
MVP’s
Ingest Content,
Edit our Metadata,
Search Functionality,
Distribute Content
Spring 2016
Work with our in-
house UI team on new
updated interface
Launch
within sight
Wrap-up MVPs and
test
How did we get here? ¯_(ツ)_/¯
● Our data model was probably the most important part of the process. We needed
something that could be flexible enough to accommodate our growing digital
archive needs while also being able to handle.
● We settled on the analogy of a trapper keeper instead of using terms like stuff and
things.
● I personally voted for stuff and things, but got vetoed. I guess the stuff and things
api isn’t really that catchy
Development Process
● We didn’t need to have everything worked out up front!
● Hypermedia over RESTful
● Managing current product with new development!
● Microservices-ISH
Separation of code
Separated UI and API codebases
The Angular front end
● My angular perspective, coming from mostly backbone and jquery
○ Intimidating to get into
○ Angular docs have complicated examples
○ Once you get it, it’s EASY and FAST
● Automated everything
○ Set up with Yeoman and Jenkins
○ On every push: pull code, install, test, serve the code
○ 5 minute install with npm and bower
● Every application state is stored in the URL
● We created a simple CMS for catalogers and it gives the cataloger MORE POWER
My favorite front-end features
Share a Search URL
Share a Story URL
My favorite front end features
● Every application state is stored in the URL.
● We created a CMS for the cataloger. It’s simple and powerful.
Editing Content Types
Adding Content
Adding Content continued..
Wait, where is the business / domain logic?
● So there is front-end code and an API.
○ Some logic in the API schema documents
○ Some logic is stuffed into the front end
● What about stuff that needs to run on a server?
○ OAuth 2.0
○ Connect to Active Directory?
● So we built a proxy layer. Another API, specific for Artemis logic.
The proxy. An API in front of the API.
● Built with nodejs and express
● We keep finding uses for it:
○ Authenticate users with oauth 2.0
○ Connect to other internal NPR APIs
○ Query the NPR RAD taxonomy
○ Running bulk updates
○ Get and Set user preferences (part of the authentication endpoint)
○ Export search results
○ Browse the massive Filesystem that stores all of our archived wav files
Link Archive Story to npr.org Web Content
The proxy
● An authentication microservice between the UI and the API.
● Built with nodejs and express
● We keep finding uses for it:
○ Authenticate users with oauth 2.0
○ Connect to other internal NPR APIs
○ Query and use our taxonomy
○ Authenticate users with oauth 2.0
○ Running bulk updates
○ Get and Set user preferences (part of the authentication endpoint)
○ Export search results
○ Browse the massive Filesystem that stores all of our archived wav files
Search Taxonomy while Cataloging
The proxy
● An authentication microservice between the UI and the API.
● Built with nodejs and express
● We keep finding uses for it:
○ Authenticate users with oauth 2.0
○ Connect to other internal NPR APIs
○ Query the NPR RAD taxonomy
○ Running bulk updates
○ Get and Set user preferences
○ Export search results
○ Browse the mounted filesystem with our wav files
Migration hardship
● MySQL to NoSQL requires a LOT of http calls
● Querying a year of data in MySQL on Old Artemis takes less than a minute.
● Inserting that data into DynamoDB and then Elastic takes about an hour.
● Mistakes add lots of time.
● HTTP calls will be dropped.
● Duplicates will be made.
● Re-migration is inevitable.
Lessons learned: a Product Owner’s view
● API-First means our front end options were limitless; deploying our front end
became simpler and more frequent
● Documentation is key
● Plan on backup resources just in case - special thanks @sayrahknight
● Managing expectations with users is challenging
● Make scrum fit your team’s needs
Next steps
● Spring/Summer 2016 Launch
● Autotagging incorporation
● Ingest of additional NPR content
● Freeing our metadata
● Supporting our NPR One app colleagues
Follow Our Adventure @NPR_RAD

Mais conteúdo relacionado

Mais procurados

2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_MicroservicesJason Varghese
 
RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database
RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database
RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database Redis Labs
 
Microservices in Go with Go kit
Microservices in Go with Go kitMicroservices in Go with Go kit
Microservices in Go with Go kitShiju Varghese
 
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise SearchRestlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise SearchDataStax Academy
 
Exposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIsExposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIsWSO2
 
Microservice: starting point
Microservice:  starting pointMicroservice:  starting point
Microservice: starting pointinovia
 
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...Redis Labs
 
Mihai Tataran - Windows 8.1 for Developers
Mihai Tataran - Windows 8.1 for DevelopersMihai Tataran - Windows 8.1 for Developers
Mihai Tataran - Windows 8.1 for DevelopersITSpark Community
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our visionSebastian Schleicher
 
SAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix ScaleSAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix ScaleNitin S
 
RedisConf17 - Pain-free Pipelining
RedisConf17 - Pain-free PipeliningRedisConf17 - Pain-free Pipelining
RedisConf17 - Pain-free PipeliningRedis Labs
 
NGINX Microservices Reference Architecture: Ask Me Anything
NGINX Microservices Reference Architecture: Ask Me AnythingNGINX Microservices Reference Architecture: Ask Me Anything
NGINX Microservices Reference Architecture: Ask Me AnythingNGINX, Inc.
 
IAM is your friend
IAM is your friendIAM is your friend
IAM is your friendAWSCOMSUM
 
RealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - SparkRealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - SparkNitin S
 
Pracital application logging and monitoring
Pracital application logging and monitoringPracital application logging and monitoring
Pracital application logging and monitoringLaurynas Tretjakovas
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATSShiju Varghese
 
Whowas: History of resources at APNIC
Whowas: History of resources at APNICWhowas: History of resources at APNIC
Whowas: History of resources at APNICAPNIC
 
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelLaskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelGarindra Prahandono
 

Mais procurados (20)

SOA Latam 2015
SOA Latam 2015SOA Latam 2015
SOA Latam 2015
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices2016_04_04_CNI_Spring_Meeting_Microservices
2016_04_04_CNI_Spring_Meeting_Microservices
 
RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database
RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database
RedisConf17 - Redfin - The Real Estate Brokerage and the In-memory Database
 
Microservices in Go with Go kit
Microservices in Go with Go kitMicroservices in Go with Go kit
Microservices in Go with Go kit
 
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise SearchRestlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
 
Exposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIsExposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIs
 
Microservice: starting point
Microservice:  starting pointMicroservice:  starting point
Microservice: starting point
 
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
 
Mihai Tataran - Windows 8.1 for Developers
Mihai Tataran - Windows 8.1 for DevelopersMihai Tataran - Windows 8.1 for Developers
Mihai Tataran - Windows 8.1 for Developers
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our vision
 
SAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix ScaleSAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix Scale
 
RedisConf17 - Pain-free Pipelining
RedisConf17 - Pain-free PipeliningRedisConf17 - Pain-free Pipelining
RedisConf17 - Pain-free Pipelining
 
NGINX Microservices Reference Architecture: Ask Me Anything
NGINX Microservices Reference Architecture: Ask Me AnythingNGINX Microservices Reference Architecture: Ask Me Anything
NGINX Microservices Reference Architecture: Ask Me Anything
 
IAM is your friend
IAM is your friendIAM is your friend
IAM is your friend
 
RealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - SparkRealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - Spark
 
Pracital application logging and monitoring
Pracital application logging and monitoringPracital application logging and monitoring
Pracital application logging and monitoring
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
 
Whowas: History of resources at APNIC
Whowas: History of resources at APNICWhowas: History of resources at APNIC
Whowas: History of resources at APNIC
 
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelLaskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
 

Destaque

Destaque (12)

14 + 15
14 + 1514 + 15
14 + 15
 
7361 28363-1-pb
7361 28363-1-pb7361 28363-1-pb
7361 28363-1-pb
 
Opening title sequence analyss
Opening title sequence analyssOpening title sequence analyss
Opening title sequence analyss
 
Oros-Minbizt csm
Oros-Minbizt csmOros-Minbizt csm
Oros-Minbizt csm
 
Lecturas mpp español
Lecturas mpp españolLecturas mpp español
Lecturas mpp español
 
THE SECRETS OF TEAMWORK
THE SECRETS OF TEAMWORKTHE SECRETS OF TEAMWORK
THE SECRETS OF TEAMWORK
 
Ram
RamRam
Ram
 
Accounting biz brokers
Accounting biz brokersAccounting biz brokers
Accounting biz brokers
 
Testeo de memoria
Testeo de memoriaTesteo de memoria
Testeo de memoria
 
Windows 10 presentacion
Windows 10 presentacionWindows 10 presentacion
Windows 10 presentacion
 
Taller repaso parcial
Taller repaso parcialTaller repaso parcial
Taller repaso parcial
 
PRESENTAZIONE CV TRADIZIONALE
PRESENTAZIONE CV TRADIZIONALEPRESENTAZIONE CV TRADIZIONALE
PRESENTAZIONE CV TRADIZIONALE
 

Semelhante a #RADC4L16: An API-First Archives Approach at NPR

Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...
Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...
Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...Ridwan Fadjar
 
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason FreyDesign Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason FreyManageIQ
 
How we leveraged Drupal to build a leading SaaS product
How we leveraged Drupal to build a leading SaaS product How we leveraged Drupal to build a leading SaaS product
How we leveraged Drupal to build a leading SaaS product Invotra
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015aspyker
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedis Labs
 
Automate Hadoop Cluster Deployment in a Banking Ecosystem
Automate Hadoop Cluster Deployment in a Banking EcosystemAutomate Hadoop Cluster Deployment in a Banking Ecosystem
Automate Hadoop Cluster Deployment in a Banking EcosystemHellmar Becker
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Programaspyker
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixAll Things Open
 
ML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning Infrastructure
ML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning InfrastructureML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning Infrastructure
ML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning InfrastructureFei Chen
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsFedir RYKHTIK
 
Introduction to Backend Development (1).pptx
Introduction to Backend Development (1).pptxIntroduction to Backend Development (1).pptx
Introduction to Backend Development (1).pptxOsuGodbless
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixC4Media
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open SourceAll Things Open
 
JIO and WebViewers: interoperability for Javascript and Web Applications
JIO and WebViewers: interoperability  for Javascript and Web ApplicationsJIO and WebViewers: interoperability  for Javascript and Web Applications
JIO and WebViewers: interoperability for Javascript and Web ApplicationsXWiki
 
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...Ravindra Singh
 
NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containersaspyker
 
Global Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 ForecastGlobal Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 ForecastSammy Fung
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadKarthik Murugesan
 

Semelhante a #RADC4L16: An API-First Archives Approach at NPR (20)

Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...
Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...
Ridwan Fadjar Septian PyCon ID 2021 Regular Talk - django application monitor...
 
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason FreyDesign Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
 
How we leveraged Drupal to build a leading SaaS product
How we leveraged Drupal to build a leading SaaS product How we leveraged Drupal to build a leading SaaS product
How we leveraged Drupal to build a leading SaaS product
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
 
Automate Hadoop Cluster Deployment in a Banking Ecosystem
Automate Hadoop Cluster Deployment in a Banking EcosystemAutomate Hadoop Cluster Deployment in a Banking Ecosystem
Automate Hadoop Cluster Deployment in a Banking Ecosystem
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Program
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at Netflix
 
ML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning Infrastructure
ML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning InfrastructureML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning Infrastructure
ML Platform Q1 Meetup: Airbnb's End-to-End Machine Learning Infrastructure
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and Projects
 
Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017
 
Introduction to Backend Development (1).pptx
Introduction to Backend Development (1).pptxIntroduction to Backend Development (1).pptx
Introduction to Backend Development (1).pptx
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFix
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
 
JIO and WebViewers: interoperability for Javascript and Web Applications
JIO and WebViewers: interoperability  for Javascript and Web ApplicationsJIO and WebViewers: interoperability  for Javascript and Web Applications
JIO and WebViewers: interoperability for Javascript and Web Applications
 
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
Starting a Drupal 8 Project? Let’s do a Technical Discovery - DrupalConAsia 2...
 
NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containers
 
Global Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 ForecastGlobal Open Source Development 2011-2014 Review and 2015 Forecast
Global Open Source Development 2011-2014 Review and 2015 Forecast
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHead
 

Último

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

#RADC4L16: An API-First Archives Approach at NPR

  • 1. Transcending Traditional Systems and Labels: An API-First Archives Approach Camille Salas | Product Owner Will Boyd | Developer John Nelson | Developer @NPR_RAD | @unacamisa | @jhnsln Research, Archives, and Data Strategy
  • 3. Let there be metadata for many, many reasons Broadcast Librarians would apply standardized program information to a new system in 1973 and would work backwards chronologically to input previously existing programs -CPB Grant Application “... [T]he licensee of each station must maintain a station log . . . that reflects the station operation” - FCC Requirements
  • 4. 21st century solutions First CMS ● Similar to an Access Database ● Manual entry of metadata time consuming ● Limited reporting options Artemis 1.0 2011 Open source software ● Communicates with our digital production system via API ● Increase of workflow efficiencies/ ingest of transcripts However ● Upgrading was not an option/ too customized Artemis 2.0 2016 In-house development solution ● Focus on the metadata first ● An eye towards the future ● All media - videos and podcasts ● Represent our new name
  • 5. Solution: An API- First Approach Lessons Learned From Previous Systems Implementation: NPR has unique archival, search, and business needs
  • 6. Growing business needs and a challenge What system can we put in place to respond to NPR’s ever-growing business needs? Requirements Flexible and responsive to our growing needs Searchable system Keep up with the pace of new daily content Generate reports Access to our historical audio for not only research but future re-use Reduce our metadata entry workflow
  • 7. Early 2015 Started with building of an API first application Develop our data model We called it the “Trapper Keeper” Frame our MVP’s Ingest Content, Edit our Metadata, Search Functionality, Distribute Content Spring 2016 Work with our in- house UI team on new updated interface Launch within sight Wrap-up MVPs and test
  • 8. How did we get here? ¯_(ツ)_/¯ ● Our data model was probably the most important part of the process. We needed something that could be flexible enough to accommodate our growing digital archive needs while also being able to handle. ● We settled on the analogy of a trapper keeper instead of using terms like stuff and things. ● I personally voted for stuff and things, but got vetoed. I guess the stuff and things api isn’t really that catchy
  • 9. Development Process ● We didn’t need to have everything worked out up front! ● Hypermedia over RESTful ● Managing current product with new development! ● Microservices-ISH
  • 10. Separation of code Separated UI and API codebases
  • 11. The Angular front end ● My angular perspective, coming from mostly backbone and jquery ○ Intimidating to get into ○ Angular docs have complicated examples ○ Once you get it, it’s EASY and FAST ● Automated everything ○ Set up with Yeoman and Jenkins ○ On every push: pull code, install, test, serve the code ○ 5 minute install with npm and bower
  • 12. ● Every application state is stored in the URL ● We created a simple CMS for catalogers and it gives the cataloger MORE POWER My favorite front-end features
  • 15. My favorite front end features ● Every application state is stored in the URL. ● We created a CMS for the cataloger. It’s simple and powerful.
  • 19. Wait, where is the business / domain logic? ● So there is front-end code and an API. ○ Some logic in the API schema documents ○ Some logic is stuffed into the front end ● What about stuff that needs to run on a server? ○ OAuth 2.0 ○ Connect to Active Directory? ● So we built a proxy layer. Another API, specific for Artemis logic.
  • 20. The proxy. An API in front of the API. ● Built with nodejs and express ● We keep finding uses for it: ○ Authenticate users with oauth 2.0 ○ Connect to other internal NPR APIs ○ Query the NPR RAD taxonomy ○ Running bulk updates ○ Get and Set user preferences (part of the authentication endpoint) ○ Export search results ○ Browse the massive Filesystem that stores all of our archived wav files
  • 21. Link Archive Story to npr.org Web Content
  • 22. The proxy ● An authentication microservice between the UI and the API. ● Built with nodejs and express ● We keep finding uses for it: ○ Authenticate users with oauth 2.0 ○ Connect to other internal NPR APIs ○ Query and use our taxonomy ○ Authenticate users with oauth 2.0 ○ Running bulk updates ○ Get and Set user preferences (part of the authentication endpoint) ○ Export search results ○ Browse the massive Filesystem that stores all of our archived wav files
  • 23. Search Taxonomy while Cataloging
  • 24. The proxy ● An authentication microservice between the UI and the API. ● Built with nodejs and express ● We keep finding uses for it: ○ Authenticate users with oauth 2.0 ○ Connect to other internal NPR APIs ○ Query the NPR RAD taxonomy ○ Running bulk updates ○ Get and Set user preferences ○ Export search results ○ Browse the mounted filesystem with our wav files
  • 25. Migration hardship ● MySQL to NoSQL requires a LOT of http calls ● Querying a year of data in MySQL on Old Artemis takes less than a minute. ● Inserting that data into DynamoDB and then Elastic takes about an hour. ● Mistakes add lots of time. ● HTTP calls will be dropped. ● Duplicates will be made. ● Re-migration is inevitable.
  • 26. Lessons learned: a Product Owner’s view ● API-First means our front end options were limitless; deploying our front end became simpler and more frequent ● Documentation is key ● Plan on backup resources just in case - special thanks @sayrahknight ● Managing expectations with users is challenging ● Make scrum fit your team’s needs
  • 27. Next steps ● Spring/Summer 2016 Launch ● Autotagging incorporation ● Ingest of additional NPR content ● Freeing our metadata ● Supporting our NPR One app colleagues Follow Our Adventure @NPR_RAD