43
APACHE UNOMI IN-DEPTH I 2 nd October 2015 1 APACHE UNOMI IN-DEPTH SERGE HUBER, CTO & Co-founder, [email protected]

Apache Unomi In Depth - ApacheCon EU 2015 Session

Embed Size (px)

Citation preview

Page 1: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20151

APACHE UNOMI IN-DEPTHSERGE HUBER, CTO & Co-founder, [email protected]

Page 2: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20152

HISTORYNOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…

Page 3: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20153

HISTORYNOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…

Page 4: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20154

HISTORYNOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…

Page 5: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20155

HISTORYNOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…

Page 6: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20156

HISTORYNOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…

Page 7: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20157

INTRODUCING UNOMI

YOU KNOW ME ?

WHAT IS UNOMI?

Page 8: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20158

TARGETED FUNCTIONALITIESMARKETING TO MARKETERS

UNOMI

User tracking

Event tracking

Goal tracking, scoring Segmentation FormInput

tracking

Downloadtracking

Impersonification(personas)

A/B testing

Profile (visitor,contact,leads)

management and exportReporting

Privacy management

Page 9: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 20159

ARCHITECTURE DESIGN GOALSFROM LESSONS LEARNED THE HARD WAY

1

2

3

Avoid putting additional load on the WCM nodes

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 different solutions based on a common core

Page 10: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201510

SCALING ARCHITECTURETHROWING MORE SERVERS AT THE PROBLEM

CONTEXT SERVER

CMS

IssuetrackingCRMSocial

Page 11: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201511

INPUT/OUTPUT

RULES

ACTIONS

ProtocolsHTTP REST + JSON

SEGMENTSEVENTS

CONTEXT

CONDITIONS

PROFILES

MUST REFRAIN… NO JOKES ON I/O

CONTEXT SERVER

Page 12: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201512

REQUEST FLOW

HEY LOOK I HAVE ARROWS

Load HTML page

Load HTML + JS to connect Context Server

Load context.js

Context for current request

(Optional) Load content based on context

(Optional) Send event such as login / hover

BROWSER CMS CONTEXT SERVER

JS callbacks

Page 13: Apache Unomi In Depth - ApacheCon EU 2015 Session

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": "[email protected]","gender": "male”,"itemClass": "org.oasis_open.context.server.api.User","segments": ["alwaysTrue", "maleGender"]

}}]

}]};

FOR THE JSON ADDICTS LIKE ME

Page 14: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201514

UNOMI ARCHITECTURELOTS OF BOXES

APACHE KARAF

PERSISTENCE IMPLEMENTATION (ELASTICSEARCH, …)

PERSISTENCE SPI (SERVICE PROVIDER INTERFACE)

APACHE CXF

REST API

OSGI SERVICES

Page 15: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201515

UNOMI SERVICESSTUFF THAT ACTUALLY DOES STUFF

PROFILESManages profiles and personas

(loading, updating, saving, deleting, merging, …)

PRIVACYManages privacy (anonymous

browsing, event filtering, profile deletion)

QUERIESPerforms queries against the

stored data (events, profiles, …)

SEGMENTSManages segments (definitions, loading, saving, scoring)

DEFINITIONSManages property types, condition types, actions types, tags and other metadata

CLUSTERINGManages the cluster of context servers

Page 16: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201516

VISITOR PROFILESYOU KNOW ME, I GET IT !

A profile is created as soon as a visitor arrives on a site

Tracked by navigator cookies

Populated through events, such as page views, CMS login, Social login, mobile action, beacon detected or form submissions

Sessions are tracked for each profile, history of navigation is accessible too.

Page 17: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201517

SEGMENTSI’M A PERSON NOT A SEGMENT

Built through

simple UI

Conditions match user

profile properties

Potentially complex

assembly of conditions

Example Profiles younger than 25 and have an income of more than USD 100’000 (young rich segment)

Page 18: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201518

EVENTSI DID WHAT WHEN ?

Client or server-side events can be sent to the context server, in theory in very high volumeThe context server will process the events using plugins, either synchronously or asynchronously (for example using an Apache Mahout BigData analysis cluster)

Example: login event sends additional user data, page view event used to build user or general analytics, mouse over event can be used to build content heat maps

Sample request:GET http://wemicontext.name:8181/eventcollector/view?url=PAGE_URL&referrer=REFERRER_URL (referrer is different for AJAX requests so we use the document.referrer to build this request)

Page 19: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201519

IMPERSONIFICATIONS (PERSONAS)FOR WHEN YOU WISH YOU WERE 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 UI available

⎯ 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

Page 20: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201520

RULESONE 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)

Page 21: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201521

RULES, CONTINUEDANOTHER RULE : YOU SHOULD 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

conditionsthen

actions

Example:when

login event is receivedthen

merge profiles based on login id

Page 22: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201522

PROFILE MERGINGBECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE

A single (physical) visitor may come to a web site or web service using different devices or browsers

Page 23: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201523

PROFILE MERGINGBECAUSE 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 merged profile

Recognized visitors will therefore be tracked across devices, as the same profile instead of different ones

Page 24: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201524

PLUGINSNOT THAT TYPE OF PLUG, COME ON

Custom conditions to be used in segments or rules

Custom actions to be used in rules

Custom session or profile property definitions

Resource bundles

Predefined rules

Predefined segments

Predefined scoring

