SlideShare a Scribd company logo
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

More Related Content

What's hot

SOA Latam 2015
SOA Latam 2015SOA Latam 2015
SOA Latam 2015
Domingo Suarez Torres
 
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 kit
Shiju 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 Search
DataStax Academy
 
Exposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIsExposing GraphQLs as Managed APIs
Exposing GraphQLs as Managed APIs
WSO2
 
Microservice: starting point
Microservice:  starting pointMicroservice:  starting point
Microservice: starting point
inovia
 
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 vision
Sebastian Schleicher
 
SAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix ScaleSAIS2018 - Fact Store At Netflix Scale
SAIS2018 - Fact Store At Netflix Scale
Nitin S
 
RedisConf17 - Pain-free Pipelining
RedisConf17 - Pain-free PipeliningRedisConf17 - Pain-free Pipelining
RedisConf17 - Pain-free Pipelining
Redis 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 Anything
NGINX, Inc.
 
IAM is your friend
IAM is your friendIAM is your friend
IAM is your friend
AWSCOMSUM
 
RealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - SparkRealTime Recommendations @Netflix - Spark
RealTime Recommendations @Netflix - Spark
Nitin S
 
Pracital application logging and monitoring
Pracital application logging and monitoringPracital application logging and monitoring
Pracital application logging and monitoring
Laurynas Tretjakovas
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
Shiju Varghese
 
Whowas: History of resources at APNIC
Whowas: History of resources at APNICWhowas: History of resources at APNIC
Whowas: History of resources at APNIC
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
Garindra Prahandono
 

What's hot (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
 

Viewers also liked

7361 28363-1-pb
7361 28363-1-pb7361 28363-1-pb
7361 28363-1-pb
djairpaulo paulo
 
Opening title sequence analyss
Opening title sequence analyssOpening title sequence analyss
Opening title sequence analyss
leila doyle
 
Oros-Minbizt csm
Oros-Minbizt csmOros-Minbizt csm
Oros-Minbizt csm
kszrsomogyi
 
Lecturas mpp español
Lecturas mpp españolLecturas mpp español
Lecturas mpp español
arboleda de gaia
 
THE SECRETS OF TEAMWORK
THE SECRETS OF TEAMWORKTHE SECRETS OF TEAMWORK
THE SECRETS OF TEAMWORKSarah Keuhl
 
Accounting biz brokers
Accounting biz brokersAccounting biz brokers
Accounting biz brokers
bizbrokers
 
Testeo de memoria
Testeo de memoriaTesteo de memoria
Testeo de memoria
naye torres
 
Windows 10 presentacion
Windows 10 presentacionWindows 10 presentacion
Windows 10 presentacion
sue_mc
 
Taller repaso parcial
Taller repaso parcialTaller repaso parcial
Taller repaso parcial
67009651
 

Viewers also liked (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
 

Similar to #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 Frey
ManageIQ
 
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/2015
aspyker
 
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
Redis 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 Ecosystem
Hellmar 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 Program
aspyker
 
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
All 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 Infrastructure
Fei 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
 
Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017
Ioannis Papapanagiotou
 
Introduction to Backend Development (1).pptx
Introduction to Backend Development (1).pptxIntroduction to Backend Development (1).pptx
Introduction to Backend Development (1).pptx
OsuGodbless
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
Hojoong Kim
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFix
C4Media
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
All 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 Applications
XWiki
 
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 & Containers
aspyker
 
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
Sammy Fung
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHead
Karthik Murugesan
 

Similar to #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
 

Recently uploaded

Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 

Recently uploaded (20)

Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 

#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