SlideShare ist ein Scribd-Unternehmen logo
1 von 41
APACHECON North America
Sept. 24-27, 2018
Apache Unomi: a Customer
Data Platform …
● Serge Huber
Apache Unomi / Jahia
@sergehuber
shuber@apache.org
APACHECON North America
Introduction
20 years Web
Dev experience
Coder at heart
(since I’m 7)
Very intested in
User experiences
Co-founder &
CTO of Jahia
Apache Committer
(Jackrabbit, Unomi)
Co-chair OASIS
Context Server TC
APACHECON North America
What is a Customer Data
Platform ?
● From Wikipedia: “Customer Data Platform (CDP) is a
marketer-based management system. It creates a
persistent, unified customer database that is accessible
to other systems. Data is pulled from multiple sources,
cleaned and combined to create a single customer
profile. This structured data is then made available to
other marketing systems. CDP provides real-time
segmentation for personalized marketing.
CDP is currently a $300 million industry and projected
to reach $1 billion by 2019”
APACHECON North America
Why do I need one ?
● If you want to...
○ learn more about your visitors
○ deliver personalized experiences on your website or
mobile app
○ make sure you comply with stricter regulations now
in place (GDPR) or upcoming
○ be in control of your analytics and personalization
(instead of giving away your data to others like
Google Analytics)
○ avoid reinventing the wheel by building your own
customer database, related hooks and segmentation
APACHECON North America
What is Apache Unomi ?
● Apache Unomi is an open source CDP
● A Java platform based on a completely
modular and highly scalable
architecture
● Is the reference implementation of the
ConteXt Server specification standard
(CXS)
● Is event-based and uses ElasticSearch
as a scalable backend for persistence
and querying
APACHECON North America
What is CXS ?
● The ConteXt Server Specification (to be renamed to CDP
standard !)
● Being established at the OASIS Foundation
● Defines a standard to deliver personalized experiences
● Allow for interoperability and customer data exchanges
APACHECON North America
Why was the project started at
Apache ?
● No open source implementation
existed !
● Apache is well recognized to
provide platform solutions
● Apache is truly independant (eg.
Github == Microsoft)
● Apache provides highly
recognized and solid
infrastructure
● Community is great, good
things will automatically happen
to the code
APACHECON North America
Apache Unomi functionalities
APACHECON North America
Why privacy is now critical !
● GDPR : A new EU directive that
imposes strict conditions on dealing
with customer data
● Fines are very expensive, up to 4% of
annual company turnover or €20
million, whichever is higher !
● Consent for data usage is now
explicitly required -> lots of ugly/buggy
popups on web browsers, and most
are not compliant !
● Users must be able to download their
profiles or delete them !
APACHECON North America
Unomi supports all that !
● Profile properties management
● Defines “personal identifiers” properties
● “Anonymize my profile” endpoint (erase any personal
identifier)
● Consent management (get AND update)
● “Private browsing”
● Downloading profile
APACHECON North America
Consent Management UI
Consent definition
(outside of Unomi’s scope)
APACHECON North America
Consent Management UI
Built on top of Unomi’s Consent API
End user user interface
(updated through consent events)
Reporting
APACHECON North America
Performance & scalability
● At Jahia we test Apache Unomi
on a weekly basis with over 5
million profiles
● Server is designed to be
scalable
● ElasticSearch cluster allows
growth to achieve proper
scalability
● Known bottlenecks:
○ ingestion speed
○ rule processing
● Solutions:
○ Add more ES & Unomi
nodes
APACHECON North America
Use case : web site tracking &
personalization
APACHECON North America
Use case : mobile app & personalization
Mobile app CMS Apache Unomi
Send profile id & session id
Get context for profile
Send app active event
Send screen change event
Get personalized content or
screen Execute filters for profile
Get personalized content
or screens
APACHECON North America
Architecture
ElasticSearch cluster
Apache Karaf (cluster)
CXS REST API (using Apache CXF + Servlets)
(Dev) Shell
Commands
Rule Engine Profile Service
Segment Service
Definitions Service
(conditions, actions)
Query Service
Event Service
Personalization
Service
Goals Service
Salesforce Actions Weather Actions Mailchimp Actions
APACHECON North America
Look Inside
Custom plugins may:
- Implement rule conditions
- Implement rule actions
- Deploy rules
- Do anything an OSGi bundle may do (define new servlets, APIs, karaf
shell commands…)
APACHECON North America
Example deployments
http / Unomi public / port 8181
Unomi
Private url
CMS - Node 1 + MF Modules
CMS - Node 2 + MF Modules
CMS - Node 3 + MF Modules
Unomi 3
ES Data
Unomi 2
ES Data
Unomi 1
ES Data
Unomi
Public url
CMS
Public url
www
Internal network
http or
https
https / Unomi admin / port 9443
Architecture
Layers & Ports
Apache HTTP Server
Visitors
browsers
http or
https
tcp / ES Transport / port 9300
tcp / RMI + Hazelcast / ports 1099 + 5700-5800 Apache Unomi
nodes
ElasticSearch nodes
CMS nodes
tcp / ES Transport / port 9300
tcp / Hazelcast / ports 5700-5800
https / DX public / port 8080
APACHECON North America
Profiles
- Generic properties
- Goals
- Segments
- Scores
- Consents
{
"itemId" : "48563fd0-6319-4260-8dba-ae421beba26f",
"itemType" : "profile",
"version" : 91,
"properties" : {
"nbOfVisits" : 42,
"pageViewCount" : {
"digitall" : 7,
"systemscope" : 7
},
"lastVisit" : "2018-09-25T09:23:33Z",
"firstVisit" : "2018-02-10T17:15:25Z",
"preferredLanguage" : "en",
"previousVisit" : "2018-09-25T09:21:39Z",
"j:email" : "shuber@apache.org",
"emailNotificationsDisabled" : "false",
"j:organization" : "Jahia",
"j:firstName" : "Serge",
"j:lastName" : "Huber",
"j:nodename" : "root"
},
"systemProperties" : {
"goals" : {
"pageview_1519726765394StartReached" : "2018-09-25T09:23:33Z",
"_gu4inatp1TargetReached" : "2018-04-04T13:57:18Z",
},
"mergeIdentifier" : "root"
},
"segments" : [ “over30”, “male”, “technology” ],
"scores" : {
"scoring_1" : 0,
"scoring_0" : 0,
},
"mergedWith" : null,
"consents" : {
"digitall/tracking" : {
"scope" : "digitall",
"typeIdentifier" : "tracking",
"status" : "GRANTED",
"statusDate" : "2018-01-19T14:54:01Z",
"revokeDate" : "2020-01-19T14:54:01Z"
},
"digitall/newsletter" : {
"scope" : "digitall",
"typeIdentifier" : "newsletter",
"status" : "DENIED",
"statusDate" : "2018-01-22T16:15:05Z",
"revokeDate" : "2020-01-22T16:15:05Z"
}
}
}
APACHECON North America
Segments
Defined as conditions on profiles:
Rich people over 30:
a profile has income > 200’000
AND his age is over 30
An active visitor interested in technology:
a profile has read 10 pages with the tag “technology”
AND he has created 10 session in the last 10 days
APACHECON North America
Rule Engine
when
condition is true
then
actions are executed
in REAL-TIME !
APACHECON North America
Rule Engine
when
a page event occurs
then
increment profile page count
APACHECON North America
Rule Engine
when
a login event occurs
AND
it comes from a trusted third party
then
1. copy login account information into
profile
2. merge with other pre-existing profiles
3. send updated profile to external system
(CRM)
APACHECON North America
Conditions
Organized as a tree
Condition types:
- boolean (and, or, not)
- on event/session/profile
property values (equals, in list,
etc…)
- on existence of previous events
for a profile
- extensible, you can build your
own !
AND
age > 30
income > 200’000
has come back to the
site 3 times in the last
month
APACHECON North America
Actions
- executed when a rule
condition is satisfied
- executed as a list of actions,
executed sequentially
- actions can:
- update the current
profile
- push or pull data to a
different system
- be extended using
plugins !
Action sequence example:
1. Retrieve data from form
event and copy into profile
2. Update profile segments
3. Send updated profile to
Salesforce account
APACHECON North America
Integrations
Out of the box:
- Salesforce CRM integration
- Twitter sample
- Weather API (enrich session)
- Mailchimp (update lists)
Easy to build your own using
custom actions and plug into rules !
APACHECON North America
Jahia Marketing Factory
● Basically a UI built on top of Apache Unomi’s
REST API
● Uses AngularJS as a front-end framework
● Provides tight integration with the CMS
APACHECON North America
Others
- Building an advertisement server using
Apache Unomi
- Evaluating Unomi to build personalization
for a TV network’s website
Are you using/interested in Apache Unomi ?
Please let us know and reach out for help !
APACHECON North America
Let's integrate now !
Let’s add Apache Unomi to an existing
website
-> let’s use it for tracking
-> let’s see how we can view events coming
in
-> let’s look at profile examples
-> let’s use profile information to build
personalization !
APACHECON North America
Existing website
APACHECON North America
Add Javascript to send events to
Apache Unomi
Unomi tracker is an extension of the open
source Analytics.js tracking script
<script type="text/javascript">
var unomiOption = {
scope: 'unomiWebSite',
url: 'http://localhost:8181'
};
window.unomiTracker||(window.unomiTracker={}),function(){function e(e){for(unomiTracker.initialize({"Apache Uno
r=n.shift(),t=r.shift();unomiTracker[t]&&unomiTracker[t].apply(unomiTracker,r)}}for(var
n=[],r=["trackSubmit","trackClick","trackLink","trackForm","initialize","pageview","identify","reset","group","track","ready
length;t++){var i=r[t];window.unomiTracker[i]=function(e){return function(){var r=Array.prototype.slice.call(arguments);
r.unshift(e),n.push(r),window.unomiTracker}}(i)}unomiTracker.load=function(){var
n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=unomiOption.url+"/tracker/unomi-
tracker.min.js",n.addEventListener?n.addEventListener("load",function(n){"function"==typeof
e&&e(n)},!1):n.onreadystatechange=function(){"complete"!==this.readyState&&"loaded"!==this.readyState||e(window.
r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(n,r)},document.addEventListener("DOMC
</script>
APACHECON North America
View events
unomi:event-tail
APACHECON North America
View profiles
unomi:profile-view
APACHECON North America
What's next for Apache Unomi ?
● Graduate to top level project !
● Improve scalability (Kafka integration)
● Implement final version of CXS spec
● Provide a web UI
APACHECON North America
CXS GraphQL API
● CXS Specification switched
from REST API to GraphQL API
a year ago -> must implement
the changes in Apache Unomi
(uses REST API for the
moment)
● GraphQL makes it easy to
integrate with very different
types of clients (web, mobile)
● Clients such as GraphiQL or
GraphQL Playground make
learning and testing GraphQL
APIs easy and fun !
APACHECON North America
New User Interface !
Jahia is considering contributing parts of
the Marketing Factory web UI to Apache
Unomi !
APACHECON North America
Our community
Don’t be shy !
Use the communication channel you prefer
Mailing lists:
users@unomi.apache.org
dev@unomi.apache.org
JIRA:
https://issues.apache.org/jira/projects/UNOMI
ASF Slack:
#unomi, https://the-asf.slack.com/messages/CBP2Z98Q7
APACHECON North America
More resources
Website : https://unomi.apache.org
Github (mirror): https://github.com/apache/incubator-unomi
OASIS Context Server Technical Committee:
https://www.oasis-
open.org/committees/tc_home.php?wg_abbrev=cxs
OASIS Context Server API on Github:
https://github.com/sergehuber/contextserver-graphql-api
APACHECON North America
Questions
… and hopefully good answers
APACHECON North America
Thanks
- Jean Baptiste for all the mentoring and dedication
throughout the years
- Bertrand Delacretaz for helping and supporting the
project
- All the contributors over the years !
- Some very active newcomers (thanks Francois Papon !
Hope they will be more soon!)
- The community of users !
THANK YOU
● SERGE HUBER
● @sergehuber
● shuber@apache.org
shuber@jahia.com

Weitere ähnliche Inhalte

Was ist angesagt?

Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...
Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...
Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...
Kai Wähner
 

Was ist angesagt? (20)

[DRUPALCON 2022] Open Personalization with Apache Unomi & Mautic (Workshop).pdf
[DRUPALCON 2022] Open Personalization with Apache Unomi & Mautic (Workshop).pdf[DRUPALCON 2022] Open Personalization with Apache Unomi & Mautic (Workshop).pdf
[DRUPALCON 2022] Open Personalization with Apache Unomi & Mautic (Workshop).pdf
 
Elastic Cloud Enterprise @ Cisco
Elastic Cloud Enterprise @ CiscoElastic Cloud Enterprise @ Cisco
Elastic Cloud Enterprise @ Cisco
 
OData - The Universal REST API
OData - The Universal REST APIOData - The Universal REST API
OData - The Universal REST API
 
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
 
Distributed stream processing with Apache Kafka
Distributed stream processing with Apache KafkaDistributed stream processing with Apache Kafka
Distributed stream processing with Apache Kafka
 
Apache Flink and what it is used for
Apache Flink and what it is used forApache Flink and what it is used for
Apache Flink and what it is used for
 
SYSPRO ERP for Manufacturing
SYSPRO ERP for Manufacturing SYSPRO ERP for Manufacturing
SYSPRO ERP for Manufacturing
 
UiPath Automation Cloud - Best Practises session1.pptx
UiPath Automation Cloud - Best Practises session1.pptxUiPath Automation Cloud - Best Practises session1.pptx
UiPath Automation Cloud - Best Practises session1.pptx
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven MicroservicesBuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
 
Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...
Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...
Deep Learning at Extreme Scale (in the Cloud) 
with the Apache Kafka Open Sou...
 
QA Fest 2019. Катерина Овеченко. Тестирование безопасности API
QA Fest 2019. Катерина Овеченко. Тестирование безопасности APIQA Fest 2019. Катерина Овеченко. Тестирование безопасности API
QA Fest 2019. Катерина Овеченко. Тестирование безопасности API
 
Ensuring Voice Quality for Amazon Connect
Ensuring Voice Quality for Amazon ConnectEnsuring Voice Quality for Amazon Connect
Ensuring Voice Quality for Amazon Connect
 
Flink vs. Spark
Flink vs. SparkFlink vs. Spark
Flink vs. Spark
 
Building a Real Time Dashboard with Amazon Kinesis, Amazon Lambda and Amazon ...
Building a Real Time Dashboard with Amazon Kinesis, Amazon Lambda and Amazon ...Building a Real Time Dashboard with Amazon Kinesis, Amazon Lambda and Amazon ...
Building a Real Time Dashboard with Amazon Kinesis, Amazon Lambda and Amazon ...
 
An introduction to SQLAlchemy
An introduction to SQLAlchemyAn introduction to SQLAlchemy
An introduction to SQLAlchemy
 
Improve monitoring and observability for kubernetes with oss tools
Improve monitoring and observability for kubernetes with oss toolsImprove monitoring and observability for kubernetes with oss tools
Improve monitoring and observability for kubernetes with oss tools
 
API Strategy Introduction
API Strategy IntroductionAPI Strategy Introduction
API Strategy Introduction
 
Orchestrator - Practical Approach to host UiPath Orchestrator
Orchestrator - Practical Approach to host UiPath OrchestratorOrchestrator - Practical Approach to host UiPath Orchestrator
Orchestrator - Practical Approach to host UiPath Orchestrator
 

Ähnlich wie ApacheCon NA 2018 : Apache Unomi, an Open Source Customer Data Platformapache unomi cdp presentation

01_Team_03_CS_591_Project
01_Team_03_CS_591_Project01_Team_03_CS_591_Project
01_Team_03_CS_591_Project
harsh mehta
 

Ähnlich wie ApacheCon NA 2018 : Apache Unomi, an Open Source Customer Data Platformapache unomi cdp presentation (20)

Preparing for Data Residency and Custom Domains
Preparing for Data Residency and Custom DomainsPreparing for Data Residency and Custom Domains
Preparing for Data Residency and Custom Domains
 
Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...
 
01_Team_03_CS_591_Project
01_Team_03_CS_591_Project01_Team_03_CS_591_Project
01_Team_03_CS_591_Project
 
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data PlatformsData Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
Data Engineer's Lunch #81: Reverse ETL Tools for Modern Data Platforms
 
Improve your productivity with Microsoft Fow - Power to the people
Improve your productivity with Microsoft Fow - Power to the peopleImprove your productivity with Microsoft Fow - Power to the people
Improve your productivity with Microsoft Fow - Power to the people
 
WSO2Con EU 2015: An Introduction to the WSO2 Data Analytics Platform
WSO2Con EU 2015: An Introduction to the WSO2 Data Analytics PlatformWSO2Con EU 2015: An Introduction to the WSO2 Data Analytics Platform
WSO2Con EU 2015: An Introduction to the WSO2 Data Analytics Platform
 
James Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 PatternsJames Turner (Caplin) - Enterprise HTML5 Patterns
James Turner (Caplin) - Enterprise HTML5 Patterns
 
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
 
presentation slides
presentation slidespresentation slides
presentation slides
 
Introducing the Hub for Data Orchestration
Introducing the Hub for Data OrchestrationIntroducing the Hub for Data Orchestration
Introducing the Hub for Data Orchestration
 
WSO2Con'14 US - Roadmap to a Connected Business
WSO2Con'14 US - Roadmap to a Connected BusinessWSO2Con'14 US - Roadmap to a Connected Business
WSO2Con'14 US - Roadmap to a Connected Business
 
Case study on search engine and toolbar with a chance to win prizes
Case study on search engine and toolbar with a chance to win prizesCase study on search engine and toolbar with a chance to win prizes
Case study on search engine and toolbar with a chance to win prizes
 
Max Prin - brightonSEO San Diego 2023 - Developing SEO Tools
Max Prin - brightonSEO San Diego 2023 - Developing SEO ToolsMax Prin - brightonSEO San Diego 2023 - Developing SEO Tools
Max Prin - brightonSEO San Diego 2023 - Developing SEO Tools
 
Online fast food django.docx
Online fast food django.docxOnline fast food django.docx
Online fast food django.docx
 
Introduction to WSO2 Analytics Platform: 2016 Q2 Update
Introduction to WSO2 Analytics Platform: 2016 Q2 UpdateIntroduction to WSO2 Analytics Platform: 2016 Q2 Update
Introduction to WSO2 Analytics Platform: 2016 Q2 Update
 
#TDXRecap India tour
#TDXRecap India tour#TDXRecap India tour
#TDXRecap India tour
 
Proof of Concept: Adobe Analytics Live Stream on Amazon Web Services
Proof of Concept: Adobe Analytics Live Stream on Amazon Web ServicesProof of Concept: Adobe Analytics Live Stream on Amazon Web Services
Proof of Concept: Adobe Analytics Live Stream on Amazon Web Services
 
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
 
Data-Driven Transformation: Leveraging Big Data at Showtime with Apache Spark
Data-Driven Transformation: Leveraging Big Data at Showtime with Apache SparkData-Driven Transformation: Leveraging Big Data at Showtime with Apache Spark
Data-Driven Transformation: Leveraging Big Data at Showtime with Apache Spark
 
Jeremy cabral search marketing summit - scraping data-driven content (1)
Jeremy cabral   search marketing summit - scraping data-driven content (1)Jeremy cabral   search marketing summit - scraping data-driven content (1)
Jeremy cabral search marketing summit - scraping data-driven content (1)
 

Mehr von Serge Huber

Mehr von Serge Huber (8)

GraphQL Introduction
GraphQL IntroductionGraphQL Introduction
GraphQL Introduction
 
Introducing the Jahia Log Analyzer
Introducing the Jahia Log AnalyzerIntroducing the Jahia Log Analyzer
Introducing the Jahia Log Analyzer
 
Jahia DX 7.2 : Bye bye felix, hello karaf
Jahia DX 7.2 : Bye bye felix, hello karafJahia DX 7.2 : Bye bye felix, hello karaf
Jahia DX 7.2 : Bye bye felix, hello karaf
 
DEVOXX FR 2016 We're Watching You (Apache Unomi)
DEVOXX FR 2016 We're Watching You (Apache Unomi)DEVOXX FR 2016 We're Watching You (Apache Unomi)
DEVOXX FR 2016 We're Watching You (Apache Unomi)
 
Introducing Apache Unomi - JavaOne 2015 Session
Introducing Apache Unomi - JavaOne 2015 SessionIntroducing Apache Unomi - JavaOne 2015 Session
Introducing Apache Unomi - JavaOne 2015 Session
 
Webinar Présentation jahia en collaboration avec Developpez.com
Webinar Présentation jahia en collaboration avec Developpez.comWebinar Présentation jahia en collaboration avec Developpez.com
Webinar Présentation jahia en collaboration avec Developpez.com
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
 
Portets to composite applications
Portets to composite applicationsPortets to composite applications
Portets to composite applications
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

ApacheCon NA 2018 : Apache Unomi, an Open Source Customer Data Platformapache unomi cdp presentation

  • 1. APACHECON North America Sept. 24-27, 2018 Apache Unomi: a Customer Data Platform … ● Serge Huber Apache Unomi / Jahia @sergehuber shuber@apache.org
  • 2. APACHECON North America Introduction 20 years Web Dev experience Coder at heart (since I’m 7) Very intested in User experiences Co-founder & CTO of Jahia Apache Committer (Jackrabbit, Unomi) Co-chair OASIS Context Server TC
  • 3. APACHECON North America What is a Customer Data Platform ? ● From Wikipedia: “Customer Data Platform (CDP) is a marketer-based management system. It creates a persistent, unified customer database that is accessible to other systems. Data is pulled from multiple sources, cleaned and combined to create a single customer profile. This structured data is then made available to other marketing systems. CDP provides real-time segmentation for personalized marketing. CDP is currently a $300 million industry and projected to reach $1 billion by 2019”
  • 4. APACHECON North America Why do I need one ? ● If you want to... ○ learn more about your visitors ○ deliver personalized experiences on your website or mobile app ○ make sure you comply with stricter regulations now in place (GDPR) or upcoming ○ be in control of your analytics and personalization (instead of giving away your data to others like Google Analytics) ○ avoid reinventing the wheel by building your own customer database, related hooks and segmentation
  • 5. APACHECON North America What is Apache Unomi ? ● Apache Unomi is an open source CDP ● A Java platform based on a completely modular and highly scalable architecture ● Is the reference implementation of the ConteXt Server specification standard (CXS) ● Is event-based and uses ElasticSearch as a scalable backend for persistence and querying
  • 6. APACHECON North America What is CXS ? ● The ConteXt Server Specification (to be renamed to CDP standard !) ● Being established at the OASIS Foundation ● Defines a standard to deliver personalized experiences ● Allow for interoperability and customer data exchanges
  • 7. APACHECON North America Why was the project started at Apache ? ● No open source implementation existed ! ● Apache is well recognized to provide platform solutions ● Apache is truly independant (eg. Github == Microsoft) ● Apache provides highly recognized and solid infrastructure ● Community is great, good things will automatically happen to the code
  • 8. APACHECON North America Apache Unomi functionalities
  • 9. APACHECON North America Why privacy is now critical ! ● GDPR : A new EU directive that imposes strict conditions on dealing with customer data ● Fines are very expensive, up to 4% of annual company turnover or €20 million, whichever is higher ! ● Consent for data usage is now explicitly required -> lots of ugly/buggy popups on web browsers, and most are not compliant ! ● Users must be able to download their profiles or delete them !
  • 10. APACHECON North America Unomi supports all that ! ● Profile properties management ● Defines “personal identifiers” properties ● “Anonymize my profile” endpoint (erase any personal identifier) ● Consent management (get AND update) ● “Private browsing” ● Downloading profile
  • 11. APACHECON North America Consent Management UI Consent definition (outside of Unomi’s scope)
  • 12. APACHECON North America Consent Management UI Built on top of Unomi’s Consent API End user user interface (updated through consent events) Reporting
  • 13. APACHECON North America Performance & scalability ● At Jahia we test Apache Unomi on a weekly basis with over 5 million profiles ● Server is designed to be scalable ● ElasticSearch cluster allows growth to achieve proper scalability ● Known bottlenecks: ○ ingestion speed ○ rule processing ● Solutions: ○ Add more ES & Unomi nodes
  • 14. APACHECON North America Use case : web site tracking & personalization
  • 15. APACHECON North America Use case : mobile app & personalization Mobile app CMS Apache Unomi Send profile id & session id Get context for profile Send app active event Send screen change event Get personalized content or screen Execute filters for profile Get personalized content or screens
  • 16. APACHECON North America Architecture ElasticSearch cluster Apache Karaf (cluster) CXS REST API (using Apache CXF + Servlets) (Dev) Shell Commands Rule Engine Profile Service Segment Service Definitions Service (conditions, actions) Query Service Event Service Personalization Service Goals Service Salesforce Actions Weather Actions Mailchimp Actions
  • 17. APACHECON North America Look Inside Custom plugins may: - Implement rule conditions - Implement rule actions - Deploy rules - Do anything an OSGi bundle may do (define new servlets, APIs, karaf shell commands…)
  • 18. APACHECON North America Example deployments http / Unomi public / port 8181 Unomi Private url CMS - Node 1 + MF Modules CMS - Node 2 + MF Modules CMS - Node 3 + MF Modules Unomi 3 ES Data Unomi 2 ES Data Unomi 1 ES Data Unomi Public url CMS Public url www Internal network http or https https / Unomi admin / port 9443 Architecture Layers & Ports Apache HTTP Server Visitors browsers http or https tcp / ES Transport / port 9300 tcp / RMI + Hazelcast / ports 1099 + 5700-5800 Apache Unomi nodes ElasticSearch nodes CMS nodes tcp / ES Transport / port 9300 tcp / Hazelcast / ports 5700-5800 https / DX public / port 8080
  • 19. APACHECON North America Profiles - Generic properties - Goals - Segments - Scores - Consents { "itemId" : "48563fd0-6319-4260-8dba-ae421beba26f", "itemType" : "profile", "version" : 91, "properties" : { "nbOfVisits" : 42, "pageViewCount" : { "digitall" : 7, "systemscope" : 7 }, "lastVisit" : "2018-09-25T09:23:33Z", "firstVisit" : "2018-02-10T17:15:25Z", "preferredLanguage" : "en", "previousVisit" : "2018-09-25T09:21:39Z", "j:email" : "shuber@apache.org", "emailNotificationsDisabled" : "false", "j:organization" : "Jahia", "j:firstName" : "Serge", "j:lastName" : "Huber", "j:nodename" : "root" }, "systemProperties" : { "goals" : { "pageview_1519726765394StartReached" : "2018-09-25T09:23:33Z", "_gu4inatp1TargetReached" : "2018-04-04T13:57:18Z", }, "mergeIdentifier" : "root" }, "segments" : [ “over30”, “male”, “technology” ], "scores" : { "scoring_1" : 0, "scoring_0" : 0, }, "mergedWith" : null, "consents" : { "digitall/tracking" : { "scope" : "digitall", "typeIdentifier" : "tracking", "status" : "GRANTED", "statusDate" : "2018-01-19T14:54:01Z", "revokeDate" : "2020-01-19T14:54:01Z" }, "digitall/newsletter" : { "scope" : "digitall", "typeIdentifier" : "newsletter", "status" : "DENIED", "statusDate" : "2018-01-22T16:15:05Z", "revokeDate" : "2020-01-22T16:15:05Z" } } }
  • 20. APACHECON North America Segments Defined as conditions on profiles: Rich people over 30: a profile has income > 200’000 AND his age is over 30 An active visitor interested in technology: a profile has read 10 pages with the tag “technology” AND he has created 10 session in the last 10 days
  • 21. APACHECON North America Rule Engine when condition is true then actions are executed in REAL-TIME !
  • 22. APACHECON North America Rule Engine when a page event occurs then increment profile page count
  • 23. APACHECON North America Rule Engine when a login event occurs AND it comes from a trusted third party then 1. copy login account information into profile 2. merge with other pre-existing profiles 3. send updated profile to external system (CRM)
  • 24. APACHECON North America Conditions Organized as a tree Condition types: - boolean (and, or, not) - on event/session/profile property values (equals, in list, etc…) - on existence of previous events for a profile - extensible, you can build your own ! AND age > 30 income > 200’000 has come back to the site 3 times in the last month
  • 25. APACHECON North America Actions - executed when a rule condition is satisfied - executed as a list of actions, executed sequentially - actions can: - update the current profile - push or pull data to a different system - be extended using plugins ! Action sequence example: 1. Retrieve data from form event and copy into profile 2. Update profile segments 3. Send updated profile to Salesforce account
  • 26. APACHECON North America Integrations Out of the box: - Salesforce CRM integration - Twitter sample - Weather API (enrich session) - Mailchimp (update lists) Easy to build your own using custom actions and plug into rules !
  • 27. APACHECON North America Jahia Marketing Factory ● Basically a UI built on top of Apache Unomi’s REST API ● Uses AngularJS as a front-end framework ● Provides tight integration with the CMS
  • 28. APACHECON North America Others - Building an advertisement server using Apache Unomi - Evaluating Unomi to build personalization for a TV network’s website Are you using/interested in Apache Unomi ? Please let us know and reach out for help !
  • 29. APACHECON North America Let's integrate now ! Let’s add Apache Unomi to an existing website -> let’s use it for tracking -> let’s see how we can view events coming in -> let’s look at profile examples -> let’s use profile information to build personalization !
  • 31. APACHECON North America Add Javascript to send events to Apache Unomi Unomi tracker is an extension of the open source Analytics.js tracking script <script type="text/javascript"> var unomiOption = { scope: 'unomiWebSite', url: 'http://localhost:8181' }; window.unomiTracker||(window.unomiTracker={}),function(){function e(e){for(unomiTracker.initialize({"Apache Uno r=n.shift(),t=r.shift();unomiTracker[t]&&unomiTracker[t].apply(unomiTracker,r)}}for(var n=[],r=["trackSubmit","trackClick","trackLink","trackForm","initialize","pageview","identify","reset","group","track","ready length;t++){var i=r[t];window.unomiTracker[i]=function(e){return function(){var r=Array.prototype.slice.call(arguments); r.unshift(e),n.push(r),window.unomiTracker}}(i)}unomiTracker.load=function(){var n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=unomiOption.url+"/tracker/unomi- tracker.min.js",n.addEventListener?n.addEventListener("load",function(n){"function"==typeof e&&e(n)},!1):n.onreadystatechange=function(){"complete"!==this.readyState&&"loaded"!==this.readyState||e(window. r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(n,r)},document.addEventListener("DOMC </script>
  • 32. APACHECON North America View events unomi:event-tail
  • 33. APACHECON North America View profiles unomi:profile-view
  • 34. APACHECON North America What's next for Apache Unomi ? ● Graduate to top level project ! ● Improve scalability (Kafka integration) ● Implement final version of CXS spec ● Provide a web UI
  • 35. APACHECON North America CXS GraphQL API ● CXS Specification switched from REST API to GraphQL API a year ago -> must implement the changes in Apache Unomi (uses REST API for the moment) ● GraphQL makes it easy to integrate with very different types of clients (web, mobile) ● Clients such as GraphiQL or GraphQL Playground make learning and testing GraphQL APIs easy and fun !
  • 36. APACHECON North America New User Interface ! Jahia is considering contributing parts of the Marketing Factory web UI to Apache Unomi !
  • 37. APACHECON North America Our community Don’t be shy ! Use the communication channel you prefer Mailing lists: users@unomi.apache.org dev@unomi.apache.org JIRA: https://issues.apache.org/jira/projects/UNOMI ASF Slack: #unomi, https://the-asf.slack.com/messages/CBP2Z98Q7
  • 38. APACHECON North America More resources Website : https://unomi.apache.org Github (mirror): https://github.com/apache/incubator-unomi OASIS Context Server Technical Committee: https://www.oasis- open.org/committees/tc_home.php?wg_abbrev=cxs OASIS Context Server API on Github: https://github.com/sergehuber/contextserver-graphql-api
  • 39. APACHECON North America Questions … and hopefully good answers
  • 40. APACHECON North America Thanks - Jean Baptiste for all the mentoring and dedication throughout the years - Bertrand Delacretaz for helping and supporting the project - All the contributors over the years ! - Some very active newcomers (thanks Francois Papon ! Hope they will be more soon!) - The community of users !
  • 41. THANK YOU ● SERGE HUBER ● @sergehuber ● shuber@apache.org shuber@jahia.com