SlideShare a Scribd company logo
1 of 30
NODE.CQ 
Joshua Miller 
NASCAR Digital Media 
jsmiller@nascar.com 
@jo5h | www.jo5h.com 
CREATING REAL-TIME DATA MASHUPS WITH 
NODE.JS AND ADOBE CQ
PROBLEM SCENARIO 
We want to mix authored content from Adobe CQ with Real- 
Time Race Data from our Timing and Scoring system. 
Combining Slowly Changing Dimensions such as Driver 
Team Name, Vehicle Manufacturer Name, Track Information, 
etc. with Constantly Changing Metrics such as Last Lap 
Speed, Driver Position, Lap Number, etc. 
Adobe CQ is great at managing the authored content, but is 
less adept at handling the real-time data. The time it takes to 
ingest the data and replicate it is too long – the data will have 
already changed.
THE SOLUTION 
ENTER 
NODE.JS
NODE.JS AND ADOBE CQ 
ARE COMPLIMENTARY 
ADOBE CQ 
• Enterprise-Scale 
CMS 
• Excels at Document 
Storage 
• Great Authoring 
Environment 
• Replicates and 
Scales Nicely 
NODE.JS 
• Enterprise-Scale 
Throughput 
• Excels at Real-Time 
Data 
• Easily Connect 
Disparate Systems 
• Scales Nicely
COMMON USE-CASES FOR 
NODE.JS 
• Creating Network-Intensive Applications 
• Creating and Consuming Real-Time Data 
• Creating Scalable, High-Throughput Solutions for Large 
Numbers of Simultaneous Connections 
• Creating and Consuming Service-Based API’s 
• Creating Stateless, Request-Response Scenarios 
• Creating Push Scenarios over Websockets 
• Creating Event-Driven Services
A QUICK INTRODUCTION TO 
WORKING 
WITH 
NODE.JS
WORKING WITH NODE.JS 
SHOULD BE LIKE WORKING 
WITH BUILDING BLOCKS 
Node.JS has a broad and diverse developer community. If 
you want to build something with Node, chances are 
someone else has already done the same thing. 
Before you start building from scratch, look at the packages 
that already exist on NPM (http://npmjs.org) 
Using NPM (Node Package Manager), you can install 
packages that perform the tasks you need to accomplish.
ELEMENTS OF A NODE.JS 
APPLICATION 
Web Server / Framework 
• Express 
• Flatiron 
Logging Service 
• Morgan 
• Winston 
Configuration 
• Nconf 
• config 
Promise Library 
• Q 
• promise 
Built-In Services 
• HTTP / HTTPS 
• FileSystem 
• Crypto 
• Events 
• Stream 
• Etc.
NODE.JS GOTCHAS 
Some things about Node.JS are a bit different from working with 
other technologies. 
• NODE.JS IS ASYNCHRONOUS 
Getting familiar with JavaScript Promises and Deferred 
Libraries or understanding an developing very clear callback 
chains is a must for working with Node.JS effectively 
• NODE.JS IS A PACKAGE-DRIVEN TECHNOLOGY 
Getting comfortable working with a Package Manager (NPM) 
is a must for working with Node.JS effectively 
• YOUR APPLICATION IS YOUR SERVER 
There is no Apache or nginx or IIS to work with. You build 
your server, or use a framework like Express or Flatiron 
• NODE.JS IS AS FAULT-TOLERANT AS YOU MAKE IT 
Building solid functionality with lots of error handling and 
good logging is important
WTF DID YOU JUST BUILD? 
Node.JS is Package-Driven and NPM provides you with a 
wealth of resources for working with Node, but be careful 
what packages you choose. If you see a package that has 
25,000 downloads and a vibrant development 
history on GitHub then you’re probably safe. 
If you’re the only one that has downloaded this 
package this calendar year and the last commit 
was made in 2010, you might want to keep 
looking for a more popular package. 
Just because you have bricks in your bin, 
you don’t have to use them all together.
SO WHAT ARE OUR NEXT STEPS? 
INTEGRATING 
ADOBE CQ
USING ADOBE CQ’S REST API 
WITH NODE.JS 
Adobe CQ is built on top of Apache Sling – a Web Framework 
that provides a REST API to CRX - the Java Content 
Repository that sits beneath Adobe CQ 
You can directly query CRX using simple REST commands 
and have the output formatted as JSON 
JSON data can be directly consumed by the Node.JS 
application independent of your website’s front-end
MAKING RESTFUL REQUESTS 
TO ADOBE CQ CONTENT 
It’s simple enough to extract content using the RESTful API 
in Adobe CQ. Take for example Race Data stored at the path: 
/content/nascar/lookups/events/sprint-cup-series/2014/ 
You can easily view this data using the following URL: 
http://10.196.135.9:4503/content/nascar/lookups/events/sprint 
-cup-series/2014.infinity.json 
Note the “infinity” selector in the URL – this can be replaced 
with a number indicating the node-depth from which you 
wish to return data 
http://10.196.135.9:4503/content/nascar/lookups/events/sprint 
-cup-series/2014.2.json
USING THE NODE-DEPTH 
SELECTOR WITH ADOBE CQ 
USING THE INFINITY 
NODE-DEPTH SELECTOR 
USING A NUMERIC NODE-DEPTH 
SELECTOR 
Returns either all child 
nodes at the given path, 
or an array of the 
available numeric node-depth 
selectors if the 
structure is deemed too 
large. 
Returns data from the root 
path, and all child nodes 
at the node-depth 
indicated by the selector.
NODE-DEPTH SELECTOR 
RESULTS 
ARRAY OF AVAILABLE NODE-DEPTH SELECTORS 
JSON OUTPUT OF THE AVAILABLE NODES
NOW THAT WE HAVE THIS DATA 
HOW DO WE 
USE THE DATA 
WITH NODE.JS?
HOW DO WE USE THIS 
DATA? 
By itself, the data that comes from CQ is only as useful as 
the underlying data structure, the power of this data comes 
in our ability to use Node.JS to quickly extract the data and 
then mash it up with other data sources. 
Using Node.JS, not only can we query data from CRX, we can 
query data from a number of sources and combine our CRX 
data with other feeds to create new data sources. 
This enables us to mix authored content from CRX with Real- 
Time data from our Timing and Scoring feed to create a new, 
single feed that can be used in our Mobile product.
HOW IS THE DATA JOINED 
INTO A NEW DATA SOURCE? 
Creating the feed mashup is not out-of-the-box functionality 
for Node.JS – we have to custom-code a method by which to 
join feeds together 
Node.JS enables us to build an application using the building 
blocks we discussed earlier, but also allows us to create new, 
custom blocks with which to build 
Without too much effort, we have created a package that 
allows feeds to be joined together using the same Primary 
and Foreign Key relationships you would find in a typical 
RDBMS product.
HOW IS THE DATA JOINED 
INTO ONE FEED? 
• Using simple JSON syntax, we can define a new feed that 
is comprised of one or more feeds. 
• Each feed has a “join” condition that allows a the feed to 
be joined to the collection based on a specific JSON node 
value. 
• Special syntax allows for variable replacement from URL 
parameters 
• Special syntax allows for values from the new feed to be 
used throughout the feed 
• Includes custom functions such as Date and String 
Formatting 
• Includes dependency conditions where field values are 
calculated and/or displayed based on the value of other 
fields
TAKING IT ONE STEP FURTHER 
INTEGRATING 
REAL-TIME 
DATA
GETTING LIVE DATA FROM 
THE RACETRACK 
During a race, NASCAR vehicles are monitored via 
transponders placed in the cars. As the cars cross over fiber 
optic sensors in the track, the data is transmitted to a piece 
of software called TimeGear. 
TimeGear tracks the speed of each car, its position relative to 
the other race cars and feeds this data into the Timing and 
Scoring system. 
Timing and Scoring provides a feed that is consumed by 
Apex, our Mobile Cacher application, which streams the 
JSON feed out to Akamai where the data is consumed by 
internal applications and third-parties such as Yahoo!, Fox 
Sports and ESPN.
INTEGRATING OUR REAL-TIME 
DATA FEED 
Using the same syntax and the same data providers, we can 
query our Real-Time race data directly from Timing and Scoring, 
or directly from Akamai to reduce the load on the T&S systems. 
Without modifying any code, provided a relationship can be 
found in the data, we can now merge any JSON data source into 
our feed. 
This allows us to merge our Real-Time race statistics right into 
our authored CQ content, providing a richer and more in-depth 
feed for our Mobile application without the delay of first 
ingesting the race data into Adobe CQ. 
Now that our data is available in a new format, we can provide a 
single stream of data to the NASCAR Mobile application, 
reducing the number of calls that need to be made from a 
mobile device.
EXTENDING OUR DATASET 
WITH THIRD-PARTY SERVICES 
Given the flexibility of this data aggregator, we can now start 
to lay new and powerful data layers from disparate source on 
top of our existing data without having to store that data in 
CQ. 
For example, we can pull Real-Time Weather Conditions into 
our data based on the zip code of the track. We could pull 
track records to note if a driver’s lap speed was the fastest in 
the track’s history. We could even pull in Sponsor 
information based on the current Race Leader. 
We accomplish all of this without the need to add to the 
storage requirements of our application, or write custom 
aggregators for external content.
NOW THAT WE’RE DONE 
WHAT ARE THE 
BENEFITS OF 
USING 
NODE.JS?
COULDN’T WE HAVE DONE 
THIS USING CQ? 
Of course, we could have accomplished the same end-result 
using only Adobe CQ and some custom Java code. There are 
some real benefits to using Node.JS in this scenario though: 
• There is no code to compile and new feeds only require 
JSON configuration 
• Node.JS is an extremely high-throughput platform. We can 
serve hundreds of simultaneous connections per second. 
• We reduce the load on our CQ environment by offloading 
tasks to an application with fewer hardware requirements 
• We don’t use an large, complex web framework to deliver 
small streams of data with no user interface requirements
IS NODE.JS REALLY THAT 
MUCH MORE PERFORMANT? 
We have used Node.JS for a number of new tasks here at 
NASCAR Digital Media lately and have found it to be 
incredibly performant. We recently launched a new RaaS 
implementation with Gigya and use Node.JS to authenticate 
users. 
During our load tests, we found that we could serve in 10 
minutes of sustained load, all of the traffic that we expected 
the Node service to experience within the entire race season. 
In fact, we have found that our load tests typically max-out 
not because of Node’s inability to serve more requests, but 
because MySQL starts to queue requests, or Gigya begins to 
throttle requests-per-second.
OK, I ’M INTRIGUED … 
WHERE CAN I 
LEARN MORE?
RELATED RESOURCES 
• Node.JS 
http://nodejs.org/ 
• NPM 
https://www.npmjs.org/ 
• Adobe CQ 
http://www.adobe.com/solutions/web-experience-management. 
html 
• Apache Sling 
http://sling.apache.org 
• Apache Jackrabbit 
http://jackrabbit.apache.org/
LEARNING NODE.JS 
• Node.JS the Right Way (Book) 
http://amzn.to/1wmI4hL 
• NodeSchool (Tutorial) 
http://nodeschool.io/ 
• Express Framework (Documentation) 
http://expressjs.com/starter/hello-world.html 
• JavaScript Promises (Article) 
http://www.html5rocks.com/en/tutorials/es6/pr 
omises/
NODE.CQ 
Joshua Miller 
NASCAR Digital Media 
jsmiller@nascar.com 
@jo5h | www.jo5h.com 
CREATING REAL-TIME DATA MASHUPS WITH 
NODE.JS AND ADOBE CQ

More Related Content

What's hot

[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
[Patel] SPFx: An ISV Insight into latest Microsoft's customization modelEuropean Collaboration Summit
 
High Performance API Mashups with Node.js and ql.io
High Performance API Mashups with Node.js and ql.ioHigh Performance API Mashups with Node.js and ql.io
High Performance API Mashups with Node.js and ql.ioJonathan LeBlanc
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
 
Firebase presentation
Firebase presentationFirebase presentation
Firebase presentationConnor Leech
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien
 
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)Chris O'Brien
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRaymond Camden
 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsGabriel Walt
 
Building An Application For Windows Azure And Sql Azure
Building An Application For Windows Azure And Sql AzureBuilding An Application For Windows Azure And Sql Azure
Building An Application For Windows Azure And Sql AzureEric Nelson
 
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - referenceChris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - referenceChris O'Brien
 
Deep-dive building solutions on the SharePoint Framework
Deep-dive building solutions on the SharePoint FrameworkDeep-dive building solutions on the SharePoint Framework
Deep-dive building solutions on the SharePoint FrameworkWaldek Mastykarz
 
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?connectwebex
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsStefano Celentano
 
Chris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 apps
Chris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 appsChris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 apps
Chris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 appsChris O'Brien
 
ThreeBase: Firebase in 3 minutes or less
ThreeBase: Firebase in 3 minutes or lessThreeBase: Firebase in 3 minutes or less
ThreeBase: Firebase in 3 minutes or lessMayank Mohan Upadhyay
 
Share point hosted add ins munich
Share point hosted add ins munichShare point hosted add ins munich
Share point hosted add ins munichSonja Madsen
 
Rapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and JackrabbitRapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and JackrabbitCraig Dickson
 

What's hot (20)

[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
 
High Performance API Mashups with Node.js and ql.io
High Performance API Mashups with Node.js and ql.ioHigh Performance API Mashups with Node.js and ql.io
High Performance API Mashups with Node.js and ql.io
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Firebase presentation
Firebase presentationFirebase presentation
Firebase presentation
 
Sling Dynamic Include
Sling Dynamic IncludeSling Dynamic Include
Sling Dynamic Include
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
 
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
 
Firebase hosting
Firebase hostingFirebase hosting
Firebase hosting
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoop
 
ECS19 Bert Jansen - Modernizing your existing sites
ECS19 Bert Jansen - Modernizing your existing sitesECS19 Bert Jansen - Modernizing your existing sites
ECS19 Bert Jansen - Modernizing your existing sites
 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
 
Building An Application For Windows Azure And Sql Azure
Building An Application For Windows Azure And Sql AzureBuilding An Application For Windows Azure And Sql Azure
Building An Application For Windows Azure And Sql Azure
 
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - referenceChris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
Chris O'Brien - Modern SharePoint sites and the SharePoint Framework - reference
 
Deep-dive building solutions on the SharePoint Framework
Deep-dive building solutions on the SharePoint FrameworkDeep-dive building solutions on the SharePoint Framework
Deep-dive building solutions on the SharePoint Framework
 
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
 
Chris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 apps
Chris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 appsChris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 apps
Chris O'Brien - Comparing SharePoint add-ins (apps) with Office 365 apps
 
ThreeBase: Firebase in 3 minutes or less
ThreeBase: Firebase in 3 minutes or lessThreeBase: Firebase in 3 minutes or less
ThreeBase: Firebase in 3 minutes or less
 
Share point hosted add ins munich
Share point hosted add ins munichShare point hosted add ins munich
Share point hosted add ins munich
 
Rapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and JackrabbitRapid RESTful Web Applications with Apache Sling and Jackrabbit
Rapid RESTful Web Applications with Apache Sling and Jackrabbit
 

Viewers also liked

The Future of Web Apps
The Future of Web AppsThe Future of Web Apps
The Future of Web AppsiCiDIGITAL
 
Commerce and Content, Together at Last
Commerce and Content, Together at LastCommerce and Content, Together at Last
Commerce and Content, Together at LastiCiDIGITAL
 
Building a Great AEM Team: Time Warner Cable's Journey
Building a Great AEM Team: Time Warner Cable's JourneyBuilding a Great AEM Team: Time Warner Cable's Journey
Building a Great AEM Team: Time Warner Cable's JourneyiCiDIGITAL
 
Accelerate Your Next AEM Project
Accelerate Your Next AEM ProjectAccelerate Your Next AEM Project
Accelerate Your Next AEM ProjectiCiDIGITAL
 
Design patterns talk_node_summit
Design patterns talk_node_summitDesign patterns talk_node_summit
Design patterns talk_node_summitShubhra Kar
 
Overcome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challengesOvercome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challengesiCiDIGITAL
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMrbl002
 
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...Wen Zhu
 
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond SambaSambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond SambaAlexander Bokovoy
 
CRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationCRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationTomasz Rękawek
 
The OSGi Service Platform in Integrated Management Environments - Cristina Di...
The OSGi Service Platform in Integrated Management Environments - Cristina Di...The OSGi Service Platform in Integrated Management Environments - Cristina Di...
The OSGi Service Platform in Integrated Management Environments - Cristina Di...mfrancis
 
Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015Steve Pember
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxClaus Ibsen
 
Triangle Node Meetup : APIs in Minutes with Node.js
Triangle Node Meetup :  APIs in Minutes with Node.jsTriangle Node Meetup :  APIs in Minutes with Node.js
Triangle Node Meetup : APIs in Minutes with Node.jsShubhra Kar
 
NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...
NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...
NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...Mark West
 
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewApache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewMarcelo Jabali
 
Building Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPABuilding Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPALDAPCon
 
The Business of APIs 2009 - Hoover's
The Business of APIs 2009 - Hoover'sThe Business of APIs 2009 - Hoover's
The Business of APIs 2009 - Hoover'sMashery
 

Viewers also liked (20)

EVOLVE'16 | Enhance | Paul McMahon | Approaches to Leveraging AEM Within a Si...
EVOLVE'16 | Enhance | Paul McMahon | Approaches to Leveraging AEM Within a Si...EVOLVE'16 | Enhance | Paul McMahon | Approaches to Leveraging AEM Within a Si...
EVOLVE'16 | Enhance | Paul McMahon | Approaches to Leveraging AEM Within a Si...
 
The Future of Web Apps
The Future of Web AppsThe Future of Web Apps
The Future of Web Apps
 
Commerce and Content, Together at Last
Commerce and Content, Together at LastCommerce and Content, Together at Last
Commerce and Content, Together at Last
 
Building a Great AEM Team: Time Warner Cable's Journey
Building a Great AEM Team: Time Warner Cable's JourneyBuilding a Great AEM Team: Time Warner Cable's Journey
Building a Great AEM Team: Time Warner Cable's Journey
 
Accelerate Your Next AEM Project
Accelerate Your Next AEM ProjectAccelerate Your Next AEM Project
Accelerate Your Next AEM Project
 
Design patterns talk_node_summit
Design patterns talk_node_summitDesign patterns talk_node_summit
Design patterns talk_node_summit
 
Overcome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challengesOvercome-3-common-aem-delivery-challenges
Overcome-3-common-aem-delivery-challenges
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEM
 
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
 
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond SambaSambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
SambaXP 2014: Trusting Active Directory with FreeIPA: a story beyond Samba
 
CRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationCRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migration
 
The OSGi Service Platform in Integrated Management Environments - Cristina Di...
The OSGi Service Platform in Integrated Management Environments - Cristina Di...The OSGi Service Platform in Integrated Management Environments - Cristina Di...
The OSGi Service Platform in Integrated Management Environments - Cristina Di...
 
Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015Advanced Microservices - Greach 2015
Advanced Microservices - Greach 2015
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the box
 
Cloud Foundry Roadmap in 2016
Cloud Foundry Roadmap in 2016Cloud Foundry Roadmap in 2016
Cloud Foundry Roadmap in 2016
 
Triangle Node Meetup : APIs in Minutes with Node.js
Triangle Node Meetup :  APIs in Minutes with Node.jsTriangle Node Meetup :  APIs in Minutes with Node.js
Triangle Node Meetup : APIs in Minutes with Node.js
 
NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...
NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...
NTNU Tech Talks : Smartening up a Pi Zero Security Camera with Amazon Web Ser...
 
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewApache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
 
Building Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPABuilding Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPA
 
The Business of APIs 2009 - Hoover's
The Business of APIs 2009 - Hoover'sThe Business of APIs 2009 - Hoover's
The Business of APIs 2009 - Hoover's
 

Similar to Creating Real-Time Data Mashups with Node.JS and Adobe CQ

Node.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQ
Node.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQNode.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQ
Node.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQJoshua Miller
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...
Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...
Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...Amazon Web Services
 
NoSQL Migration to Azure Cosmos DB Pitch Deck
NoSQL Migration to Azure Cosmos DB Pitch DeckNoSQL Migration to Azure Cosmos DB Pitch Deck
NoSQL Migration to Azure Cosmos DB Pitch DeckNicholas Vossburg
 
NoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQLNoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQLEDB
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdflubnayasminsebl
 
Continuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:InventContinuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:InventJohn Schneider
 
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Amazon Web Services
 
Couchbase Mobile on Android
Couchbase Mobile on AndroidCouchbase Mobile on Android
Couchbase Mobile on AndroidPhilipp Fehre
 
Data Pipeline for The Big Data/Data Science OKC
Data Pipeline for The Big Data/Data Science OKCData Pipeline for The Big Data/Data Science OKC
Data Pipeline for The Big Data/Data Science OKCMark Smith
 
MongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDB
MongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDBMongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDB
MongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDBMongoDB
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsMike Broberg
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsNicholas Jansma
 
Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...
Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...
Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...VMware Tanzu
 
NoSQL Migration Technical Pitch Deck
NoSQL Migration Technical Pitch DeckNoSQL Migration Technical Pitch Deck
NoSQL Migration Technical Pitch DeckNicholas Vossburg
 
Migrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration ServiceMigrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration ServiceAmazon Web Services
 
Why NBC Universal Migrated to MongoDB Atlas
Why NBC Universal Migrated to MongoDB AtlasWhy NBC Universal Migrated to MongoDB Atlas
Why NBC Universal Migrated to MongoDB AtlasDatavail
 

Similar to Creating Real-Time Data Mashups with Node.JS and Adobe CQ (20)

Node.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQ
Node.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQNode.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQ
Node.CQ - Creating Real-time Data Mashups with Node.JS and Adobe CQ
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...
Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...
Case Study: Sprinklr Uses Amazon EBS to Maximize Its NoSQL Deployment - DAT33...
 
NoSQL Migration to Azure Cosmos DB Pitch Deck
NoSQL Migration to Azure Cosmos DB Pitch DeckNoSQL Migration to Azure Cosmos DB Pitch Deck
NoSQL Migration to Azure Cosmos DB Pitch Deck
 
NoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQLNoSQL and Spatial Database Capabilities using PostgreSQL
NoSQL and Spatial Database Capabilities using PostgreSQL
 
Final paper
Final paperFinal paper
Final paper
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
 
Continuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:InventContinuous Deployment @ AWS Re:Invent
Continuous Deployment @ AWS Re:Invent
 
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
 
Couchbase Mobile on Android
Couchbase Mobile on AndroidCouchbase Mobile on Android
Couchbase Mobile on Android
 
Data Pipeline for The Big Data/Data Science OKC
Data Pipeline for The Big Data/Data Science OKCData Pipeline for The Big Data/Data Science OKC
Data Pipeline for The Big Data/Data Science OKC
 
MongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDB
MongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDBMongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDB
MongoDB World 2018: Bumps and Breezes: Our Journey from RDBMS to MongoDB
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 Questions
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
 
Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...
Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...
Delivering the power of data using Spring Cloud DataFlow and DataStax Enterpr...
 
NoSQL Migration Technical Pitch Deck
NoSQL Migration Technical Pitch DeckNoSQL Migration Technical Pitch Deck
NoSQL Migration Technical Pitch Deck
 
Migrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration ServiceMigrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration Service
 
Intro to Sails.js
Intro to Sails.jsIntro to Sails.js
Intro to Sails.js
 
Why NBC Universal Migrated to MongoDB Atlas
Why NBC Universal Migrated to MongoDB AtlasWhy NBC Universal Migrated to MongoDB Atlas
Why NBC Universal Migrated to MongoDB Atlas
 

Recently uploaded

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

Creating Real-Time Data Mashups with Node.JS and Adobe CQ

  • 1. NODE.CQ Joshua Miller NASCAR Digital Media jsmiller@nascar.com @jo5h | www.jo5h.com CREATING REAL-TIME DATA MASHUPS WITH NODE.JS AND ADOBE CQ
  • 2. PROBLEM SCENARIO We want to mix authored content from Adobe CQ with Real- Time Race Data from our Timing and Scoring system. Combining Slowly Changing Dimensions such as Driver Team Name, Vehicle Manufacturer Name, Track Information, etc. with Constantly Changing Metrics such as Last Lap Speed, Driver Position, Lap Number, etc. Adobe CQ is great at managing the authored content, but is less adept at handling the real-time data. The time it takes to ingest the data and replicate it is too long – the data will have already changed.
  • 4. NODE.JS AND ADOBE CQ ARE COMPLIMENTARY ADOBE CQ • Enterprise-Scale CMS • Excels at Document Storage • Great Authoring Environment • Replicates and Scales Nicely NODE.JS • Enterprise-Scale Throughput • Excels at Real-Time Data • Easily Connect Disparate Systems • Scales Nicely
  • 5. COMMON USE-CASES FOR NODE.JS • Creating Network-Intensive Applications • Creating and Consuming Real-Time Data • Creating Scalable, High-Throughput Solutions for Large Numbers of Simultaneous Connections • Creating and Consuming Service-Based API’s • Creating Stateless, Request-Response Scenarios • Creating Push Scenarios over Websockets • Creating Event-Driven Services
  • 6. A QUICK INTRODUCTION TO WORKING WITH NODE.JS
  • 7. WORKING WITH NODE.JS SHOULD BE LIKE WORKING WITH BUILDING BLOCKS Node.JS has a broad and diverse developer community. If you want to build something with Node, chances are someone else has already done the same thing. Before you start building from scratch, look at the packages that already exist on NPM (http://npmjs.org) Using NPM (Node Package Manager), you can install packages that perform the tasks you need to accomplish.
  • 8. ELEMENTS OF A NODE.JS APPLICATION Web Server / Framework • Express • Flatiron Logging Service • Morgan • Winston Configuration • Nconf • config Promise Library • Q • promise Built-In Services • HTTP / HTTPS • FileSystem • Crypto • Events • Stream • Etc.
  • 9. NODE.JS GOTCHAS Some things about Node.JS are a bit different from working with other technologies. • NODE.JS IS ASYNCHRONOUS Getting familiar with JavaScript Promises and Deferred Libraries or understanding an developing very clear callback chains is a must for working with Node.JS effectively • NODE.JS IS A PACKAGE-DRIVEN TECHNOLOGY Getting comfortable working with a Package Manager (NPM) is a must for working with Node.JS effectively • YOUR APPLICATION IS YOUR SERVER There is no Apache or nginx or IIS to work with. You build your server, or use a framework like Express or Flatiron • NODE.JS IS AS FAULT-TOLERANT AS YOU MAKE IT Building solid functionality with lots of error handling and good logging is important
  • 10. WTF DID YOU JUST BUILD? Node.JS is Package-Driven and NPM provides you with a wealth of resources for working with Node, but be careful what packages you choose. If you see a package that has 25,000 downloads and a vibrant development history on GitHub then you’re probably safe. If you’re the only one that has downloaded this package this calendar year and the last commit was made in 2010, you might want to keep looking for a more popular package. Just because you have bricks in your bin, you don’t have to use them all together.
  • 11. SO WHAT ARE OUR NEXT STEPS? INTEGRATING ADOBE CQ
  • 12. USING ADOBE CQ’S REST API WITH NODE.JS Adobe CQ is built on top of Apache Sling – a Web Framework that provides a REST API to CRX - the Java Content Repository that sits beneath Adobe CQ You can directly query CRX using simple REST commands and have the output formatted as JSON JSON data can be directly consumed by the Node.JS application independent of your website’s front-end
  • 13. MAKING RESTFUL REQUESTS TO ADOBE CQ CONTENT It’s simple enough to extract content using the RESTful API in Adobe CQ. Take for example Race Data stored at the path: /content/nascar/lookups/events/sprint-cup-series/2014/ You can easily view this data using the following URL: http://10.196.135.9:4503/content/nascar/lookups/events/sprint -cup-series/2014.infinity.json Note the “infinity” selector in the URL – this can be replaced with a number indicating the node-depth from which you wish to return data http://10.196.135.9:4503/content/nascar/lookups/events/sprint -cup-series/2014.2.json
  • 14. USING THE NODE-DEPTH SELECTOR WITH ADOBE CQ USING THE INFINITY NODE-DEPTH SELECTOR USING A NUMERIC NODE-DEPTH SELECTOR Returns either all child nodes at the given path, or an array of the available numeric node-depth selectors if the structure is deemed too large. Returns data from the root path, and all child nodes at the node-depth indicated by the selector.
  • 15. NODE-DEPTH SELECTOR RESULTS ARRAY OF AVAILABLE NODE-DEPTH SELECTORS JSON OUTPUT OF THE AVAILABLE NODES
  • 16. NOW THAT WE HAVE THIS DATA HOW DO WE USE THE DATA WITH NODE.JS?
  • 17. HOW DO WE USE THIS DATA? By itself, the data that comes from CQ is only as useful as the underlying data structure, the power of this data comes in our ability to use Node.JS to quickly extract the data and then mash it up with other data sources. Using Node.JS, not only can we query data from CRX, we can query data from a number of sources and combine our CRX data with other feeds to create new data sources. This enables us to mix authored content from CRX with Real- Time data from our Timing and Scoring feed to create a new, single feed that can be used in our Mobile product.
  • 18. HOW IS THE DATA JOINED INTO A NEW DATA SOURCE? Creating the feed mashup is not out-of-the-box functionality for Node.JS – we have to custom-code a method by which to join feeds together Node.JS enables us to build an application using the building blocks we discussed earlier, but also allows us to create new, custom blocks with which to build Without too much effort, we have created a package that allows feeds to be joined together using the same Primary and Foreign Key relationships you would find in a typical RDBMS product.
  • 19. HOW IS THE DATA JOINED INTO ONE FEED? • Using simple JSON syntax, we can define a new feed that is comprised of one or more feeds. • Each feed has a “join” condition that allows a the feed to be joined to the collection based on a specific JSON node value. • Special syntax allows for variable replacement from URL parameters • Special syntax allows for values from the new feed to be used throughout the feed • Includes custom functions such as Date and String Formatting • Includes dependency conditions where field values are calculated and/or displayed based on the value of other fields
  • 20. TAKING IT ONE STEP FURTHER INTEGRATING REAL-TIME DATA
  • 21. GETTING LIVE DATA FROM THE RACETRACK During a race, NASCAR vehicles are monitored via transponders placed in the cars. As the cars cross over fiber optic sensors in the track, the data is transmitted to a piece of software called TimeGear. TimeGear tracks the speed of each car, its position relative to the other race cars and feeds this data into the Timing and Scoring system. Timing and Scoring provides a feed that is consumed by Apex, our Mobile Cacher application, which streams the JSON feed out to Akamai where the data is consumed by internal applications and third-parties such as Yahoo!, Fox Sports and ESPN.
  • 22. INTEGRATING OUR REAL-TIME DATA FEED Using the same syntax and the same data providers, we can query our Real-Time race data directly from Timing and Scoring, or directly from Akamai to reduce the load on the T&S systems. Without modifying any code, provided a relationship can be found in the data, we can now merge any JSON data source into our feed. This allows us to merge our Real-Time race statistics right into our authored CQ content, providing a richer and more in-depth feed for our Mobile application without the delay of first ingesting the race data into Adobe CQ. Now that our data is available in a new format, we can provide a single stream of data to the NASCAR Mobile application, reducing the number of calls that need to be made from a mobile device.
  • 23. EXTENDING OUR DATASET WITH THIRD-PARTY SERVICES Given the flexibility of this data aggregator, we can now start to lay new and powerful data layers from disparate source on top of our existing data without having to store that data in CQ. For example, we can pull Real-Time Weather Conditions into our data based on the zip code of the track. We could pull track records to note if a driver’s lap speed was the fastest in the track’s history. We could even pull in Sponsor information based on the current Race Leader. We accomplish all of this without the need to add to the storage requirements of our application, or write custom aggregators for external content.
  • 24. NOW THAT WE’RE DONE WHAT ARE THE BENEFITS OF USING NODE.JS?
  • 25. COULDN’T WE HAVE DONE THIS USING CQ? Of course, we could have accomplished the same end-result using only Adobe CQ and some custom Java code. There are some real benefits to using Node.JS in this scenario though: • There is no code to compile and new feeds only require JSON configuration • Node.JS is an extremely high-throughput platform. We can serve hundreds of simultaneous connections per second. • We reduce the load on our CQ environment by offloading tasks to an application with fewer hardware requirements • We don’t use an large, complex web framework to deliver small streams of data with no user interface requirements
  • 26. IS NODE.JS REALLY THAT MUCH MORE PERFORMANT? We have used Node.JS for a number of new tasks here at NASCAR Digital Media lately and have found it to be incredibly performant. We recently launched a new RaaS implementation with Gigya and use Node.JS to authenticate users. During our load tests, we found that we could serve in 10 minutes of sustained load, all of the traffic that we expected the Node service to experience within the entire race season. In fact, we have found that our load tests typically max-out not because of Node’s inability to serve more requests, but because MySQL starts to queue requests, or Gigya begins to throttle requests-per-second.
  • 27. OK, I ’M INTRIGUED … WHERE CAN I LEARN MORE?
  • 28. RELATED RESOURCES • Node.JS http://nodejs.org/ • NPM https://www.npmjs.org/ • Adobe CQ http://www.adobe.com/solutions/web-experience-management. html • Apache Sling http://sling.apache.org • Apache Jackrabbit http://jackrabbit.apache.org/
  • 29. LEARNING NODE.JS • Node.JS the Right Way (Book) http://amzn.to/1wmI4hL • NodeSchool (Tutorial) http://nodeschool.io/ • Express Framework (Documentation) http://expressjs.com/starter/hello-world.html • JavaScript Promises (Article) http://www.html5rocks.com/en/tutorials/es6/pr omises/
  • 30. NODE.CQ Joshua Miller NASCAR Digital Media jsmiller@nascar.com @jo5h | www.jo5h.com CREATING REAL-TIME DATA MASHUPS WITH NODE.JS AND ADOBE CQ