PLUGINS MAY INCLUDEPlugins are OSGi bundles that may extend the built-in functionality of the Context Server

Page 25: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201525

PLUGIN EXAMPLEYEAH SOME MORE JSON !

MAIL ACTION PLUGIN

⎯ 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

},

Page 26: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201526

PLUGIN EXAMPLEYEAH 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?"

}

]}

Page 27: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201527

PERSISTENCESAVING THOSE PRECIOUS MOMENTS

⎯ Service Provider Interface

⎯ Default implementation : ElasticSearch

⎯ ElasticSearch provides out of the box :

⎯ NoSQL JSON document storage

⎯ Built-in scaling and clustering

⎯ Separate nodes for data storage & query execution

⎯ Powerful query sub-system

⎯ Apache License

Page 28: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201528

REST APIEXPOSING OURSELVES TO THE OUTSIDE, CLEANLY

FUNCTIONALITIES

⎯ Implemented using Apache CXF

⎯ REST + JSON protocol (no SOAP or other bindings to keep things simple)

⎯ Exposes most of Unomi’s built-in services

⎯ Protected by 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

Page 29: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201529

PRIVACY SERVICEYOU KNOW ME A BIT TOO MUCH ?

FUNCTIONALITIES

⎯ Server and event discovery⎯ Current visitor profile access⎯ Retrieving and setting list of events to may or may not be collected for current profile⎯ Management of anonymous browsing, including anonymous collection activation or anonymizing of previously collected data⎯ Profile deletion

3RD PARTY UIS may be built to give end-users control over their data.

Page 30: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201530

ALGORITHMSDISCOVERING (BAD) HABBITS AND BEHAVIORS

This is not yet implemented in Unomi…

The Context Server can also integrate “algorithms”, meaning that data can be processed/mined to extract additional knowledge

Page 31: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201531

ALGORITHMSOUR IDEAS

RECOMMENDATION ENGINEpropose products based on other

SIMILARITY ENGINE

APACHE MAHOUT INTEGRATION

BIG DATA INTEGRATION

Page 32: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201532

ALGORITHMS, CONTINUEDEVEN 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 OASIS Context Server specification includes them, the potential for re-usability between implementation could be very interesting

Page 33: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201533

CONNECTORSNO MORE INAPPROPRIATE JOKES PLEASE

CUSTOM CONDITIONSmay be used to

perform dynamicdata exchanges upon incoming

events

can performcalls to external

services

EXTERNAL SERVICES

may use Unomi’spublic URLs or

administration URLsto access REST

services (for querying, reporting,

editing, etc)

EXTERNAL SYSTEMS

may push data intoUnomi either

through events

DIRECT ACCESS

to ElasticSearchis also possible

to directlyinterface with

the persistencesystem

CUSTOM ACTIONS

Page 34: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201534

OASIS CONTEXT SERVER STANDARDAN OVERVIEW WITH LOTS OF COMPETITORS

Co-chairs

Serge Huber (myself) Jahia

Thomas SigdestadEnonic

Established technical committee in April 2015

Page 35: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201535

OASIS CONTEXT SERVER STANDARDMEMBER COMPANIES

Page 36: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201536

OASIS CONTEXT SERVER STANDARDGOOOOOOAAAAALLLLLSSSS !

PROVIDE A STANDARD

§ A context server REST API

§ An associated domain model

§ An open source reference

implementation (Apache Unomi)

APPROVED

Make sure that the

standard is based on real

needs of the industry

DESIGNED FOR GREATNESS

Not only CMS-specific, designed

to integrate with as many tools as

possible (CRM, ERP, mobile

applications, …)

Page 37: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201537

OASIS CONTEXT SERVER STANDARDWORK ORGANIZATION AND STUFF DONE

https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cxs

Whole TC meets 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

Page 38: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201538

INCUBATION PROPOSALWHO TO BLAME J

https://wiki.apache.org/incubator/UnomiProposal

ChampionJean-Baptiste Onofré

Talend

MentorBertrand Delacretaz

Adobe

MentorRoman Shaposchnik

Pivotal

MentorChris Mattmann

NASA JPL

Page 39: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201539

CURRENT STATUS & NEXT STEPSTHE FORCE IS STRONG IN THIS ONE

1

2

3

PROPOSAL

to Apache incubator

VOTE

Open right now

ESTABLISH

Incubation project

4

5

6

MOVE CODEBASEFrom Github to Apache

Git repository

GROW COMMUNITY

We need you!

WORK

On first project release

Page 40: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201540

COMMERCIAL APPLICATIONSCOMPLETELY GRATUITOUS PLUG

Build your own ! It’s the beauty of the Apache

License !

First (known) application

Jahia Marketing Factory

Page 41: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201541

TAKING SOME RISKS LIVE

DEMOJAHIA MARKETING FACTORY + UNOMI

AN EXAMPLE APPLICATION

Page 42: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201542

YOUR TURN

HAVE YOU BEEN READING THESE ?

Q & A

Page 43: Apache Unomi In Depth - ApacheCon EU 2015 Session

APACHE UNOMI IN-DEPTH I 2nd October 201543

LEARN MORE

THANK YOU SO MUCH FOR YOUR ATTENTION !

Incubation proposalhttps://wiki.apache.org/incubator/UnomiProposal

Unomi Github repositoryhttps://github.com/Jahia/unomi

Jahia Marketing Factoryhttps://www.jahia.com/products/marketing-factory