This is the slidedeck I used for my in-depth session at ApacheCon EU 2015. It covers a good technical overview of what Apache Unomi is and it's potential for integrating into many different systems.
1. APACHE UNOMI IN-DEPTH I 2nd October 20151
APACHE UNOMI IN-DEPTH
SERGE HUBER, CTO & Co-founder, shuber@jahia.com
2. APACHE UNOMI IN-DEPTH I 2nd October 20152
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
3. APACHE UNOMI IN-DEPTH I 2nd October 20153
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
4. APACHE UNOMI IN-DEPTH I 2nd October 20154
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
5. APACHE UNOMI IN-DEPTH I 2nd October 20155
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
6. APACHE UNOMI IN-DEPTH I 2nd October 20156
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
7. APACHE UNOMI IN-DEPTH I 2nd October 20157
INTRODUCING UNOMI
YOU KNOW ME ?
WHAT IS
UNOMI?
8. APACHE UNOMI IN-DEPTH I 2nd October 20158
TARGETED FUNCTIONALITIES
MARKETING TO MARKETERS
UNOMI
User tracking
Event tracking
Goal tracking, scoring Segmentation Form
Input
tracking
Download
tracking
Impersonification
(personas)
A/B testing
Profile
(visitor,contact,leads)
management and export
Reporting
Privacy
management
9. APACHE UNOMI IN-DEPTH I 2nd October 20159
ARCHITECTURE DESIGN GOALS
FROM LESSONS LEARNED THE HARD WAY
1
2
3
Avoid putting additional
load on the WCMnodes
Highly scalable
(avoiding node cross-talk)
Make it easy for users
to define and use
marketing segments
4
5
6
Integration with existing
analytics
Integration with multiple
systems including mobile apps,
not just WCM
Highly pluggable architecture,
making it easy to extend and
build differentsolutions based
on a common core
10. APACHE UNOMI IN-DEPTH I 2nd October 201510
SCALING ARCHITECTURE
THROWING MORE SERVERS AT THE PROBLEM
CONTEXT
SERVER
CMS
Issue
trackingCRMSocial
11. APACHE UNOMI IN-DEPTH I 2nd October 201511
INPUT/OUTPUT
RULES
ACTIONS
Protocols
HTTP REST + JSON
SEGMENTSEVENTS
CONTEXT
CONDITIONS
PROFILES
MUST REFRAIN… NO JOKES ON I/O
CONTEXT SERVER
12. APACHE UNOMI IN-DEPTH I 2nd October 201512
REQUEST FLOW
HEY LOOKI HAVE ARROWS
Load HTML page
Load HTML +JS
to connectContextServer
Load context.js
Context for currentrequest
(Optional)Load contentbased
on context
(Optional)Send event such as login / hover
BROWSER CMS CONTEXT SERVER
JS callbacks
13. APACHE UNOMI IN-DEPTH I 2nd October 201513
CONTEXT EXAMPLE
digitalData = {
"loaded": true,
"user": [{
"profiles": [{
"profileInfo": {
"profileId": "d6454520-f2b6-40b7-829c-d17214f209d1”,
"firstName": "Serge",
"lastName": "Huber”,
"userName": "Serge Huber",
"email": "bhillou@yahoo.com",
"gender": "male”,
"itemClass": "org.oasis_open.context.server.api.User",
"segments": ["alwaysTrue", "maleGender"]
}
}]
}]};
FOR THE JSON ADDICTS LIKE ME
14. APACHE UNOMI IN-DEPTH I 2nd October 201514
UNOMI ARCHITECTURE
LOTS OF BOXES
APACHEKARAF
PERSISTENCE IMPLEMENTATION(ELASTICSEARCH, …)
PERSISTENCE SPI(SERVICE PROVIDER INTERFACE)
APACHE CXF
REST API
OSGISERVICES
16. APACHE UNOMI IN-DEPTH I 2nd October 201516
VISITOR PROFILES
YOU KNOW ME, I GET IT !
A profile is createdas soon
as a visitor arriveson a site
Trackedby
navigator cookies
Populated through events,
such as page views,CMS
login, Social login, mobile
action, beacon detectedor
form submissions
Sessions are tracked for
each profile,history of
navigation is accessible too.
17. APACHE UNOMI IN-DEPTH I 2nd October 201517
SEGMENTS
I’M A PERSON NOT A SEGMENT
Built
through
simple UI
Conditions
match user
profile
properties
Potentially
complex
assembly of
conditions
Example
Profilesyounger
than 25 and have
an incomeof more
than USD 100’000
(young rich
segment)
18. APACHE UNOMI IN-DEPTH I 2nd October 201518
EVENTS
I DID WHAT WHEN ?
Client or server-side eventscanbe sent to the context
server,intheory in very high volume
The context server willprocessthe eventsusing plugins,
either synchronously or asynchronously (for example
using an Apache Mahout BigData analysis cluster)
Example: login eventsends additional user data, page
vieweventused to build user or general analytics, mouse
over eventcan be used to build content heat maps
Sample request: GET
http://wemicontext.name:8181/eventcollector/view?url=PAGE_URL&referr
er=REFERRER_URL (referrer isdifferentfor AJAX requests so we use the
document.referrer to build thisrequest)
19. APACHE UNOMI IN-DEPTH I 2nd October 201519
IMPERSONIFICATIONS (PERSONAS)
FOR WHEN YOU WISH YOUWERE SOMEONE ELSE
⎯ Persona definition make it
possible to “emulate” a certain type
of profile, e.g : US visitor, non-US
visitor, search engine bot, …
⎯ Predefined personas as well as
persona editing UIavailable
⎯ Jahia provides a side-panel UI to
view profile and session data for
both the current profile or switch
between available personas and
see immediate personalization
changes
20. APACHE UNOMI IN-DEPTH I 2nd October 201520
RULES
ONE SERVER TO RULE THEM ALL
⎯ Executed mostly on
event triggers
⎯ Use same conditions are
segments to match events
⎯ May perform a list of
actions (update profile,
session, send email)
21. APACHE UNOMI IN-DEPTH I 2nd October 201521
RULES, CONTINUED
ANOTHER RULE : YOUSHOULD LISTEN TO
THE SPEAKER INSTEAD OF READING THESE
⎯ Conditions evaluate to a boolean that will
determine if the actions of the rule will be
executed or not
⎯ Conditions may be complex, using operators
such as and/or for building sub-conditions
(condition tree)
⎯ Conditions and actions are either pre-defined
or may be extended using Unomi plugins
Structure:
when
conditions
then
actions
Example:
when
login event is received
then
merge profiles based on login id
22. APACHE UNOMI IN-DEPTH I 2nd October 201522
PROFILE MERGING
BECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE
A single (physical) visitor may come to a website or web
service using differentdevicesor browsers
23. APACHE UNOMI IN-DEPTH I 2nd October 201523
PROFILE MERGING
BECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE
Each visit will (initially) generate a separate profile ID
Upon visitor identication (usually after login), the current
profile will be merge with any existing profiles with the
same identifier
Tracking cookies will be modified to associated with the
identifier of the mergedprofile
Recognized visitors will therefore be trackedacross
devices,as the same profile instead of differentones
24. APACHE UNOMI IN-DEPTH I 2nd October 201524
PLUGINS
NOT THAT TYPE OF PLUG, COME ON
Custom conditions to be usedin segments or
rules
Custom actions to be used in rules
Custom session or profile property definitions
Resource bundles
Predefinedrules
Predefinedsegments
Predefinedscoring
PLUGINS MAY INCLUDEPlugins are OSGi bundles that may extend the
built-in functionality of the Context Server
25. APACHE UNOMI IN-DEPTH I 2nd October 201525
PLUGIN EXAMPLE
YEAH SOME MORE JSON !
MAIL ACTIONPLUGIN
⎯ Defines a new custom action : send an email
⎯ Provides a Java implementation of the action
⎯ Provides a JSON descriptor to declare the action
and it’s parameters to Unomi
⎯ Parameters will be used to build UI to edit the action
instance
{
"id": "sendMailAction",
"actionExecutor": "sendMail",
"tags": [ "event" ],
"parameters": [
{
"id": "from",
"type": "string",
"multivalued": false
},
{
"id": "to",
"type": "string",
"multivalued": false
},
{
"id": "cc",
"type": "string",
"multivalued": false
},
26. APACHE UNOMI IN-DEPTH I 2nd October 201526
PLUGIN EXAMPLE
YEAH SOME MORE JSON !
{
"id": "bcc",
"type": "string",
"multivalued": false
},
{
"id": "subject",
"type": "string",
"multivalued": false
},
{
"id": "template",
"type": "string",
"multivalued": false,
"defaultValue": "Hello $profile.properties.("j:firstName")$
$profile.properties.("j:lastName")$,nHoware you doing today?"
}
]
}
27. APACHE UNOMI IN-DEPTH I 2nd October 201527
PERSISTENCE
SAVING THOSE PRECIOUS MOMENTS
⎯ Service Provider Interface
⎯ Default implementation : ElasticSearch
⎯ ElasticSearch providesout of the box :
⎯ NoSQL JSON document storage
⎯ Built-in scaling and clustering
⎯ Separate nodes for data storage
& query execution
⎯ Powerfulquery sub-system
⎯ Apache License
28. APACHE UNOMI IN-DEPTH I 2nd October 201528
REST API
EXPOSING OURSELVES TO THE OUTSIDE, CLEANLY
FUNCTIONALITIES
⎯ Implemented using Apache CXF
⎯ REST + JSON protocol (no SOAP or other
bindings to keepthings simple)
⎯ Exposes most ofUnomi’s built-in services
⎯ Protectedby Karaf container security
⎯ Will be standardized by OASIS Context
Server specification
⎯ Can be used to either built administration
UI or interface with third party systems
29. APACHE UNOMI IN-DEPTH I 2nd October 201529
PRIVACY SERVICE
YOU KNOW ME A BIT TOO MUCH ?
FUNCTIONALITIES
⎯ Server andeventdiscovery
⎯ Currentvisitor profile access
⎯ Retrieving and setting list of eventsto may
or may not be collectedfor currentprofile
⎯ Management of anonymous browsing,
including anonymous collection activation or
anonymizing ofpreviously collecteddata
⎯ Profile deletion
3RD PARTY UIS may be built to
give end-userscontrol over their data.
30. APACHE UNOMI IN-DEPTH I 2nd October 201530
ALGORITHMS
DISCOVERING (BAD) HABBITS AND BEHAVIORS
This is not yet
implementedin
Unomi…
The Context Server can also integrate “algorithms”, meaning that data can be
processed/mined to extract additional knowledge
31. APACHE UNOMI IN-DEPTH I 2nd October 201531
ALGORITHMS
OUR IDEAS
RECOMMENDATION ENGINE
SIMILARITY ENGINE
APACHE MAHOUT INTEGRATION
BIGDATA INTEGRATION
32. APACHE UNOMI IN-DEPTH I 2nd October 201532
ALGORITHMS, CONTINUED
EVEN BETTER TARGETING
Open source reference
implementation will also help
guarantee interoperability
Algorithms have the
potential to make it much
easier for integrators and
developers to provide
functionality to users of
Unomi
If/When OASISContext
Server specification includes
them, the potential for re-
usability between
implementation could be very
interesting
33. APACHE UNOMI IN-DEPTH I 2nd October 201533
CONNECTORS
NO MORE INAPPROPRIATE JOKES PLEASE
CUSTOM
CONDITIONS
maybe used to
perform dynamic
dataexchanges
uponincoming
events
can perform
calls toexternal
services
EXTERNAL
SERVICES
mayuse Unomi’s
publicURLs or
administrationURLs
to access REST
services (for
querying,reporting,
editing,etc)
EXTERNAL
SYSTEMS
maypushdatainto
Unomieither
throughevents
DIRECT
ACCESS
to ElasticSearch
is alsopossible
to directly
interface with
the persistence
system
CUSTOM
ACTIONS
34. APACHE UNOMI IN-DEPTH I 2nd October 201534
OASIS CONTEXT SERVERSTANDARD
AN OVERVIEW WITH LOTS OF COMPETITORS
Co-chairs
Serge Huber (myself)
Jahia
Thomas Sigdestad
Enonic
Established technical
committee in April 2015
35. APACHE UNOMI IN-DEPTH I 2nd October 201535
OASIS CONTEXT SERVERSTANDARD
MEMBER COMPANIES
36. APACHE UNOMI IN-DEPTH I 2nd October 201536
OASIS CONTEXT SERVERSTANDARD
GOOOOOOAAAAALLLLLSSSS !
PROVIDE ASTANDARD
§ A context server REST API
§ An associateddomainmodel
§ An opensource reference
implementation(ApacheUnomi)
APPROVED
Makesure thatthe
standardis basedonreal
needs of theindustry
DESIGNED FOR GREATNESS
Not onlyCMS-specific, designed
to integratewithas manytoolsas
possible(CRM,ERP, mobile
applications,…)
37. APACHE UNOMI IN-DEPTH I 2nd October 201537
OASIS CONTEXT SERVERSTANDARD
WORK ORGANIZATION AND STUFF DONE
https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cxs
Whole TCmeets once per month
2 workgroups meet once per week
CURRENT STATUSMEETINGS
⎯ Use case listing & discussions :
completion
⎯ Domain model definition :
undergoing
⎯ REST API : to be done
⎯ Formal specification : to be done
38. APACHE UNOMI IN-DEPTH I 2nd October 201538
INCUBATION PROPOSAL
WHO TO BLAME J
https://wiki.apache.org/incubator/UnomiProposal
Champion
Jean-Baptiste Onofré
Talend
Mentor
Bertrand Delacretaz
Adobe
Mentor
Roman Shaposchnik
Pivotal
Mentor
ChrisMattmann
NASA JPL
39. APACHE UNOMI IN-DEPTH I 2nd October 201539
CURRENT STATUS & NEXT STEPS
THE FORCE IS STRONG IN THIS ONE
1
2
3
PROPOSAL
to Apache incubator
VOTE
Open right now
ESTABLISH
Incubation project
4
5
6
MOVE CODEBASE
From Github to Apache
Git repository
GROW COMMUNITY
We need you!
WORK
On first projectrelease
40. APACHE UNOMI IN-DEPTH I 2nd October 201540
COMMERCIAL APPLICATIONS
COMPLETELY GRATUITOUS PLUG
Build your own !
It’s the beauty
of the Apache
License !
First (known) application
Jahia Marketing Factory
41. APACHE UNOMI IN-DEPTH I 2nd October 201541
TAKING SOME RISKS LIVE
DEMO
JAHIA MARKETING FACTORY + UNOMI
AN EXAMPLE APPLICATION
42. APACHE UNOMI IN-DEPTH I 2nd October 201542
YOUR TURN
HAVE YOU BEEN READING THESE ?
Q & A
43. APACHE UNOMI IN-DEPTH I 2nd October 201543
LEARN MORE
THANK YOUSO MUCHFOR YOUR ATTENTION !
Incubation proposal
https://wiki.apache.org/incubator/UnomiProposal
Unomi Github repository
https://github.com/Jahia/unomi
Jahia Marketing Factory
https://www.jahia.com/products/marketing-factory