Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apache Unomi In Depth - ApacheCon EU 2015 Session

792 views

Published on

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.

Published in: Technology
  • Be the first to comment

Apache Unomi In Depth - ApacheCon EU 2015 Session

  1. 1. APACHE UNOMI IN-DEPTH I 2nd October 20151 APACHE UNOMI IN-DEPTH SERGE HUBER, CTO & Co-founder, shuber@jahia.com
  2. 2. APACHE UNOMI IN-DEPTH I 2nd October 20152 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  3. 3. APACHE UNOMI IN-DEPTH I 2nd October 20153 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  4. 4. APACHE UNOMI IN-DEPTH I 2nd October 20154 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  5. 5. APACHE UNOMI IN-DEPTH I 2nd October 20155 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  6. 6. APACHE UNOMI IN-DEPTH I 2nd October 20156 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  7. 7. APACHE UNOMI IN-DEPTH I 2nd October 20157 INTRODUCING UNOMI YOU KNOW ME ? WHAT IS UNOMI?
  8. 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. 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. 10. APACHE UNOMI IN-DEPTH I 2nd October 201510 SCALING ARCHITECTURE THROWING MORE SERVERS AT THE PROBLEM CONTEXT SERVER CMS Issue trackingCRMSocial
  11. 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. 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. 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. 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
  15. 15. APACHE UNOMI IN-DEPTH I 2nd October 201515 UNOMI SERVICES STUFF THAT ACTUALLY DOES STUFF PROFILES Managesprofilesandpersonas (loading,updating,saving, deleting,merging, …) PRIVACY Managesprivacy (anonymous browsing,event filtering,profile deletion) QUERIES Performs queries againstthe stored data(events,profiles,…) SEGMENTS Managessegments(definitions, loading,saving,scoring) DEFINITIONS Managespropertytypes, conditiontypes,actionstypes, tags andother metadata CLUSTERING Managesthe clusterof context servers
  16. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 31. APACHE UNOMI IN-DEPTH I 2nd October 201531 ALGORITHMS OUR IDEAS RECOMMENDATION ENGINE SIMILARITY ENGINE APACHE MAHOUT INTEGRATION BIGDATA INTEGRATION
  32. 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. 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. 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. 35. APACHE UNOMI IN-DEPTH I 2nd October 201535 OASIS CONTEXT SERVERSTANDARD MEMBER COMPANIES
  36. 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. 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. 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. 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. 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. 41. APACHE UNOMI IN-DEPTH I 2nd October 201541 TAKING SOME RISKS LIVE DEMO JAHIA MARKETING FACTORY + UNOMI AN EXAMPLE APPLICATION
  42. 42. APACHE UNOMI IN-DEPTH I 2nd October 201542 YOUR TURN HAVE YOU BEEN READING THESE ? Q & A
  43. 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

×